Module: wine Branch: master Commit: 836776ae4f33fb3d554b8b2d2330eda294297dae URL: http://source.winehq.org/git/wine.git/?a=commit;h=836776ae4f33fb3d554b8b2d23...
Author: Maarten Lankhorst m.b.lankhorst@gmail.com Date: Fri Apr 20 22:10:23 2007 +0200
dsound: Make sure we're holding the lock on Drop And Stop.
---
dlls/dsound/primary.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/dlls/dsound/primary.c b/dlls/dsound/primary.c index 9a3498d..0725bd2 100644 --- a/dlls/dsound/primary.c +++ b/dlls/dsound/primary.c @@ -213,6 +213,8 @@ HRESULT DSOUND_PrimaryDestroy(DirectSoundDevice *device) { TRACE("(%p)\n", device);
+ EnterCriticalSection(&(device->mixlock)); + DSOUND_PrimaryClose(device); if (device->driver) { if (device->hwbuf) { @@ -227,6 +229,7 @@ HRESULT DSOUND_PrimaryDestroy(DirectSoundDevice *device) } HeapFree(GetProcessHeap(),0,device->pwfx); device->pwfx=NULL; + LeaveCriticalSection(&(device->mixlock)); return DS_OK; }
@@ -253,6 +256,7 @@ HRESULT DSOUND_PrimaryStop(DirectSoundDevice *device) HRESULT err = DS_OK; TRACE("(%p)\n", device);
+ EnterCriticalSection(&(device->mixlock)); if (device->hwbuf) { err = IDsDriverBuffer_Stop(device->hwbuf); if (err == DSERR_BUFFERLOST) { @@ -285,6 +289,7 @@ HRESULT DSOUND_PrimaryStop(DirectSoundDevice *device) if (err != DS_OK) WARN("waveOutPause failed\n"); } + LeaveCriticalSection(&(device->mixlock)); return err; }