Author: tkreuzer Date: Thu Apr 26 21:48:06 2012 New Revision: 56433
URL: http://svn.reactos.org/svn/reactos?rev=56433&view=rev Log: [WIN32K] - add missing DBG_DECREASE_LOCK_COUNT() when deleting an object that was exclusively locked. Fixes strange hang in comctl32_winetest. The question is: why does changing a variable, which is never checked cause such trouble? - Don't pass the DC's clip object to IntEngCopyBits, when querying a pixel - make acExclusiveLockCount[] 0x20 bytes long, just to be really sure, that (x & 0x1F) does never overflow it.
Modified: trunk/reactos/win32ss/gdi/ntgdi/bitblt.c trunk/reactos/win32ss/gdi/ntgdi/gdiobj.c trunk/reactos/win32ss/user/ntuser/win32.h
Modified: trunk/reactos/win32ss/gdi/ntgdi/bitblt.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/bitblt.c?... ============================================================================== --- trunk/reactos/win32ss/gdi/ntgdi/bitblt.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/ntgdi/bitblt.c [iso-8859-1] Thu Apr 26 21:48:06 2012 @@ -1156,7 +1156,7 @@ /* Call the copy bits function */ bResult = IntEngCopyBits(&psurfDest->SurfObj, &psurfSrc->SurfObj, - pdc->rosdc.CombinedClip, + NULL, &exlo.xlo, &rclDest, &ptlSrc);
Modified: trunk/reactos/win32ss/gdi/ntgdi/gdiobj.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/gdiobj.c?... ============================================================================== --- trunk/reactos/win32ss/gdi/ntgdi/gdiobj.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/ntgdi/gdiobj.c [iso-8859-1] Thu Apr 26 21:48:06 2012 @@ -880,6 +880,7 @@ /* Release the pushlock and reenable APCs */ ExReleasePushLockExclusive(&pobj->pushlock); KeLeaveCriticalRegion(); + DBG_DECREASE_LOCK_COUNT(PsGetCurrentProcessWin32Process(), pobj->hHmgr); } }
Modified: trunk/reactos/win32ss/user/ntuser/win32.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/win32.h... ============================================================================== --- trunk/reactos/win32ss/user/ntuser/win32.h [iso-8859-1] (original) +++ trunk/reactos/win32ss/user/ntuser/win32.h [iso-8859-1] Thu Apr 26 21:48:06 2012 @@ -108,7 +108,7 @@ SINGLE_LIST_ENTRY ReferencesList; ULONG cExclusiveLocks; #if DBG - USHORT acExclusiveLockCount[GDIObjTypeTotal]; + USHORT acExclusiveLockCount[GDIObjTypeTotal + 1]; #endif
} THREADINFO;