Commit 3b840235 authored by David Reid's avatar David Reid

Resource Manager: Fix a looping bug.

This is happening because the data buffer is incorrectly being reported
as busy (still loading) which is used to indicate to the engine that no
data is available and therefore nothing can be played.
parent 18fd90c7
...@@ -73,17 +73,18 @@ int main(int argc, char** argv) ...@@ -73,17 +73,18 @@ int main(int argc, char** argv)
/*ma_sound_set_volume(&sound, 0.25f);*/ /*ma_sound_set_volume(&sound, 0.25f);*/
//ma_sound_set_pitch(&sound, 2.0f); //ma_sound_set_pitch(&sound, 2.0f);
ma_sound_set_pan(&sound, 0.0f); ma_sound_set_pan(&sound, 0.0f);
ma_sound_set_looping(&sound, MA_TRUE); //ma_sound_set_looping(&sound, MA_TRUE);
//ma_sound_seek_to_pcm_frame(&sound, 6000000); //ma_sound_seek_to_pcm_frame(&sound, 6000000);
//ma_sound_set_start_delay(&sound, 1110); //ma_sound_set_start_delay(&sound, 1110);
ma_sound_set_volume(&sound, 0.5f); ma_sound_set_volume(&sound, 0.0f);
//ma_sound_set_fade_point_in_milliseconds(&sound, 0, 0, 1, 0, 2000); //ma_sound_set_fade_point_in_milliseconds(&sound, 0, 0, 1, 0, 2000);
//ma_sound_set_fade_point_auto_reset(&sound, 0, MA_FALSE); /* Enable fading around loop transitions. */ //ma_sound_set_fade_point_auto_reset(&sound, 0, MA_FALSE); /* Enable fading around loop transitions. */
//ma_sound_set_fade_point_auto_reset(&sound, 1, MA_FALSE); //ma_sound_set_fade_point_auto_reset(&sound, 1, MA_FALSE);
ma_sound_set_stop_delay(&sound, 1000); ma_sound_set_stop_delay(&sound, 1000);
ma_sound_start(&sound); ma_sound_start(&sound);
ma_sleep(1000); //ma_sleep(1000);
ma_sound_set_looping(&sound2, MA_TRUE);
ma_sound_set_volume(&sound2, 0.5f); ma_sound_set_volume(&sound2, 0.5f);
ma_sound_start(&sound2); ma_sound_start(&sound2);
......
...@@ -2129,6 +2129,12 @@ static ma_bool32 ma_resource_manager_data_buffer_is_busy(ma_resource_manager_dat ...@@ -2129,6 +2129,12 @@ static ma_bool32 ma_resource_manager_data_buffer_is_busy(ma_resource_manager_dat
*/ */
if (pDataBuffer->pNode->data.type == ma_resource_manager_data_buffer_encoding_decoded) { if (pDataBuffer->pNode->data.type == ma_resource_manager_data_buffer_encoding_decoded) {
ma_uint64 availableFrames; ma_uint64 availableFrames;
/* If the sound has been fully loaded then we'll never be busy. */
if (pDataBuffer->pNode->data.decoded.decodedFrameCount == pDataBuffer->pNode->data.decoded.frameCount) {
return MA_FALSE; /* The sound is fully loaded. The buffer will never be busy. */
}
if (ma_resource_manager_data_buffer_get_available_frames(pDataBuffer, &availableFrames) == MA_SUCCESS) { if (ma_resource_manager_data_buffer_get_available_frames(pDataBuffer, &availableFrames) == MA_SUCCESS) {
return availableFrames < requiredFrameCount; return availableFrames < requiredFrameCount;
} }
......
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