Allocate DebugInfo field for all critical sections (based on a patch
by Alex Pasadyn).
Get rid of the Wine-specific CRITICAL_SECTION_INIT macro.
diff --git a/windows/user.c b/windows/user.c
index 194233e..d108aa4 100644
--- a/windows/user.c
+++ b/windows/user.c
@@ -42,8 +42,14 @@
WINE_DECLARE_DEBUG_CHANNEL(win);
WINE_DECLARE_DEBUG_CHANNEL(win32);
-SYSLEVEL USER_SysLevel = { CRITICAL_SECTION_INIT("USER_SysLevel"), 2 };
-
+static SYSLEVEL USER_SysLevel;
+static CRITICAL_SECTION_DEBUG critsect_debug =
+{
+ 0, 0, &USER_SysLevel.crst,
+ { &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
+ 0, 0, { 0, (DWORD)(__FILE__ ": USER_SysLevel") }
+};
+static SYSLEVEL USER_SysLevel = { { &critsect_debug, -1, 0, 0, 0, 0 }, 2 };
/* USER signal proc flags and codes */
/* See UserSignalProc for comments */
@@ -152,6 +158,36 @@
/***********************************************************************
+ * WIN_SuspendWndsLock
+ *
+ * Suspend the lock on WND structures.
+ * Returns the number of locks suspended
+ * FIXME: should be removed
+ */
+int WIN_SuspendWndsLock( void )
+{
+ int isuspendedLocks = _ConfirmSysLevel( &USER_SysLevel );
+ int count = isuspendedLocks;
+
+ while ( count-- > 0 )
+ _LeaveSysLevel( &USER_SysLevel );
+
+ return isuspendedLocks;
+}
+
+/***********************************************************************
+ * WIN_RestoreWndsLock
+ *
+ * Restore the suspended locks on WND structures
+ * FIXME: should be removed
+ */
+void WIN_RestoreWndsLock( int ipreviousLocks )
+{
+ while ( ipreviousLocks-- > 0 )
+ _EnterSysLevel( &USER_SysLevel );
+}
+
+/***********************************************************************
* FinalUserInit (USER.400)
*/
void WINAPI FinalUserInit16( void )