From c1ed87602ac2d1af940bb372c35b097e686e20c6 Mon Sep 17 00:00:00 2001 From: "punyabrata@webrtc.org" Date: Thu, 1 Dec 2011 17:55:35 +0000 Subject: [PATCH] Adding some error handling functionality in the windows audio core implementation to stop rendering automatically and throw a playout-error callback when RequestPlayoutData fails Review URL: http://webrtc-codereview.appspot.com/300003 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1080 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../main/source/win/audio_device_core_win.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/modules/audio_device/main/source/win/audio_device_core_win.cc b/src/modules/audio_device/main/source/win/audio_device_core_win.cc index 14f7850bbd..f95772a239 100644 --- a/src/modules/audio_device/main/source/win/audio_device_core_win.cc +++ b/src/modules/audio_device/main/source/win/audio_device_core_win.cc @@ -3592,9 +3592,18 @@ DWORD AudioDeviceWindowsCore::DoRenderThread() { // Request data to be played out (#bytes = _playBlockSize*_audioFrameSize) _UnLock(); - WebRtc_UWord32 nSamples = _ptrAudioBuffer->RequestPlayoutData(_playBlockSize); + WebRtc_Word32 nSamples = + _ptrAudioBuffer->RequestPlayoutData(_playBlockSize); _Lock(); + if (nSamples == -1) + { + _UnLock(); + WEBRTC_TRACE(kTraceCritical, kTraceAudioDevice, _id, + "failed to read data from render client"); + goto Exit; + } + // Sanity check to ensure that essential states are not modified during the unlocked period if (_ptrRenderClient == NULL || _ptrClientOut == NULL) {