From 3a6ab460dd7203efce4623cf99eef129cb69a1c5 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Mon, 21 Mar 2005 00:55:16 +0000 Subject: [PATCH] - Move WINDOWOBJECT_NEED_INTERNALPAINT flag handling to NtGdiBeginPaint. - Fix IntGetPaintMessage to not return TRUE when no message was returned. - IntIsWindowDirty shouldn't check for the WINDOWOBJECT_NEED_NCPAINT flag (at least not now). svn path=/trunk/; revision=14246 --- reactos/subsys/win32k/ntuser/painting.c | 41 +++++++------------------ 1 file changed, 11 insertions(+), 30 deletions(-) diff --git a/reactos/subsys/win32k/ntuser/painting.c b/reactos/subsys/win32k/ntuser/painting.c index dece285b320..c53abec9598 100644 --- a/reactos/subsys/win32k/ntuser/painting.c +++ b/reactos/subsys/win32k/ntuser/painting.c @@ -144,16 +144,6 @@ IntPaintWindows(PWINDOW_OBJECT Window, ULONG Flags) Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT) { IntSendMessage(hWnd, WM_PAINT, 0, 0); - IntLockWindowUpdate(Window); - if (Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT) - { - Window->Flags &= ~WINDOWOBJECT_NEED_INTERNALPAINT; - if (Window->UpdateRegion == NULL) - { - MsqDecPaintCountQueue(Window->MessageQueue); - } - } - IntUnLockWindowUpdate(Window); } } } @@ -547,8 +537,7 @@ IntIsWindowDirty(PWINDOW_OBJECT Window) { return (Window->Style & WS_VISIBLE) && ((Window->UpdateRegion != NULL) || - (Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT) || - (Window->Flags & WINDOWOBJECT_NEED_NCPAINT)); + (Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT)); } HWND STDCALL @@ -614,6 +603,10 @@ IntGetPaintMessage(HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax, if (!MessageQueue->PaintPosted) return FALSE; + if ((MsgFilterMin != 0 || MsgFilterMax != 0) && + (MsgFilterMin > WM_PAINT || MsgFilterMax < WM_PAINT)) + return FALSE; + if (hWnd) Message->hwnd = IntFindWindowToRepaint(hWnd, PsGetWin32Thread()); else @@ -635,25 +628,10 @@ IntGetPaintMessage(HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax, Window = IntGetWindowObject(Message->hwnd); if (Window != NULL) { - IntLockWindowUpdate(Window); - - if ((MsgFilterMin == 0 && MsgFilterMax == 0) || - (MsgFilterMin <= WM_PAINT && WM_PAINT <= MsgFilterMax)) - { - Message->message = WM_PAINT; - Message->wParam = Message->lParam = 0; - if (Remove && Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT) - { - Window->Flags &= ~WINDOWOBJECT_NEED_INTERNALPAINT; - if (Window->UpdateRegion == NULL) - { - MsqDecPaintCountQueue(Window->MessageQueue); - } - } - } - IntUnLockWindowUpdate(Window); - + Message->message = WM_PAINT; + Message->wParam = Message->lParam = 0; IntReleaseWindowObject(Window); + return TRUE; } @@ -779,8 +757,11 @@ NtUserBeginPaint(HWND hWnd, PAINTSTRUCT* UnsafePs) } else { + if (Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT) + MsqDecPaintCountQueue(Window->MessageQueue); IntGetClientRect(Window, &Ps.rcPaint); } + Window->Flags &= ~WINDOWOBJECT_NEED_INTERNALPAINT; IntUnLockWindowUpdate(Window); if (Window->Flags & WINDOWOBJECT_NEED_ERASEBKGND)