Process only pending expose events during RDW_UPDATENOW, not all the

other X events.
This commit is contained in:
Alexandre Julliard 2005-03-08 19:26:57 +00:00
parent 5beccd01ac
commit cdb2bfe884
1 changed files with 3 additions and 4 deletions

View File

@ -328,6 +328,9 @@ static void update_now( HWND hwnd, UINT rdw_flags )
{ {
HWND prev = 0, child; HWND prev = 0, child;
/* process pending expose events before painting */
MsgWaitForMultipleObjects( 0, NULL, FALSE, 0, QS_PAINT );
/* desktop window never gets WM_PAINT, only WM_ERASEBKGND */ /* desktop window never gets WM_PAINT, only WM_ERASEBKGND */
if (hwnd == GetDesktopWindow()) erase_now( hwnd, rdw_flags | RDW_NOCHILDREN ); if (hwnd == GetDesktopWindow()) erase_now( hwnd, rdw_flags | RDW_NOCHILDREN );
@ -426,10 +429,6 @@ BOOL WINAPI RedrawWindow( HWND hwnd, const RECT *rect, HRGN hrgn, UINT flags )
if (!WIN_IsWindowDrawable( hwnd, !(flags & RDW_FRAME) )) return TRUE; if (!WIN_IsWindowDrawable( hwnd, !(flags & RDW_FRAME) )) return TRUE;
/* process pending events and messages before painting */
if (flags & RDW_UPDATENOW)
MsgWaitForMultipleObjects( 0, NULL, FALSE, 0, QS_ALLINPUT );
if (TRACE_ON(win)) if (TRACE_ON(win))
{ {
if (hrgn) if (hrgn)