Module: wine Branch: master Commit: 5307dd20295fd59d448bc84c80da5389ea6a3aca URL: http://source.winehq.org/git/wine.git/?a=commit;h=5307dd20295fd59d448bc84c80...
Author: Stefan Dösinger stefandoesinger@gmx.at Date: Fri May 18 15:31:47 2007 +0200
ddraw: Make the ddraw list lock a global dll lock.
---
dlls/ddraw/ddraw_private.h | 3 +++ dlls/ddraw/main.c | 21 ++++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h index 9845102..5bd1164 100644 --- a/dlls/ddraw/ddraw_private.h +++ b/dlls/ddraw/ddraw_private.h @@ -80,6 +80,9 @@ extern ULONG WINAPI D3D7CB_DestroySwapChain(IWineD3DSwapChain *pSwapChain);
extern ULONG WINAPI D3D7CB_DestroyDepthStencilSurface(IWineD3DSurface *pSurface);
+/* Global critical section */ +extern CRITICAL_SECTION ddraw_cs; + /***************************************************************************** * IDirectDraw implementation structure *****************************************************************************/ diff --git a/dlls/ddraw/main.c b/dlls/ddraw/main.c index 46c383a..963661b 100644 --- a/dlls/ddraw/main.c +++ b/dlls/ddraw/main.c @@ -59,15 +59,14 @@ WINED3DSURFTYPE DefaultSurfaceType = SURFACE_UNKNOWN; /* DDraw list and critical section */ static struct list global_ddraw_list = LIST_INIT(global_ddraw_list);
-static CRITICAL_SECTION ddraw_list_cs; -static CRITICAL_SECTION_DEBUG ddraw_list_cs_debug = +static CRITICAL_SECTION_DEBUG ddraw_cs_debug = { - 0, 0, &ddraw_list_cs, - { &ddraw_list_cs_debug.ProcessLocksList, - &ddraw_list_cs_debug.ProcessLocksList }, - 0, 0, { (DWORD_PTR)(__FILE__ ": ddraw_list_cs") } + 0, 0, &ddraw_cs, + { &ddraw_cs_debug.ProcessLocksList, + &ddraw_cs_debug.ProcessLocksList }, + 0, 0, { (DWORD_PTR)(__FILE__ ": ddraw_cs") } }; -static CRITICAL_SECTION ddraw_list_cs = { &ddraw_list_cs_debug, -1, 0, 0, 0, 0 }; +CRITICAL_SECTION ddraw_cs = { &ddraw_cs_debug, -1, 0, 0, 0, 0 };
/*********************************************************************** * @@ -319,9 +318,9 @@ DDRAW_Create(const GUID *guid,
list_init(&This->surface_list);
- EnterCriticalSection(&ddraw_list_cs); + EnterCriticalSection(&ddraw_cs); list_add_head(&global_ddraw_list, &This->ddraw_list_entry); - LeaveCriticalSection(&ddraw_list_cs); + LeaveCriticalSection(&ddraw_cs);
This->decls = HeapAlloc(GetProcessHeap(), 0, 0); if(!This->decls) @@ -948,7 +947,7 @@ DllMain(HINSTANCE hInstDLL, void remove_ddraw_object(IDirectDrawImpl *ddraw) { - EnterCriticalSection(&ddraw_list_cs); + EnterCriticalSection(&ddraw_cs); list_remove(&ddraw->ddraw_list_entry); - LeaveCriticalSection(&ddraw_list_cs); + LeaveCriticalSection(&ddraw_cs); }