Commit 5effa71e authored by David Reid's avatar David Reid

Minor refactor.

parent 0a732338
...@@ -8324,21 +8324,22 @@ static void ma_sound_mix_wait(ma_sound* pSound) ...@@ -8324,21 +8324,22 @@ static void ma_sound_mix_wait(ma_sound* pSound)
} }
} }
static void ma_engine_mix_sound_internal(ma_engine* pEngine, ma_sound_group* pGroup, ma_sound* pSound, ma_uint64 frameCount)
static void ma_engine_mix_sound(ma_engine* pEngine, ma_sound_group* pGroup, ma_sound* pSound, ma_uint64 frameCount)
{ {
MA_ASSERT(pEngine != NULL);
MA_ASSERT(pGroup != NULL);
MA_ASSERT(pSound != NULL);
c89atomic_exchange_32(&pSound->isMixing, MA_TRUE); /* This must be done before checking the isPlaying state. */
{
if (pSound->isPlaying) {
ma_result result = MA_SUCCESS; ma_result result = MA_SUCCESS;
ma_uint64 framesProcessed; ma_uint64 framesProcessed;
/* Don't do anything if we're not playing. */
if (pSound->isPlaying == MA_FALSE) {
return;
}
/* If we're marked at the end we need to stop the sound and do nothing. */ /* If we're marked at the end we need to stop the sound and do nothing. */
if (!pSound->atEnd) { if (pSound->atEnd) {
ma_sound_stop_internal(pSound);
return;
}
/* If we're seeking, do so now before reading. */ /* If we're seeking, do so now before reading. */
if (pSound->seekTarget != MA_SEEK_TARGET_NONE) { if (pSound->seekTarget != MA_SEEK_TARGET_NONE) {
pSound->seekTarget = MA_SEEK_TARGET_NONE; pSound->seekTarget = MA_SEEK_TARGET_NONE;
...@@ -8401,11 +8402,17 @@ static void ma_engine_mix_sound(ma_engine* pEngine, ma_sound_group* pGroup, ma_s ...@@ -8401,11 +8402,17 @@ static void ma_engine_mix_sound(ma_engine* pEngine, ma_sound_group* pGroup, ma_s
ma_sound_stop_internal(pSound); ma_sound_stop_internal(pSound);
} }
} }
} else { }
/* The sound is at the end. Make sure it's marked as stopped. */
ma_sound_stop_internal(pSound); static void ma_engine_mix_sound(ma_engine* pEngine, ma_sound_group* pGroup, ma_sound* pSound, ma_uint64 frameCount)
} {
} MA_ASSERT(pEngine != NULL);
MA_ASSERT(pGroup != NULL);
MA_ASSERT(pSound != NULL);
c89atomic_exchange_32(&pSound->isMixing, MA_TRUE); /* This must be done before checking the isPlaying state. */
{
ma_engine_mix_sound_internal(pEngine, pGroup, pSound, frameCount);
} }
c89atomic_exchange_32(&pSound->isMixing, MA_FALSE); c89atomic_exchange_32(&pSound->isMixing, MA_FALSE);
} }
......
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