From c93c1d1dc30884b2c13bffdbc701efb5401b58b7 Mon Sep 17 00:00:00 2001 From: Dyami Caliri Date: Tue, 22 Jul 2014 11:19:14 -0700 Subject: CoreAudioOutput use timeout when waiting for render thread On Snow Leopard (at least), changing the default audio device while audio is playing can cause CoreAudioOutput to freeze in audioThreadStop(). It seems that the OS stops calling renderCallback when the device changes, so audioThreadStop() waits forever. Change-Id: If7244cc50f12295ff91a979ef50e3bee1273affd Reviewed-by: Andy Nichols --- src/plugins/coreaudio/coreaudiooutput.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/coreaudio/coreaudiooutput.mm b/src/plugins/coreaudio/coreaudiooutput.mm index e5e1c65e5..812d9dfe2 100644 --- a/src/plugins/coreaudio/coreaudiooutput.mm +++ b/src/plugins/coreaudio/coreaudiooutput.mm @@ -698,14 +698,14 @@ void CoreAudioOutput::audioThreadStop() { stopTimers(); if (m_audioThreadState.testAndSetAcquire(Running, Stopped)) - m_threadFinished.wait(&m_mutex); + m_threadFinished.wait(&m_mutex, 500); } void CoreAudioOutput::audioThreadDrain() { stopTimers(); if (m_audioThreadState.testAndSetAcquire(Running, Draining)) - m_threadFinished.wait(&m_mutex); + m_threadFinished.wait(&m_mutex, 500); } void CoreAudioOutput::audioDeviceStop() -- cgit v1.2.3