mirror of
https://github.com/reactos/wine.git
synced 2024-11-25 12:49:45 +00:00
user: Use a winproc callback instead of a message map/unmap in SendMessageTimeoutA.
This commit is contained in:
parent
521ea482aa
commit
396ff0007c
@ -2383,6 +2383,16 @@ LRESULT WINAPI SendMessageTimeoutW( HWND hwnd, UINT msg, WPARAM wparam, LPARAM l
|
||||
return ret;
|
||||
}
|
||||
|
||||
static LRESULT send_inter_thread_callback( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp,
|
||||
LRESULT *result, void *arg )
|
||||
{
|
||||
struct send_message_info *info = arg;
|
||||
info->hwnd = hwnd;
|
||||
info->msg = msg;
|
||||
info->wparam = wp;
|
||||
info->lparam = lp;
|
||||
return send_inter_thread_message( info, result );
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SendMessageTimeoutA (USER32.@)
|
||||
@ -2429,13 +2439,8 @@ LRESULT WINAPI SendMessageTimeoutA( HWND hwnd, UINT msg, WPARAM wparam, LPARAM l
|
||||
/* inter-process message: need to map to Unicode */
|
||||
info.type = MSG_OTHER_PROCESS;
|
||||
if (is_unicode_message( info.msg ))
|
||||
{
|
||||
if (WINPROC_MapMsg32ATo32W( info.hwnd, info.msg, &info.wparam, &info.lparam ) == -1)
|
||||
return 0;
|
||||
ret = send_inter_thread_message( &info, &result );
|
||||
result = WINPROC_UnmapMsg32ATo32W( info.hwnd, info.msg, info.wparam,
|
||||
info.lparam, result, NULL );
|
||||
}
|
||||
ret = WINPROC_CallProcAtoW( send_inter_thread_callback, info.hwnd, info.msg,
|
||||
info.wparam, info.lparam, &result, &info );
|
||||
else ret = send_inter_thread_message( &info, &result );
|
||||
}
|
||||
SPY_ExitMessage( SPY_RESULT_OK, hwnd, msg, result, wparam, lparam );
|
||||
|
@ -688,7 +688,7 @@ inline static BOOL WINPROC_TestLBForStr( HWND hwnd, UINT msg )
|
||||
* the first four bytes are the handle of the icon
|
||||
* when the WM_SETTEXT message has been used to set the icon
|
||||
*/
|
||||
INT WINPROC_MapMsg32ATo32W( HWND hwnd, UINT msg, WPARAM *pwparam, LPARAM *plparam )
|
||||
static INT WINPROC_MapMsg32ATo32W( HWND hwnd, UINT msg, WPARAM *pwparam, LPARAM *plparam )
|
||||
{
|
||||
switch(msg)
|
||||
{
|
||||
@ -859,8 +859,8 @@ INT WINPROC_MapMsg32ATo32W( HWND hwnd, UINT msg, WPARAM *pwparam, LPARAM *plpara
|
||||
*
|
||||
* Unmap a message that was mapped from Ansi to Unicode.
|
||||
*/
|
||||
LRESULT WINPROC_UnmapMsg32ATo32W( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam,
|
||||
LRESULT result, WNDPROC dispatch )
|
||||
static LRESULT WINPROC_UnmapMsg32ATo32W( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam,
|
||||
LRESULT result, WNDPROC dispatch )
|
||||
{
|
||||
switch(msg)
|
||||
{
|
||||
@ -2642,8 +2642,8 @@ void WINPROC_UnmapMsg32WTo16( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam,
|
||||
*
|
||||
* Call a window procedure, translating args from Ansi to Unicode.
|
||||
*/
|
||||
static LRESULT WINPROC_CallProcAtoW( winproc_callback_t callback, HWND hwnd, UINT msg, WPARAM wParam,
|
||||
LPARAM lParam, LRESULT *result, void *arg )
|
||||
LRESULT WINPROC_CallProcAtoW( winproc_callback_t callback, HWND hwnd, UINT msg, WPARAM wParam,
|
||||
LPARAM lParam, LRESULT *result, void *arg )
|
||||
{
|
||||
LRESULT ret;
|
||||
int unmap;
|
||||
|
@ -55,8 +55,9 @@ extern WNDPROC WINPROC_GetProc( WNDPROC proc, BOOL unicode );
|
||||
extern WNDPROC WINPROC_AllocProc( WNDPROC funcA, WNDPROC funcW );
|
||||
extern BOOL WINPROC_IsUnicode( WNDPROC proc, BOOL def_val );
|
||||
|
||||
extern INT WINPROC_MapMsg32ATo32W( HWND hwnd, UINT msg, WPARAM *pwparam,
|
||||
LPARAM *plparam );
|
||||
extern LRESULT WINPROC_CallProcAtoW( winproc_callback_t callback, HWND hwnd, UINT msg,
|
||||
WPARAM wParam, LPARAM lParam, LRESULT *result, void *arg );
|
||||
|
||||
extern INT WINPROC_MapMsg16To32A( HWND hwnd, UINT16 msg16, WPARAM16 wParam16,
|
||||
UINT *pmsg32, WPARAM *pwparam32,
|
||||
LPARAM *plparam );
|
||||
@ -69,9 +70,6 @@ extern INT WINPROC_MapMsg32ATo16( HWND hwnd, UINT msg32,
|
||||
extern INT WINPROC_MapMsg32WTo16( HWND hwnd, UINT msg32,
|
||||
WPARAM wParam32, UINT16 *pmsg16,
|
||||
WPARAM16 *pwparam16, LPARAM *plparam );
|
||||
extern LRESULT WINPROC_UnmapMsg32ATo32W( HWND hwnd, UINT msg, WPARAM wParam,
|
||||
LPARAM lParam, LRESULT result,
|
||||
WNDPROC dispatch );
|
||||
extern LRESULT WINPROC_UnmapMsg16To32A( HWND hwnd, UINT msg, WPARAM wParam,
|
||||
LPARAM lParam, LRESULT result );
|
||||
extern LRESULT WINPROC_UnmapMsg16To32W( HWND hwnd, UINT msg, WPARAM wParam,
|
||||
|
Loading…
Reference in New Issue
Block a user