[WIN32K]
authorJérôme Gardou <jerome.gardou@reactos.org>
Mon, 22 Sep 2014 14:33:06 +0000 (14:33 +0000)
committerJérôme Gardou <jerome.gardou@reactos.org>
Mon, 22 Sep 2014 14:33:06 +0000 (14:33 +0000)
 - Add some debug prints helping diagnosing which GDI objects are locked when they should not be.
 - Plug a region (lock) leak
 - Remove some dead code.

svn path=/trunk/; revision=64226

reactos/win32ss/gdi/ntgdi/gdidebug.h
reactos/win32ss/gdi/ntgdi/region.c
reactos/win32ss/user/ntuser/vis.c

index a513968..048ad9f 100644 (file)
@@ -80,8 +80,11 @@ GdiDbgAssertNoLocks(char * pszFile, ULONG nLine)
     PTHREADINFO pti = (PTHREADINFO)PsGetCurrentThreadWin32Thread();
     if (pti && pti->cExclusiveLocks != 0)
     {
+        ULONG i;
         DbgPrint("(%s:%lu) There are %lu exclusive locks!\n",
                  pszFile, nLine, pti->cExclusiveLocks);
+        for (i = 0; i < (GDIObjTypeTotal + 1); i++)
+            DbgPrint("    Type %u: %u.\n", i, pti->acExclusiveLockCount[i]);
         ASSERT(FALSE);
     }
 }
index b4863b1..4efcc6f 100644 (file)
@@ -3847,10 +3847,6 @@ NtGdiPtInRegion(
 
     RGNOBJAPI_Unlock(prgn);
     return ret;
-
-
-    RGNOBJAPI_Unlock(prgn);
-    return FALSE;
 }
 
 BOOL
index 053a0b0..cd816b5 100644 (file)
@@ -116,6 +116,7 @@ VIS_ComputeVisibleRegion(
                    IntGdiOffsetRgn(ClipRgn, -CurrentWindow->rcWindow.left, -CurrentWindow->rcWindow.top);
                    IntGdiCombineRgn(ClipRgn, ClipRgn, CurrentRgnClip, RGN_AND);
                    IntGdiOffsetRgn(ClipRgn, CurrentWindow->rcWindow.left, CurrentWindow->rcWindow.top);
+                   RGNOBJAPI_Unlock(CurrentRgnClip);
                }
             }
             IntGdiCombineRgn(VisRgn, VisRgn, ClipRgn, RGN_DIFF);