user32: Don't flush window surfaces while waiting for a sent message reply.
This commit is contained in:
parent
c24f074cd7
commit
b7582525a0
|
@ -3682,8 +3682,8 @@ BOOL WINAPI DECLSPEC_HOTPATCH PeekMessageW( MSG *msg_out, HWND hwnd, UINT first,
|
||||||
|
|
||||||
if (!peek_message( &msg, hwnd, first, last, flags, 0 ))
|
if (!peek_message( &msg, hwnd, first, last, flags, 0 ))
|
||||||
{
|
{
|
||||||
if (flags & PM_NOYIELD) flush_window_surfaces( FALSE );
|
flush_window_surfaces( !(flags & PM_NOYIELD) );
|
||||||
else wow_handlers.wait_message( 0, NULL, 0, 0, 0 );
|
if (!(flags & PM_NOYIELD)) wow_handlers.wait_message( 0, NULL, 0, 0, 0 );
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3739,6 +3739,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetMessageW( MSG *msg, HWND hwnd, UINT first, UINT
|
||||||
|
|
||||||
while (!peek_message( msg, hwnd, first, last, PM_REMOVE | (mask << 16), mask ))
|
while (!peek_message( msg, hwnd, first, last, PM_REMOVE | (mask << 16), mask ))
|
||||||
{
|
{
|
||||||
|
flush_window_surfaces( TRUE );
|
||||||
wow_handlers.wait_message( 1, &server_queue, INFINITE, mask, 0 );
|
wow_handlers.wait_message( 1, &server_queue, INFINITE, mask, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4071,6 +4072,7 @@ DWORD WINAPI MsgWaitForMultipleObjectsEx( DWORD count, CONST HANDLE *pHandles,
|
||||||
for (i = 0; i < count; i++) handles[i] = pHandles[i];
|
for (i = 0; i < count; i++) handles[i] = pHandles[i];
|
||||||
handles[count] = get_server_queue_handle();
|
handles[count] = get_server_queue_handle();
|
||||||
|
|
||||||
|
flush_window_surfaces( TRUE );
|
||||||
return wow_handlers.wait_message( count+1, handles, timeout, mask, flags );
|
return wow_handlers.wait_message( count+1, handles, timeout, mask, flags );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1124,10 +1124,7 @@ static LRESULT WINAPI StaticWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM
|
||||||
|
|
||||||
static DWORD wait_message( DWORD count, CONST HANDLE *handles, DWORD timeout, DWORD mask, DWORD flags )
|
static DWORD wait_message( DWORD count, CONST HANDLE *handles, DWORD timeout, DWORD mask, DWORD flags )
|
||||||
{
|
{
|
||||||
DWORD ret;
|
DWORD ret = USER_Driver->pMsgWaitForMultipleObjectsEx( count, handles, timeout, mask, flags );
|
||||||
|
|
||||||
flush_window_surfaces( TRUE );
|
|
||||||
ret = USER_Driver->pMsgWaitForMultipleObjectsEx( count, handles, timeout, mask, flags );
|
|
||||||
if (ret == WAIT_TIMEOUT && !count && !timeout) NtYieldExecution();
|
if (ret == WAIT_TIMEOUT && !count && !timeout) NtYieldExecution();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue