Allocate DebugInfo field for all critical sections (based on a patch
by Alex Pasadyn). Get rid of the Wine-specific CRITICAL_SECTION_INIT macro.
This commit is contained in:
parent
c2320dbc4a
commit
19b6a49845
|
@ -72,7 +72,15 @@ but 'DI_LOSTFOCUS' and 'DI_UNACQUIRED' exist for a reason.
|
||||||
|
|
||||||
static BYTE DInputKeyState[256]; /* array for 'GetDeviceState' */
|
static BYTE DInputKeyState[256]; /* array for 'GetDeviceState' */
|
||||||
|
|
||||||
static CRITICAL_SECTION keyboard_crit = CRITICAL_SECTION_INIT("dinput_keyboard");
|
static CRITICAL_SECTION keyboard_crit;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &keyboard_crit,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": keyboard_crit") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION keyboard_crit = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
static DWORD keyboard_users;
|
static DWORD keyboard_users;
|
||||||
static HHOOK keyboard_hook;
|
static HHOOK keyboard_hook;
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,15 @@ struct graphics_driver
|
||||||
|
|
||||||
static struct graphics_driver *first_driver;
|
static struct graphics_driver *first_driver;
|
||||||
static struct graphics_driver *display_driver;
|
static struct graphics_driver *display_driver;
|
||||||
static CRITICAL_SECTION driver_section = CRITICAL_SECTION_INIT( "driver_section" );
|
|
||||||
|
static CRITICAL_SECTION driver_section;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &driver_section,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": driver_section") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION driver_section = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* create_driver
|
* create_driver
|
||||||
|
|
|
@ -1274,7 +1274,15 @@ struct ConsoleHandler {
|
||||||
static unsigned int CONSOLE_IgnoreCtrlC = 0; /* FIXME: this should be inherited somehow */
|
static unsigned int CONSOLE_IgnoreCtrlC = 0; /* FIXME: this should be inherited somehow */
|
||||||
static struct ConsoleHandler CONSOLE_DefaultConsoleHandler = {CONSOLE_DefaultHandler, NULL};
|
static struct ConsoleHandler CONSOLE_DefaultConsoleHandler = {CONSOLE_DefaultHandler, NULL};
|
||||||
static struct ConsoleHandler* CONSOLE_Handlers = &CONSOLE_DefaultConsoleHandler;
|
static struct ConsoleHandler* CONSOLE_Handlers = &CONSOLE_DefaultConsoleHandler;
|
||||||
static CRITICAL_SECTION CONSOLE_CritSect = CRITICAL_SECTION_INIT("console_ctrl_section");
|
|
||||||
|
static CRITICAL_SECTION CONSOLE_CritSect;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &CONSOLE_CritSect,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": CONSOLE_CritSect") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION CONSOLE_CritSect = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,14 @@ extern void ENV_CopyStartupInformation(void);
|
||||||
|
|
||||||
extern int main_create_flags;
|
extern int main_create_flags;
|
||||||
|
|
||||||
static CRITICAL_SECTION ldt_section = CRITICAL_SECTION_INIT("ldt_section");
|
static CRITICAL_SECTION ldt_section;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &ldt_section,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": ldt_section") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION ldt_section = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* locking for LDT routines
|
* locking for LDT routines
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "winerror.h"
|
#include "winerror.h"
|
||||||
#include "winternl.h"
|
#include "winternl.h"
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
|
#include "ntdll_misc.h"
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(ntdll);
|
WINE_DEFAULT_DEBUG_CHANNEL(ntdll);
|
||||||
WINE_DECLARE_DEBUG_CHANNEL(relay);
|
WINE_DECLARE_DEBUG_CHANNEL(relay);
|
||||||
|
@ -73,7 +74,19 @@ static inline HANDLE get_semaphore( RTL_CRITICAL_SECTION *crit )
|
||||||
*/
|
*/
|
||||||
NTSTATUS WINAPI RtlInitializeCriticalSection( RTL_CRITICAL_SECTION *crit )
|
NTSTATUS WINAPI RtlInitializeCriticalSection( RTL_CRITICAL_SECTION *crit )
|
||||||
{
|
{
|
||||||
crit->DebugInfo = NULL;
|
crit->DebugInfo = RtlAllocateHeap(ntdll_get_process_heap(), 0, sizeof(CRITICAL_SECTION_DEBUG));
|
||||||
|
if (crit->DebugInfo)
|
||||||
|
{
|
||||||
|
crit->DebugInfo->Type = 0;
|
||||||
|
crit->DebugInfo->CreatorBackTraceIndex = 0;
|
||||||
|
crit->DebugInfo->CriticalSection = crit;
|
||||||
|
crit->DebugInfo->ProcessLocksList.Blink = &(crit->DebugInfo->ProcessLocksList);
|
||||||
|
crit->DebugInfo->ProcessLocksList.Flink = &(crit->DebugInfo->ProcessLocksList);
|
||||||
|
crit->DebugInfo->EntryCount = 0;
|
||||||
|
crit->DebugInfo->ContentionCount = 0;
|
||||||
|
crit->DebugInfo->Spare[0] = 0;
|
||||||
|
crit->DebugInfo->Spare[1] = 0;
|
||||||
|
}
|
||||||
crit->LockCount = -1;
|
crit->LockCount = -1;
|
||||||
crit->RecursionCount = 0;
|
crit->RecursionCount = 0;
|
||||||
crit->OwningThread = 0;
|
crit->OwningThread = 0;
|
||||||
|
@ -125,6 +138,16 @@ NTSTATUS WINAPI RtlDeleteCriticalSection( RTL_CRITICAL_SECTION *crit )
|
||||||
crit->OwningThread = 0;
|
crit->OwningThread = 0;
|
||||||
if (crit->LockSemaphore) NtClose( crit->LockSemaphore );
|
if (crit->LockSemaphore) NtClose( crit->LockSemaphore );
|
||||||
crit->LockSemaphore = 0;
|
crit->LockSemaphore = 0;
|
||||||
|
if (crit->DebugInfo)
|
||||||
|
{
|
||||||
|
/* only free the ones we made in here */
|
||||||
|
if (!crit->DebugInfo->Spare[1])
|
||||||
|
{
|
||||||
|
|
||||||
|
RtlFreeHeap( ntdll_get_process_heap(), 0, crit->DebugInfo );
|
||||||
|
crit->DebugInfo = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,7 +176,8 @@ NTSTATUS WINAPI RtlpWaitForCriticalSection( RTL_CRITICAL_SECTION *crit )
|
||||||
status = NtWaitForSingleObject( sem, FALSE, &time );
|
status = NtWaitForSingleObject( sem, FALSE, &time );
|
||||||
if ( status == WAIT_TIMEOUT )
|
if ( status == WAIT_TIMEOUT )
|
||||||
{
|
{
|
||||||
const char *name = (char *)crit->DebugInfo;
|
const char *name = NULL;
|
||||||
|
if (crit->DebugInfo) name = (char *)crit->DebugInfo->Spare[1];
|
||||||
if (!name) name = "?";
|
if (!name) name = "?";
|
||||||
ERR( "section %p %s wait timed out in thread %04lx, blocked by %04lx, retrying (60 sec)\n",
|
ERR( "section %p %s wait timed out in thread %04lx, blocked by %04lx, retrying (60 sec)\n",
|
||||||
crit, debugstr_a(name), GetCurrentThreadId(), (DWORD)crit->OwningThread );
|
crit, debugstr_a(name), GetCurrentThreadId(), (DWORD)crit->OwningThread );
|
||||||
|
@ -170,7 +194,7 @@ NTSTATUS WINAPI RtlpWaitForCriticalSection( RTL_CRITICAL_SECTION *crit )
|
||||||
if (status == STATUS_WAIT_0) return STATUS_SUCCESS;
|
if (status == STATUS_WAIT_0) return STATUS_SUCCESS;
|
||||||
|
|
||||||
/* Throw exception only for Wine internal locks */
|
/* Throw exception only for Wine internal locks */
|
||||||
if (!crit->DebugInfo) continue;
|
if ((!crit->DebugInfo) || (!crit->DebugInfo->Spare[1])) continue;
|
||||||
|
|
||||||
rec.ExceptionCode = STATUS_POSSIBLE_DEADLOCK;
|
rec.ExceptionCode = STATUS_POSSIBLE_DEADLOCK;
|
||||||
rec.ExceptionFlags = 0;
|
rec.ExceptionFlags = 0;
|
||||||
|
|
|
@ -64,7 +64,15 @@ static UINT tls_module_count; /* number of modules with TLS directory */
|
||||||
static UINT tls_total_size; /* total size of TLS storage */
|
static UINT tls_total_size; /* total size of TLS storage */
|
||||||
static const IMAGE_TLS_DIRECTORY **tls_dirs; /* array of TLS directories */
|
static const IMAGE_TLS_DIRECTORY **tls_dirs; /* array of TLS directories */
|
||||||
|
|
||||||
static CRITICAL_SECTION loader_section = CRITICAL_SECTION_INIT( "loader_section" );
|
static CRITICAL_SECTION loader_section;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &loader_section,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": loader_section") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION loader_section = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
static WINE_MODREF *cached_modref;
|
static WINE_MODREF *cached_modref;
|
||||||
static WINE_MODREF *current_modref;
|
static WINE_MODREF *current_modref;
|
||||||
|
|
||||||
|
|
|
@ -39,8 +39,14 @@
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(ntdll);
|
WINE_DEFAULT_DEBUG_CHANNEL(ntdll);
|
||||||
|
|
||||||
|
static CRITICAL_SECTION peb_lock;
|
||||||
static RTL_CRITICAL_SECTION peb_lock = CRITICAL_SECTION_INIT("peb_lock");
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &peb_lock,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": peb_lock") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION peb_lock = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
/* CRC polynomial 0xedb88320 */
|
/* CRC polynomial 0xedb88320 */
|
||||||
static const DWORD CRC_table[256] =
|
static const DWORD CRC_table[256] =
|
||||||
|
|
|
@ -95,7 +95,15 @@ static const BYTE VIRTUAL_Win32Flags[16] =
|
||||||
|
|
||||||
|
|
||||||
static FILE_VIEW *VIRTUAL_FirstView;
|
static FILE_VIEW *VIRTUAL_FirstView;
|
||||||
static CRITICAL_SECTION csVirtual = CRITICAL_SECTION_INIT("csVirtual");
|
|
||||||
|
static CRITICAL_SECTION csVirtual;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &csVirtual,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": csVirtual") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION csVirtual = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
#ifdef __i386__
|
#ifdef __i386__
|
||||||
/* These are always the same on an i386, and it will be faster this way */
|
/* These are always the same on an i386, and it will be faster this way */
|
||||||
|
|
|
@ -62,10 +62,16 @@ static void COM_ExternalLockFreeList();
|
||||||
|
|
||||||
const CLSID CLSID_StdGlobalInterfaceTable = { 0x00000323, 0, 0, {0xc0, 0, 0, 0, 0, 0, 0, 0x46} };
|
const CLSID CLSID_StdGlobalInterfaceTable = { 0x00000323, 0, 0, {0xc0, 0, 0, 0, 0, 0, 0, 0x46} };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
APARTMENT MTA, *apts;
|
APARTMENT MTA, *apts;
|
||||||
static CRITICAL_SECTION csApartment = CRITICAL_SECTION_INIT("csApartment");
|
|
||||||
|
static CRITICAL_SECTION csApartment;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &csApartment,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": csApartment") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION csApartment = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This lock count counts the number of times CoInitialize is called. It is
|
* This lock count counts the number of times CoInitialize is called. It is
|
||||||
|
@ -93,9 +99,17 @@ typedef struct tagRegisteredClass
|
||||||
struct tagRegisteredClass* nextClass;
|
struct tagRegisteredClass* nextClass;
|
||||||
} RegisteredClass;
|
} RegisteredClass;
|
||||||
|
|
||||||
static CRITICAL_SECTION csRegisteredClassList = CRITICAL_SECTION_INIT("csRegisteredClassList");
|
|
||||||
static RegisteredClass* firstRegisteredClass = NULL;
|
static RegisteredClass* firstRegisteredClass = NULL;
|
||||||
|
|
||||||
|
static CRITICAL_SECTION csRegisteredClassList;
|
||||||
|
static CRITICAL_SECTION_DEBUG class_cs_debug =
|
||||||
|
{
|
||||||
|
0, 0, &csRegisteredClassList,
|
||||||
|
{ &class_cs_debug.ProcessLocksList, &class_cs_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": csRegisteredClassList") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION csRegisteredClassList = { &class_cs_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* This section contains OpenDllList definitions
|
* This section contains OpenDllList definitions
|
||||||
*
|
*
|
||||||
|
@ -112,9 +126,17 @@ typedef struct tagOpenDll {
|
||||||
struct tagOpenDll *next;
|
struct tagOpenDll *next;
|
||||||
} OpenDll;
|
} OpenDll;
|
||||||
|
|
||||||
static CRITICAL_SECTION csOpenDllList = CRITICAL_SECTION_INIT("csOpenDllList");
|
|
||||||
static OpenDll *openDllList = NULL; /* linked list of open dlls */
|
static OpenDll *openDllList = NULL; /* linked list of open dlls */
|
||||||
|
|
||||||
|
static CRITICAL_SECTION csOpenDllList;
|
||||||
|
static CRITICAL_SECTION_DEBUG dll_cs_debug =
|
||||||
|
{
|
||||||
|
0, 0, &csOpenDllList,
|
||||||
|
{ &dll_cs_debug.ProcessLocksList, &dll_cs_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": csOpenDllList") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION csOpenDllList = { &dll_cs_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
static const char aptWinClass[] = "WINE_OLE32_APT_CLASS";
|
static const char aptWinClass[] = "WINE_OLE32_APT_CLASS";
|
||||||
static LRESULT CALLBACK COM_AptWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
static LRESULT CALLBACK COM_AptWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,14 @@ typedef struct {
|
||||||
_Malloc32 Malloc32 = {&VT_IMalloc32, 0, NULL, 0, 0, NULL, 0};
|
_Malloc32 Malloc32 = {&VT_IMalloc32, 0, NULL, 0, 0, NULL, 0};
|
||||||
|
|
||||||
/* with a spy active all calls from pre to post methods are threadsave */
|
/* with a spy active all calls from pre to post methods are threadsave */
|
||||||
static CRITICAL_SECTION IMalloc32_SpyCS = CRITICAL_SECTION_INIT("IMalloc32_SpyCS");
|
static CRITICAL_SECTION IMalloc32_SpyCS;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &IMalloc32_SpyCS,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": IMalloc32_SpyCS") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION IMalloc32_SpyCS = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
/* resize the old table */
|
/* resize the old table */
|
||||||
static int SetSpyedBlockTableLength ( int NewLength )
|
static int SetSpyedBlockTableLength ( int NewLength )
|
||||||
|
|
|
@ -41,7 +41,15 @@
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(ole);
|
WINE_DEFAULT_DEBUG_CHANNEL(ole);
|
||||||
|
|
||||||
static RpcConnection* conn_cache;
|
static RpcConnection* conn_cache;
|
||||||
static CRITICAL_SECTION conn_cache_cs = CRITICAL_SECTION_INIT("conn_cache_cs");
|
|
||||||
|
static CRITICAL_SECTION conn_cache_cs;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &conn_cache_cs,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": conn_cache_cs") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION conn_cache_cs = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
LPSTR RPCRT4_strndupA(LPSTR src, INT slen)
|
LPSTR RPCRT4_strndupA(LPSTR src, INT slen)
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,13 +55,37 @@ typedef struct _RpcPacket
|
||||||
static RpcServerProtseq* protseqs;
|
static RpcServerProtseq* protseqs;
|
||||||
static RpcServerInterface* ifs;
|
static RpcServerInterface* ifs;
|
||||||
|
|
||||||
static CRITICAL_SECTION server_cs = CRITICAL_SECTION_INIT("RpcServer");
|
static CRITICAL_SECTION server_cs;
|
||||||
static CRITICAL_SECTION listen_cs = CRITICAL_SECTION_INIT("RpcListen");
|
static CRITICAL_SECTION_DEBUG server_cs_debug =
|
||||||
|
{
|
||||||
|
0, 0, &server_cs,
|
||||||
|
{ &server_cs_debug.ProcessLocksList, &server_cs_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": server_cs") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION server_cs = { &server_cs_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
|
static CRITICAL_SECTION listen_cs;
|
||||||
|
static CRITICAL_SECTION_DEBUG listen_cs_debug =
|
||||||
|
{
|
||||||
|
0, 0, &listen_cs,
|
||||||
|
{ &listen_cs_debug.ProcessLocksList, &listen_cs_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": listen_cs") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION listen_cs = { &listen_cs_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
static BOOL std_listen;
|
static BOOL std_listen;
|
||||||
static LONG listen_count = -1;
|
static LONG listen_count = -1;
|
||||||
static HANDLE mgr_event, server_thread;
|
static HANDLE mgr_event, server_thread;
|
||||||
|
|
||||||
static CRITICAL_SECTION spacket_cs = CRITICAL_SECTION_INIT("RpcServerPacket");
|
static CRITICAL_SECTION spacket_cs;
|
||||||
|
static CRITICAL_SECTION_DEBUG spacket_cs_debug =
|
||||||
|
{
|
||||||
|
0, 0, &spacket_cs,
|
||||||
|
{ &spacket_cs_debug.ProcessLocksList, &spacket_cs_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": spacket_cs") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION spacket_cs = { &spacket_cs_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
static RpcPacket* spacket_head;
|
static RpcPacket* spacket_head;
|
||||||
static RpcPacket* spacket_tail;
|
static RpcPacket* spacket_tail;
|
||||||
static HANDLE server_sem;
|
static HANDLE server_sem;
|
||||||
|
|
|
@ -27,7 +27,14 @@
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
||||||
|
|
||||||
static CRITICAL_SECTION SHELL32_ChangenotifyCS = CRITICAL_SECTION_INIT("SHELL32_ChangenotifyCS");
|
static CRITICAL_SECTION SHELL32_ChangenotifyCS;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &SHELL32_ChangenotifyCS,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": SHELL32_ChangenotifyCS") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION SHELL32_ChangenotifyCS = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
/* internal list of notification clients (internal) */
|
/* internal list of notification clients (internal) */
|
||||||
typedef struct _NOTIFICATIONLIST
|
typedef struct _NOTIFICATIONLIST
|
||||||
|
|
|
@ -58,7 +58,15 @@ typedef struct
|
||||||
} SIC_ENTRY, * LPSIC_ENTRY;
|
} SIC_ENTRY, * LPSIC_ENTRY;
|
||||||
|
|
||||||
static HDPA sic_hdpa = 0;
|
static HDPA sic_hdpa = 0;
|
||||||
static CRITICAL_SECTION SHELL32_SicCS = CRITICAL_SECTION_INIT("SHELL32_SicCS");
|
|
||||||
|
static CRITICAL_SECTION SHELL32_SicCS;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &SHELL32_SicCS,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": SHELL32_SicCS") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION SHELL32_SicCS = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* SIC_CompareEntries
|
* SIC_CompareEntries
|
||||||
|
|
|
@ -49,7 +49,14 @@ WINE_DEFAULT_DEBUG_CHANNEL(ddeml);
|
||||||
static WDML_INSTANCE* WDML_InstanceList = NULL;
|
static WDML_INSTANCE* WDML_InstanceList = NULL;
|
||||||
static DWORD WDML_MaxInstanceID = 0; /* OK for present, have to worry about wrap-around later */
|
static DWORD WDML_MaxInstanceID = 0; /* OK for present, have to worry about wrap-around later */
|
||||||
const char WDML_szEventClass[] = "DdeEventClass";
|
const char WDML_szEventClass[] = "DdeEventClass";
|
||||||
CRITICAL_SECTION WDML_CritSect = CRITICAL_SECTION_INIT("WDML_CritSect");
|
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &WDML_CritSect,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": WDML_CritSect") }
|
||||||
|
};
|
||||||
|
CRITICAL_SECTION WDML_CritSect = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
/* ================================================================
|
/* ================================================================
|
||||||
*
|
*
|
||||||
|
|
|
@ -1127,7 +1127,15 @@ struct DDE_pair {
|
||||||
static struct DDE_pair* dde_pairs;
|
static struct DDE_pair* dde_pairs;
|
||||||
static int dde_num_alloc;
|
static int dde_num_alloc;
|
||||||
static int dde_num_used;
|
static int dde_num_used;
|
||||||
static CRITICAL_SECTION dde_crst = CRITICAL_SECTION_INIT("Raw_DDE_CritSect");
|
|
||||||
|
static CRITICAL_SECTION dde_crst;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &dde_crst,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": dde_crst") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION dde_crst = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
static BOOL dde_add_pair(HGLOBAL chm, HGLOBAL shm)
|
static BOOL dde_add_pair(HGLOBAL chm, HGLOBAL shm)
|
||||||
{
|
{
|
||||||
|
|
|
@ -51,7 +51,15 @@ WINE_DEFAULT_DEBUG_CHANNEL(aspi);
|
||||||
#ifdef linux
|
#ifdef linux
|
||||||
|
|
||||||
static ASPI_DEVICE_INFO *ASPI_open_devices = NULL;
|
static ASPI_DEVICE_INFO *ASPI_open_devices = NULL;
|
||||||
static CRITICAL_SECTION ASPI_CritSection = CRITICAL_SECTION_INIT("ASPI_CritSection");
|
|
||||||
|
static CRITICAL_SECTION ASPI_CritSection;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &ASPI_CritSection,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": ASPI_CritSection") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION ASPI_CritSection = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
#endif /* defined(linux) */
|
#endif /* defined(linux) */
|
||||||
|
|
||||||
|
|
|
@ -76,10 +76,18 @@ typedef struct _DOSEVENT {
|
||||||
struct _DOSEVENT *next;
|
struct _DOSEVENT *next;
|
||||||
} DOSEVENT, *LPDOSEVENT;
|
} DOSEVENT, *LPDOSEVENT;
|
||||||
|
|
||||||
static CRITICAL_SECTION qcrit = CRITICAL_SECTION_INIT("DOSVM");
|
|
||||||
static struct _DOSEVENT *pending_event, *current_event;
|
static struct _DOSEVENT *pending_event, *current_event;
|
||||||
static HANDLE event_notifier;
|
static HANDLE event_notifier;
|
||||||
|
|
||||||
|
static CRITICAL_SECTION qcrit;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &qcrit,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": qcrit") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION qcrit = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* DOSVM_HasPendingEvents
|
* DOSVM_HasPendingEvents
|
||||||
|
|
|
@ -131,7 +131,14 @@ static BOOL vga_address_3c0 = TRUE;
|
||||||
* tries to modify VGA state. This is not how real VGA adapters work,
|
* tries to modify VGA state. This is not how real VGA adapters work,
|
||||||
* but it makes timing and correctness issues much easier to deal with.
|
* but it makes timing and correctness issues much easier to deal with.
|
||||||
*/
|
*/
|
||||||
static CRITICAL_SECTION vga_lock = CRITICAL_SECTION_INIT("VGA");
|
static CRITICAL_SECTION vga_lock;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &vga_lock,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": vga_lock") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION vga_lock = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
typedef HRESULT (WINAPI *DirectDrawCreateProc)(LPGUID,LPDIRECTDRAW *,LPUNKNOWN);
|
typedef HRESULT (WINAPI *DirectDrawCreateProc)(LPGUID,LPDIRECTDRAW *,LPUNKNOWN);
|
||||||
static DirectDrawCreateProc pDirectDrawCreate;
|
static DirectDrawCreateProc pDirectDrawCreate;
|
||||||
|
|
|
@ -112,7 +112,14 @@ WINE_DEFAULT_DEBUG_CHANNEL(winsock);
|
||||||
|
|
||||||
|
|
||||||
/* critical section to protect some non-rentrant net function */
|
/* critical section to protect some non-rentrant net function */
|
||||||
CRITICAL_SECTION csWSgetXXXbyYYY = CRITICAL_SECTION_INIT("csWSgetXXXbyYYY");
|
CRITICAL_SECTION csWSgetXXXbyYYY;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &csWSgetXXXbyYYY,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": csWSgetXXXbyYYY") }
|
||||||
|
};
|
||||||
|
CRITICAL_SECTION csWSgetXXXbyYYY = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
/* protoptypes of some functions in socket.c
|
/* protoptypes of some functions in socket.c
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -52,7 +52,14 @@
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(x11drv);
|
WINE_DEFAULT_DEBUG_CHANNEL(x11drv);
|
||||||
|
|
||||||
static CRITICAL_SECTION X11DRV_CritSection = CRITICAL_SECTION_INIT("X11DRV_CritSection");
|
static CRITICAL_SECTION X11DRV_CritSection;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &X11DRV_CritSection,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": X11DRV_CritSection") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION X11DRV_CritSection = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
Screen *screen;
|
Screen *screen;
|
||||||
Visual *visual;
|
Visual *visual;
|
||||||
|
|
|
@ -120,7 +120,14 @@ MAKE_FUNCPTR(XRenderSetPictureClipRectangles)
|
||||||
MAKE_FUNCPTR(XRenderQueryExtension)
|
MAKE_FUNCPTR(XRenderQueryExtension)
|
||||||
#undef MAKE_FUNCPTR
|
#undef MAKE_FUNCPTR
|
||||||
|
|
||||||
static CRITICAL_SECTION xrender_cs = CRITICAL_SECTION_INIT("xrender_cs");
|
static CRITICAL_SECTION xrender_cs;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &xrender_cs,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": xrender_cs") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION xrender_cs = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
|
|
@ -90,7 +90,14 @@ static PROFILE *MRUProfile[N_CACHED_PROFILES]={NULL};
|
||||||
static const WCHAR emptystringW[] = {0};
|
static const WCHAR emptystringW[] = {0};
|
||||||
static const WCHAR wininiW[] = { 'w','i','n','.','i','n','i',0 };
|
static const WCHAR wininiW[] = { 'w','i','n','.','i','n','i',0 };
|
||||||
|
|
||||||
static CRITICAL_SECTION PROFILE_CritSect = CRITICAL_SECTION_INIT("PROFILE_CritSect");
|
static CRITICAL_SECTION PROFILE_CritSect;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &PROFILE_CritSect,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": PROFILE_CritSect") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION PROFILE_CritSect = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
static const char hex[16] = "0123456789ABCDEF";
|
static const char hex[16] = "0123456789ABCDEF";
|
||||||
|
|
||||||
|
|
|
@ -322,7 +322,14 @@ static const struct CharsetBindingInfo charsetbindings[] =
|
||||||
|
|
||||||
static int DefResolution = 0;
|
static int DefResolution = 0;
|
||||||
|
|
||||||
static CRITICAL_SECTION crtsc_fonts_X11 = CRITICAL_SECTION_INIT("crtsc_fonts_X11");
|
static CRITICAL_SECTION crtsc_fonts_X11;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &crtsc_fonts_X11,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": crtsc_fonts_X11") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION crtsc_fonts_X11 = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
static fontResource* fontList = NULL;
|
static fontResource* fontList = NULL;
|
||||||
static fontObject* fontCache = NULL; /* array */
|
static fontObject* fontCache = NULL; /* array */
|
||||||
|
|
|
@ -839,10 +839,6 @@ typedef DWORD (CALLBACK *LPPROGRESS_ROUTINE)(LARGE_INTEGER, LARGE_INTEGER, LARGE
|
||||||
#define FORMAT_MESSAGE_ARGUMENT_ARRAY 0x00002000
|
#define FORMAT_MESSAGE_ARGUMENT_ARRAY 0x00002000
|
||||||
#define FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000FF
|
#define FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000FF
|
||||||
|
|
||||||
#ifdef __WINESRC__
|
|
||||||
#define CRITICAL_SECTION_INIT(name) { (void *)(__FILE__ ": " name), -1, 0, 0, 0, 0 }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
DWORD dwOSVersionInfoSize;
|
DWORD dwOSVersionInfoSize;
|
||||||
DWORD dwMajorVersion;
|
DWORD dwMajorVersion;
|
||||||
|
|
|
@ -66,7 +66,15 @@ static const LOGPEN NullPen = { PS_NULL, { 0, 0 }, 0 };
|
||||||
|
|
||||||
static HGDIOBJ stock_objects[NB_STOCK_OBJECTS];
|
static HGDIOBJ stock_objects[NB_STOCK_OBJECTS];
|
||||||
|
|
||||||
static SYSLEVEL GDI_level = { CRITICAL_SECTION_INIT("GDI_level"), 3 };
|
static SYSLEVEL GDI_level;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &GDI_level.crst,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": GDI_level") }
|
||||||
|
};
|
||||||
|
static SYSLEVEL GDI_level = { { &critsect_debug, -1, 0, 0, 0, 0 }, 3 };
|
||||||
|
|
||||||
static WORD GDI_HeapSel;
|
static WORD GDI_HeapSel;
|
||||||
|
|
||||||
inline static BOOL get_bool(char *buffer)
|
inline static BOOL get_bool(char *buffer)
|
||||||
|
|
|
@ -325,7 +325,15 @@ strong_alias(__pthread_kill_other_threads_np, pthread_kill_other_threads_np);
|
||||||
|
|
||||||
#define MAX_ATFORK 8 /* libc doesn't need that many anyway */
|
#define MAX_ATFORK 8 /* libc doesn't need that many anyway */
|
||||||
|
|
||||||
static CRITICAL_SECTION atfork_section = CRITICAL_SECTION_INIT("atfork_section");
|
static CRITICAL_SECTION atfork_section;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &atfork_section,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": atfork_section") }
|
||||||
|
};
|
||||||
|
static CRITICAL_SECTION atfork_section = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
|
|
||||||
typedef void (*atfork_handler)();
|
typedef void (*atfork_handler)();
|
||||||
static atfork_handler atfork_prepare[MAX_ATFORK];
|
static atfork_handler atfork_prepare[MAX_ATFORK];
|
||||||
static atfork_handler atfork_parent[MAX_ATFORK];
|
static atfork_handler atfork_parent[MAX_ATFORK];
|
||||||
|
|
|
@ -32,7 +32,14 @@
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(win32);
|
WINE_DEFAULT_DEBUG_CHANNEL(win32);
|
||||||
|
|
||||||
static SYSLEVEL Win16Mutex = { CRITICAL_SECTION_INIT("Win16Mutex"), 1 };
|
static SYSLEVEL Win16Mutex;
|
||||||
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
|
{
|
||||||
|
0, 0, &Win16Mutex.crst,
|
||||||
|
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||||
|
0, 0, { 0, (DWORD)(__FILE__ ": Win16Mutex") }
|
||||||
|
};
|
||||||
|
static SYSLEVEL Win16Mutex = { { &critsect_debug, -1, 0, 0, 0, 0 }, 1 };
|
||||||
|
|
||||||
/* Global variable to save current TEB while in 16-bit code */
|
/* Global variable to save current TEB while in 16-bit code */
|
||||||
WORD SYSLEVEL_Win16CurrentTeb = 0;
|
WORD SYSLEVEL_Win16CurrentTeb = 0;
|
||||||
|
|
|
@ -93,7 +93,16 @@ typedef struct tagICONCACHE
|
||||||
} ICONCACHE;
|
} ICONCACHE;
|
||||||
|
|
||||||
static ICONCACHE *IconAnchor = NULL;
|
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;
|
static WORD ICON_HOTSPOT = 0x4242;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,14 @@ typedef struct tagTIMER
|
||||||
|
|
||||||
static TIMER TimersArray[NB_TIMERS];
|
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 };
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
|
|
@ -42,8 +42,14 @@ WINE_DECLARE_DEBUG_CHANNEL(system);
|
||||||
WINE_DECLARE_DEBUG_CHANNEL(win);
|
WINE_DECLARE_DEBUG_CHANNEL(win);
|
||||||
WINE_DECLARE_DEBUG_CHANNEL(win32);
|
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 */
|
/* USER signal proc flags and codes */
|
||||||
/* See UserSignalProc for comments */
|
/* See UserSignalProc for comments */
|
||||||
|
@ -151,6 +157,36 @@ void USER_CheckNotLock(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* 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)
|
* FinalUserInit (USER.400)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -56,37 +56,6 @@ static WORD wDragHeight= 3;
|
||||||
|
|
||||||
static void *user_handles[NB_USER_HANDLES];
|
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
|
* create_window_handle
|
||||||
*
|
*
|
||||||
|
|
|
@ -114,7 +114,15 @@ static LRESULT WINAPI WINPROC_CallProc32WTo16( WNDPROC16 func, HWND hwnd,
|
||||||
static WINDOWPROC winproc_array[MAX_WINPROCS];
|
static WINDOWPROC winproc_array[MAX_WINPROCS];
|
||||||
static WINDOWPROC *winproc_first_free;
|
static WINDOWPROC *winproc_first_free;
|
||||||
static UINT winproc_used;
|
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 */
|
/* allocate a window procedure from the global array */
|
||||||
static WINDOWPROC *alloc_winproc(void)
|
static WINDOWPROC *alloc_winproc(void)
|
||||||
|
|
Loading…
Reference in New Issue