Module: wine Branch: master Commit: 5d92931933e16fbe42ad37a32214b73146abbf10 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5d92931933e16fbe42ad37a322...
Author: Alexandre Julliard julliard@winehq.org Date: Thu Dec 24 17:42:19 2009 +0100
user32: Use a standard critical section instead of a syslevel for the USER lock.
---
dlls/user32/user_main.c | 18 +++++++++++------- 1 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/dlls/user32/user_main.c b/dlls/user32/user_main.c index 7868e19..a61a67d 100644 --- a/dlls/user32/user_main.c +++ b/dlls/user32/user_main.c @@ -39,14 +39,14 @@ WINE_DEFAULT_DEBUG_CHANNEL(graphics);
HMODULE user32_module = 0;
-static SYSLEVEL USER_SysLevel; +static CRITICAL_SECTION user_section; static CRITICAL_SECTION_DEBUG critsect_debug = { - 0, 0, &USER_SysLevel.crst, + 0, 0, &user_section, { &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList }, - 0, 0, { (DWORD_PTR)(__FILE__ ": USER_SysLevel") } + 0, 0, { (DWORD_PTR)(__FILE__ ": user_section") } }; -static SYSLEVEL USER_SysLevel = { { &critsect_debug, -1, 0, 0, 0, 0 }, 2 }; +static CRITICAL_SECTION user_section = { &critsect_debug, -1, 0, 0, 0, 0 };
static HPALETTE (WINAPI *pfnGDISelectPalette)( HDC hdc, HPALETTE hpal, WORD bkgnd ); static UINT (WINAPI *pfnGDIRealizePalette)( HDC hdc ); @@ -62,7 +62,7 @@ extern void WDML_NotifyThreadDetach(void); */ void USER_Lock(void) { - _EnterSysLevel( &USER_SysLevel ); + EnterCriticalSection( &user_section ); }
@@ -71,7 +71,7 @@ void USER_Lock(void) */ void USER_Unlock(void) { - _LeaveSysLevel( &USER_SysLevel ); + LeaveCriticalSection( &user_section ); }
@@ -82,7 +82,11 @@ void USER_Unlock(void) */ void USER_CheckNotLock(void) { - _CheckNotSysLevel( &USER_SysLevel ); + if (user_section.OwningThread == ULongToHandle(GetCurrentThreadId()) && user_section.RecursionCount) + { + ERR( "BUG: holding USER lock\n" ); + DebugBreak(); + } }