Module: wine Branch: master Commit: 3543a070ff873f1e9d33cf18942155f94eb2d08f URL: http://source.winehq.org/git/wine.git/?a=commit;h=3543a070ff873f1e9d33cf1894...
Author: Stefan Dösinger stefandoesinger@gmx.at Date: Mon Oct 9 15:18:11 2006 +0200
ddraw: Protect the ddraw list.
---
dlls/ddraw/main.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/dlls/ddraw/main.c b/dlls/ddraw/main.c index 9fbcf35..7afe210 100644 --- a/dlls/ddraw/main.c +++ b/dlls/ddraw/main.c @@ -58,8 +58,19 @@ WINE_DEFAULT_DEBUG_CHANNEL(ddraw); /* The configured default surface */ 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 = +{ + 0, 0, &ddraw_list_cs, + { &ddraw_list_cs_debug.ProcessLocksList, + &ddraw_list_cs_debug.ProcessLocksList }, + 0, 0, { (DWORD_PTR)(__FILE__ ": ddraw_list_cs") } +}; +static CRITICAL_SECTION ddraw_list_cs = { &ddraw_list_cs_debug, -1, 0, 0, 0, 0 }; + /*********************************************************************** * * Helper function for DirectDrawCreate and friends @@ -304,7 +315,9 @@ #undef BLIT_CAPS #undef CKEY_CAPS #undef FX_CAPS
+ EnterCriticalSection(&ddraw_list_cs); list_add_head(&global_ddraw_list, &This->ddraw_list_entry); + LeaveCriticalSection(&ddraw_list_cs);
/* Call QueryInterface to get the pointer to the requested interface. This also initializes * The required refcount @@ -929,5 +942,7 @@ DllMain(HINSTANCE hInstDLL, void remove_ddraw_object(IDirectDrawImpl *ddraw) { + EnterCriticalSection(&ddraw_list_cs); list_remove(&ddraw->ddraw_list_entry); + LeaveCriticalSection(&ddraw_list_cs); }