Commit 50229412 authored by Felix Paul Kühne's avatar Felix Paul Kühne

audiounit_ios: merge stability improvements from AUHAL module

parent 1c3973d7
......@@ -336,20 +336,24 @@ static void Pause (audio_output_t *p_aout, bool pause, mtime_t date)
static void Flush(audio_output_t *p_aout, bool wait)
{
struct aout_sys_t * p_sys = p_aout->sys;
struct aout_sys_t *p_sys = p_aout->sys;
int32_t availableBytes;
vlc_mutex_lock(&p_sys->lock);
TPCircularBufferTail(&p_sys->circular_buffer, &availableBytes);
if (wait) {
int32_t availableBytes;
vlc_mutex_lock(&p_sys->lock);
TPCircularBufferTail(&p_sys->circular_buffer, &availableBytes);
while (availableBytes > 0) {
vlc_cond_wait(&p_sys->cond, &p_sys->lock);
TPCircularBufferTail(&p_sys->circular_buffer, &availableBytes);
}
vlc_mutex_unlock(&p_sys->lock);
} else
/* flush circular buffer */
TPCircularBufferClear(&p_aout->sys->circular_buffer);
} else {
/* flush circular buffer if data is left */
if (availableBytes > 0)
TPCircularBufferClear(&p_aout->sys->circular_buffer);
}
vlc_mutex_unlock(&p_sys->lock);
}
static int TimeGet(audio_output_t *p_aout, mtime_t *delay)
......@@ -402,9 +406,11 @@ static OSStatus RenderCallback(vlc_object_t *p_obj,
} else {
int32_t bytesToCopy = __MIN(bytesRequested, availableBytes);
memcpy(targetBuffer, buffer, bytesToCopy);
TPCircularBufferConsume(&p_sys->circular_buffer, bytesToCopy);
ioData->mBuffers[0].mDataByteSize = bytesToCopy;
if (likely(bytesToCopy > 0)) {
memcpy(targetBuffer, buffer, bytesToCopy);
TPCircularBufferConsume(&p_sys->circular_buffer, bytesToCopy);
ioData->mBuffers[0].mDataByteSize = bytesToCopy;
}
}
vlc_cond_signal(&p_sys->cond);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment