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/cursoricon.c b/windows/cursoricon.c
index a43de9f..261a247 100644
--- a/windows/cursoricon.c
+++ b/windows/cursoricon.c
@@ -93,7 +93,16 @@
} ICONCACHE;
static ICONCACHE *IconAnchor = NULL;
-static CRITICAL_SECTION IconCrst = CRITICAL_SECTION_INIT("IconCrst");
+
+static CRITICAL_SECTION IconCrst;
+static CRITICAL_SECTION_DEBUG critsect_debug =
+{
+ 0, 0, &IconCrst,
+ { &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
+ 0, 0, { 0, (DWORD)(__FILE__ ": IconCrst") }
+};
+static CRITICAL_SECTION IconCrst = { &critsect_debug, -1, 0, 0, 0, 0 };
+
static WORD ICON_HOTSPOT = 0x4242;
diff --git a/windows/timer.c b/windows/timer.c
index 234ed29..ede3134 100644
--- a/windows/timer.c
+++ b/windows/timer.c
@@ -50,7 +50,14 @@
static TIMER TimersArray[NB_TIMERS];
-static CRITICAL_SECTION csTimer = CRITICAL_SECTION_INIT("csTimer");
+static CRITICAL_SECTION csTimer;
+static CRITICAL_SECTION_DEBUG critsect_debug =
+{
+ 0, 0, &csTimer,
+ { &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
+ 0, 0, { 0, (DWORD)(__FILE__ ": csTimer") }
+};
+static CRITICAL_SECTION csTimer = { &critsect_debug, -1, 0, 0, 0, 0 };
/***********************************************************************
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 )
diff --git a/windows/win.c b/windows/win.c
index 704d8e2..6abf4a9 100644
--- a/windows/win.c
+++ b/windows/win.c
@@ -56,37 +56,6 @@
static void *user_handles[NB_USER_HANDLES];
-/* thread safeness */
-extern SYSLEVEL USER_SysLevel; /* FIXME */
-
-/***********************************************************************
- * WIN_SuspendWndsLock
- *
- * Suspend the lock on WND structures.
- * Returns the number of locks suspended
- */
-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
- */
-void WIN_RestoreWndsLock( int ipreviousLocks )
-{
- while ( ipreviousLocks-- > 0 )
- _EnterSysLevel( &USER_SysLevel );
-}
-
/***********************************************************************
* create_window_handle
*
diff --git a/windows/winproc.c b/windows/winproc.c
index 87bb690..b446b55 100644
--- a/windows/winproc.c
+++ b/windows/winproc.c
@@ -114,7 +114,15 @@
static WINDOWPROC winproc_array[MAX_WINPROCS];
static WINDOWPROC *winproc_first_free;
static UINT winproc_used;
-static CRITICAL_SECTION winproc_cs = CRITICAL_SECTION_INIT("winproc_cs");
+
+static CRITICAL_SECTION winproc_cs;
+static CRITICAL_SECTION_DEBUG critsect_debug =
+{
+ 0, 0, &winproc_cs,
+ { &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
+ 0, 0, { 0, (DWORD)(__FILE__ ": winproc_cs") }
+};
+static CRITICAL_SECTION winproc_cs = { &critsect_debug, -1, 0, 0, 0, 0 };
/* allocate a window procedure from the global array */
static WINDOWPROC *alloc_winproc(void)