forked from MoonsideGames/FAudioGMS
fix bug with SetLoop while Playing
parent
3568028dc3
commit
1d3c0dcbc8
|
@ -342,7 +342,14 @@ static void FAudioGMS_INTERNAL_OnBufferEndCallback(
|
|||
|
||||
if (instance->isStatic)
|
||||
{
|
||||
FAudioGMS_INTERNAL_SoundInstance_Stop(instance);
|
||||
FAudioVoiceState state;
|
||||
FAudioSourceVoice_GetState(instance->voice.handle, &state, 0);
|
||||
|
||||
/* We don't want to stop if we re-queued sound for SetLoop or something so we check that we're actually done */
|
||||
if (state.BuffersQueued == 0)
|
||||
{
|
||||
FAudioGMS_INTERNAL_SoundInstance_Stop(instance);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -810,6 +817,8 @@ static FAudioGMS_SoundInstance *FAudioGMS_INTERNAL_SoundInstance_CreateFromStati
|
|||
instance->isStatic = 1;
|
||||
instance->soundData.staticSound = staticSound;
|
||||
|
||||
instance->playLength = instance->soundData.staticSound->buffer.PlayLength;
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
|
@ -1057,6 +1066,8 @@ double FAudioGMS_StreamingSound_LoadOGG(char *filePath)
|
|||
instance->soundData.streamingSound.mostRecentBufferOffset = 0;
|
||||
instance->soundData.streamingSound.isFinalBuffer = 0;
|
||||
|
||||
instance->playLength = stb_vorbis_stream_length_in_samples(fileHandle);
|
||||
|
||||
FAudioGMS_INTERNAL_SoundInstance_AddBuffer(instance);
|
||||
|
||||
return instance->id;
|
||||
|
@ -1133,11 +1144,12 @@ static void FAudioGMS_INTERNAL_SoundInstance_Play(FAudioGMS_SoundInstance *insta
|
|||
|
||||
if (instance->soundState == SoundState_Paused)
|
||||
{
|
||||
FAudioSourceVoice_FlushSourceBuffers(instance->voice.handle);
|
||||
|
||||
instance->soundData.staticSound->buffer.PlayBegin =
|
||||
instance->voice.handle->src.curBufferOffset;
|
||||
instance->soundData.staticSound->buffer.PlayLength = instance->playLength;
|
||||
|
||||
FAudioSourceVoice_Stop(instance->voice.handle, 0, 0);
|
||||
FAudioSourceVoice_FlushSourceBuffers(instance->voice.handle);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue