winecoreaudio.drv: Give a name to the midi and mmdevapi critical sections.

Francois Gouget fgouget at codeweavers.com
Mon Nov 7 10:10:26 CST 2011


---

Also delete the midiInLock critical section when the library is 
unloaded.

 dlls/winecoreaudio.drv/midi.c     |    2 ++
 dlls/winecoreaudio.drv/mmdevdrv.c |   19 ++++++++++++++++---
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/dlls/winecoreaudio.drv/midi.c b/dlls/winecoreaudio.drv/midi.c
index a50fc78..55d04b5 100644
--- a/dlls/winecoreaudio.drv/midi.c
+++ b/dlls/winecoreaudio.drv/midi.c
@@ -126,6 +126,7 @@ LONG CoreAudio_MIDIInit(void)
     if (MIDIIn_NumDevs > 0)
     {
         InitializeCriticalSection(&midiInLock);
+        midiInLock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": midiInLock");
         MIDIInThreadPortName = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, CFSTR("MIDIInThreadPortName.%u"), getpid());
         CreateThread(NULL, 0, MIDIIn_MessageThread, NULL, 0, NULL);
 
@@ -207,6 +208,7 @@ LONG CoreAudio_MIDIRelease(void)
         CFMessagePortSendRequest(messagePort, 1, NULL, 0.0, 0.0, NULL, NULL);
         CFRelease(messagePort);
 
+        midiInLock.DebugInfo->Spare[0] = 0;
         DeleteCriticalSection(&midiInLock);
     }
 
diff --git a/dlls/winecoreaudio.drv/mmdevdrv.c b/dlls/winecoreaudio.drv/mmdevdrv.c
index a35f18c..c6f2382 100644
--- a/dlls/winecoreaudio.drv/mmdevdrv.c
+++ b/dlls/winecoreaudio.drv/mmdevdrv.c
@@ -172,6 +172,13 @@ typedef struct _SessionMgr {
 static HANDLE g_timer_q;
 
 static CRITICAL_SECTION g_sessions_lock;
+static CRITICAL_SECTION_DEBUG g_sessions_lock_debug =
+{
+    0, 0, &g_sessions_lock,
+    { &g_sessions_lock_debug.ProcessLocksList, &g_sessions_lock_debug.ProcessLocksList },
+      0, 0, { (DWORD_PTR)(__FILE__ ": g_sessions_lock") }
+};
+static CRITICAL_SECTION g_sessions_lock = { &g_sessions_lock_debug, -1, 0, 0, 0, 0 };
 static struct list g_sessions = LIST_INIT(g_sessions);
 
 static HRESULT AudioClock_GetPosition_nolock(ACImpl *This, UINT64 *pos,
@@ -231,14 +238,19 @@ static inline SessionMgr *impl_from_IAudioSessionManager2(IAudioSessionManager2
 
 BOOL WINAPI DllMain(HINSTANCE dll, DWORD reason, void *reserved)
 {
-    if(reason == DLL_PROCESS_ATTACH){
+    switch (reason)
+    {
+    case DLL_PROCESS_ATTACH:
         g_timer_q = CreateTimerQueue();
         if(!g_timer_q)
             return FALSE;
+        break;
 
-        InitializeCriticalSection(&g_sessions_lock);
+    case DLL_PROCESS_DETACH:
+        g_sessions_lock.DebugInfo->Spare[0] = 0;
+        DeleteCriticalSection(&g_sessions_lock);
+        break;
     }
-
     return TRUE;
 }
 
@@ -777,6 +789,7 @@ static AudioSession *create_session(const GUID *guid, IMMDevice *device,
     list_add_head(&g_sessions, &ret->entry);
 
     InitializeCriticalSection(&ret->lock);
+    ret->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": AudioSession.lock");
 
     session_init_vols(ret, num_channels);
 
-- 
1.7.7.1



More information about the wine-patches mailing list