Maarten Lankhorst : dsound: Use TIME_KILL_SYNCHRONOUS on sound timer.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Jun 14 07:47:02 CDT 2007


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

Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date:   Wed Jun 13 14:12:07 2007 +0200

dsound: Use TIME_KILL_SYNCHRONOUS on sound timer.

---

 dlls/dsound/dsound.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/dlls/dsound/dsound.c b/dlls/dsound/dsound.c
index 2a72027..9680930 100644
--- a/dlls/dsound/dsound.c
+++ b/dlls/dsound/dsound.c
@@ -1249,10 +1249,8 @@ ULONG DirectSoundDevice_Release(DirectSoundDevice * device)
         int i;
         timeKillEvent(device->timerID);
         timeEndPeriod(DS_TIME_RES);
-        /* wait for timer to expire */
-        Sleep(DS_TIME_RES+1);
 
-        /* The sleep above should have allowed the timer process to expire
+        /* The kill event should have allowed the timer process to expire
          * but try to grab the lock just in case. Can't hold lock because
          * IDirectSoundBufferImpl_Destroy also grabs the lock */
         RtlAcquireResourceShared(&(device->buffer_list_lock), TRUE);
@@ -1521,7 +1519,7 @@ HRESULT DirectSoundDevice_Initialize(DirectSoundDevice ** ppDevice, LPCGUID lpcG
         DSOUND_renderer[device->drvdesc.dnDevNode] = device;
         timeBeginPeriod(DS_TIME_RES);
         DSOUND_renderer[device->drvdesc.dnDevNode]->timerID = timeSetEvent(DS_TIME_DEL, DS_TIME_RES, DSOUND_timer,
-            (DWORD_PTR)DSOUND_renderer[device->drvdesc.dnDevNode], TIME_PERIODIC | TIME_CALLBACK_FUNCTION);
+            (DWORD_PTR)DSOUND_renderer[device->drvdesc.dnDevNode], TIME_PERIODIC | TIME_CALLBACK_FUNCTION | TIME_KILL_SYNCHRONOUS);
     } else {
         WARN("DSOUND_PrimaryCreate failed\n");
     }




More information about the wine-cvs mailing list