Ken Thomases : winecoreaudio: Remove more mutexes from around Audio Unit calls.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Dec 21 10:36:34 CST 2006


Module: wine
Branch: master
Commit: e24533cb6df59587ed26bfa0e8d40f2735ff2be1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e24533cb6df59587ed26bfa0e8d40f2735ff2be1

Author: Ken Thomases <ken at codeweavers.com>
Date:   Thu Dec 21 03:49:35 2006 -0600

winecoreaudio: Remove more mutexes from around Audio Unit calls.

---

 dlls/winmm/winecoreaudio/audio.c |   21 ++++++---------------
 1 files changed, 6 insertions(+), 15 deletions(-)

diff --git a/dlls/winmm/winecoreaudio/audio.c b/dlls/winmm/winecoreaudio/audio.c
index ae1067a..9acbd06 100644
--- a/dlls/winmm/winecoreaudio/audio.c
+++ b/dlls/winmm/winecoreaudio/audio.c
@@ -798,23 +798,22 @@ static DWORD wodClose(WORD wDevID)
         
         wwo->state = WINE_WS_CLOSED; /* mark the device as closed */
         
+        pthread_mutex_unlock(&wwo->lock);
+
         err = AudioUnitUninitialize(wwo->audioUnit);
         if (err) {
             ERR("AudioUnitUninitialize return %c%c%c%c\n", (char) (err >> 24),
                                                             (char) (err >> 16),
                                                             (char) (err >> 8),
                                                             (char) err);
-            pthread_mutex_unlock(&wwo->lock);
             return MMSYSERR_ERROR; /* FIXME return an error based on the OSStatus */
         }
         
         if ( !AudioUnit_CloseAudioUnit(wwo->audioUnit) )
         {
             ERR("Can't close AudioUnit\n");
-            pthread_mutex_unlock(&wwo->lock);
             return MMSYSERR_ERROR; /* FIXME return an error based on the OSStatus */
         }  
-        pthread_mutex_unlock(&wwo->lock);
         
         ret = wodNotifyClient(wwo, WOM_CLOSE, 0L, 0L);
     }
@@ -1239,13 +1238,9 @@ static DWORD wodGetVolume(WORD wDevID, L
     }    
     
     TRACE("(%u, %p);\n", wDevID, lpdwVol);
-    
-    pthread_mutex_lock(&WOutDev[wDevID].lock);
-    
+
     AudioUnit_GetVolume(WOutDev[wDevID].audioUnit, &left, &right); 
-        
-    pthread_mutex_unlock(&WOutDev[wDevID].lock);
-        
+
     *lpdwVol = ((WORD) left * 0xFFFFl) + (((WORD) right * 0xFFFFl) << 16);
     
     return MMSYSERR_NOERROR;
@@ -1269,13 +1264,9 @@ static DWORD wodSetVolume(WORD wDevID, D
     right = HIWORD(dwParam) / 65535.0f;
     
     TRACE("(%u, %08x);\n", wDevID, dwParam);
-    
-    pthread_mutex_lock(&WOutDev[wDevID].lock);
-    
+
     AudioUnit_SetVolume(WOutDev[wDevID].audioUnit, left, right); 
-        
-    pthread_mutex_unlock(&WOutDev[wDevID].lock);
-    
+
     return MMSYSERR_NOERROR;
 }
 




More information about the wine-cvs mailing list