Allows Wine internal messages with pointer arguments to be sent asynchronously.
Signed-off-by: Brendan Shanks bshanks@codeweavers.com --- dlls/user32/message.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/message.c b/dlls/user32/message.c index 1336865112..2717d91dbb 100644 --- a/dlls/user32/message.c +++ b/dlls/user32/message.c @@ -2829,6 +2829,9 @@ static int peek_message( MSG *msg, HWND hwnd, UINT first, UINT last, UINT flags, break; case MSG_NOTIFY: info.flags = ISMEX_NOTIFY; + if (!unpack_message( info.msg.hwnd, info.msg.message, &info.msg.wParam, + &info.msg.lParam, &buffer, size )) + continue; break; case MSG_CALLBACK: info.flags = ISMEX_CALLBACK; @@ -3128,7 +3131,7 @@ static BOOL put_message_in_queue( const struct send_message_info *info, size_t * }
memset( &data, 0, sizeof(data) ); - if (info->type == MSG_OTHER_PROCESS) + if (info->type == MSG_OTHER_PROCESS || info->type == MSG_NOTIFY) { *reply_size = pack_message( info->hwnd, info->msg, info->wparam, info->lparam, &data ); if (data.count == -1)
Signed-off-by: Brendan Shanks bshanks@codeweavers.com --- dlls/user32/winpos.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c index f759bd10f9..b92a20df18 100644 --- a/dlls/user32/winpos.c +++ b/dlls/user32/winpos.c @@ -2387,7 +2387,10 @@ BOOL WINAPI SetWindowPos( HWND hwnd, HWND hwndInsertAfter, if (WIN_IsCurrentThread( hwnd )) return USER_SetWindowPos( &winpos, 0, 0 );
- return SendMessageW( winpos.hwnd, WM_WINE_SETWINDOWPOS, 0, (LPARAM)&winpos ); + if (flags & SWP_ASYNCWINDOWPOS) + return SendNotifyMessageW( winpos.hwnd, WM_WINE_SETWINDOWPOS, 0, (LPARAM)&winpos ); + else + return SendMessageW( winpos.hwnd, WM_WINE_SETWINDOWPOS, 0, (LPARAM)&winpos ); }