Module: wine Branch: master Commit: 686ea70c1853aecc235143862b42e6fb09333ed4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=686ea70c1853aecc235143862b...
Author: Aric Stewart aric@codeweavers.com Date: Thu Jul 10 11:28:56 2008 +0900
coreaudio: Make sure Port_SendToMessageThread is not NULL before calling CFMessagePortSendRequest.
Prevents crashing when closing audio device during playback.
---
dlls/winecoreaudio.drv/audio.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/dlls/winecoreaudio.drv/audio.c b/dlls/winecoreaudio.drv/audio.c index 90d664f..549b69e 100644 --- a/dlls/winecoreaudio.drv/audio.c +++ b/dlls/winecoreaudio.drv/audio.c @@ -349,6 +349,9 @@ static void wodSendNotifyCompletionsMessage(WINE_WAVEOUT* wwo) CFDataRef data; UInt32 buffer;
+ if (!Port_SendToMessageThread) + return; + buffer = (UInt32) wwo->woID;
data = CFDataCreate(kCFAllocatorDefault, (UInt8 *)&buffer, sizeof(buffer)); @@ -368,6 +371,9 @@ static void wodSendNotifyInputCompletionsMessage(WINE_WAVEIN* wwi) CFDataRef data; UInt32 buffer;
+ if (!Port_SendToMessageThread) + return; + buffer = (UInt32) wwi->wiID;
data = CFDataCreate(kCFAllocatorDefault, (UInt8 *)&buffer, sizeof(buffer)); @@ -694,6 +700,9 @@ void CoreAudio_WaveRelease(void) /* Stop CFRunLoop in messageThread */ TRACE("()\n");
+ if (!Port_SendToMessageThread) + return; + CFMessagePortSendRequest(Port_SendToMessageThread, kStopLoopMessage, NULL, 0.0, 0.0, NULL, NULL); CFRelease(Port_SendToMessageThread); Port_SendToMessageThread = NULL;