Skip to content

Commit d4b4bc5

Browse files
committed
Fix sent_OnStartBuffer being unset if no callbacks are present
1 parent 97d79f0 commit d4b4bc5

1 file changed

Lines changed: 24 additions & 24 deletions

File tree

src/FAudio_internal.c

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@ static void end_buffer(FAudioSourceVoice *voice)
516516
if (voice->src.queued_buffer_count)
517517
voice->src.curBufferOffset = voice->src.queued_buffers[0].buffer.PlayBegin;
518518

519-
if (callback)
519+
if (callback && !internal)
520520
{
521521
FAudio_PlatformUnlockMutex(voice->src.bufferLock);
522522
LOG_MUTEX_UNLOCK(voice->audio, voice->src.bufferLock)
@@ -527,10 +527,10 @@ static void end_buffer(FAudioSourceVoice *voice)
527527
FAudio_PlatformUnlockMutex(voice->audio->sourceLock);
528528
LOG_MUTEX_UNLOCK(voice->audio, voice->audio->sourceLock)
529529

530-
if (!internal && callback->OnBufferEnd)
530+
if (callback->OnBufferEnd)
531531
callback->OnBufferEnd(callback, context);
532532

533-
if (!internal && eos && callback->OnStreamEnd)
533+
if (eos && callback->OnStreamEnd)
534534
callback->OnStreamEnd(callback);
535535

536536
FAudio_PlatformLockMutex(voice->audio->sourceLock);
@@ -541,35 +541,35 @@ static void end_buffer(FAudioSourceVoice *voice)
541541

542542
FAudio_PlatformLockMutex(voice->src.bufferLock);
543543
LOG_MUTEX_LOCK(voice->audio, voice->src.bufferLock)
544+
}
544545

545-
if (voice->src.queued_buffer_count && !voice->src.queued_buffers[0].sent_OnStartBuffer)
546-
{
547-
buffer = &voice->src.queued_buffers[0];
548-
buffer->sent_OnStartBuffer = true;
549-
voice->src.curBufferOffset = buffer->buffer.PlayBegin;
546+
if (voice->src.queued_buffer_count && !voice->src.queued_buffers[0].sent_OnStartBuffer)
547+
{
548+
buffer = &voice->src.queued_buffers[0];
549+
buffer->sent_OnStartBuffer = true;
550+
voice->src.curBufferOffset = buffer->buffer.PlayBegin;
550551

551-
if (voice->src.callback->OnBufferStart && !buffer->internal)
552-
{
553-
FAudio_PlatformUnlockMutex(voice->src.bufferLock);
554-
LOG_MUTEX_UNLOCK(voice->audio, voice->src.bufferLock)
552+
if (callback && callback->OnBufferStart && !buffer->internal)
553+
{
554+
FAudio_PlatformUnlockMutex(voice->src.bufferLock);
555+
LOG_MUTEX_UNLOCK(voice->audio, voice->src.bufferLock)
555556

556-
FAudio_PlatformUnlockMutex(voice->sendLock);
557-
LOG_MUTEX_UNLOCK(voice->audio, voice->sendLock)
557+
FAudio_PlatformUnlockMutex(voice->sendLock);
558+
LOG_MUTEX_UNLOCK(voice->audio, voice->sendLock)
558559

559-
FAudio_PlatformUnlockMutex(voice->audio->sourceLock);
560-
LOG_MUTEX_UNLOCK(voice->audio, voice->audio->sourceLock)
560+
FAudio_PlatformUnlockMutex(voice->audio->sourceLock);
561+
LOG_MUTEX_UNLOCK(voice->audio, voice->audio->sourceLock)
561562

562-
callback->OnBufferStart(callback, buffer->buffer.pContext);
563+
callback->OnBufferStart(callback, buffer->buffer.pContext);
563564

564-
FAudio_PlatformLockMutex(voice->audio->sourceLock);
565-
LOG_MUTEX_LOCK(voice->audio, voice->audio->sourceLock)
565+
FAudio_PlatformLockMutex(voice->audio->sourceLock);
566+
LOG_MUTEX_LOCK(voice->audio, voice->audio->sourceLock)
566567

567-
FAudio_PlatformLockMutex(voice->sendLock);
568-
LOG_MUTEX_LOCK(voice->audio, voice->sendLock)
568+
FAudio_PlatformLockMutex(voice->sendLock);
569+
LOG_MUTEX_LOCK(voice->audio, voice->sendLock)
569570

570-
FAudio_PlatformLockMutex(voice->src.bufferLock);
571-
LOG_MUTEX_LOCK(voice->audio, voice->src.bufferLock)
572-
}
571+
FAudio_PlatformLockMutex(voice->src.bufferLock);
572+
LOG_MUTEX_LOCK(voice->audio, voice->src.bufferLock)
573573
}
574574
}
575575
}

0 commit comments

Comments
 (0)