Merge from HEAD: r14246
- 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).
Modified: branches/ros-branch-0_2_6/reactos/subsys/win32k/ntuser/painting.c

Modified: branches/ros-branch-0_2_6/reactos/subsys/win32k/ntuser/painting.c
--- branches/ros-branch-0_2_6/reactos/subsys/win32k/ntuser/painting.c	2005-03-23 17:20:48 UTC (rev 14287)
+++ branches/ros-branch-0_2_6/reactos/subsys/win32k/ntuser/painting.c	2005-03-23 17:21:36 UTC (rev 14288)
@@ -144,16 +144,6 @@
               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 @@
 {
    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 @@
    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 @@
    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 @@
    }
    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)