mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-22 00:06:59 +02:00
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.
This commit is contained in:
@@ -73,17 +73,18 @@ int main(int argc, char** argv)
|
||||
/*ma_sound_set_volume(&sound, 0.25f);*/
|
||||
//ma_sound_set_pitch(&sound, 2.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_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_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_stop_delay(&sound, 1000);
|
||||
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_start(&sound2);
|
||||
|
||||
|
||||
@@ -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) {
|
||||
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) {
|
||||
return availableFrames < requiredFrameCount;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user