Improved syslevel handling, store currently held syslevels in thread
database, WIN_CritSection converted to syslevel.
diff --git a/include/syslevel.h b/include/syslevel.h
index e0fa1d7..faeb3ec 100644
--- a/include/syslevel.h
+++ b/include/syslevel.h
@@ -10,6 +10,12 @@
#include "windef.h"
#include "winbase.h"
+typedef struct tagSYSLEVEL
+{
+ CRITICAL_SECTION crst;
+ INT level;
+} SYSLEVEL;
+
extern WORD SYSLEVEL_Win16CurrentTeb;
extern WORD SYSLEVEL_EmergencyTeb;
@@ -18,14 +24,17 @@
VOID WINAPI SYSLEVEL_LeaveWin16Lock(VOID);
VOID SYSLEVEL_ReleaseWin16Lock(VOID);
VOID SYSLEVEL_RestoreWin16Lock(VOID);
+VOID SYSLEVEL_CheckNotLevel( INT level );
-VOID WINAPI GetpWin16Lock(CRITICAL_SECTION **lock);
+VOID WINAPI GetpWin16Lock(SYSLEVEL **lock);
SEGPTR WINAPI GetpWin16Lock16(void);
-
-VOID WINAPI _EnterSysLevel(CRITICAL_SECTION *lock);
-VOID WINAPI _LeaveSysLevel(CRITICAL_SECTION *lock);
DWORD WINAPI _ConfirmWin16Lock(void);
+VOID WINAPI _CreateSysLevel(SYSLEVEL *lock, INT level);
+VOID WINAPI _EnterSysLevel(SYSLEVEL *lock);
+VOID WINAPI _LeaveSysLevel(SYSLEVEL *lock);
+DWORD WINAPI _ConfirmSysLevel(SYSLEVEL *lock);
+
VOID WINAPI ReleaseThunkLock(DWORD *mutex_count);
VOID WINAPI RestoreThunkLock(DWORD mutex_count);