Module: wine Branch: master Commit: 1081a9b14417a3d4fc7227c8dc515f1ef1cfe7d2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1081a9b14417a3d4fc7227c8dc...
Author: Maarten Lankhorst m.b.lankhorst@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"); }