audio: Fix stop() not working for looped sound while sound is inactive

Fixes #559

Also fixes #1031 for FMOD
This commit is contained in:
rdb 2020-12-12 17:53:29 +01:00
parent 9f09857397
commit e5eb5f8ed2
2 changed files with 10 additions and 6 deletions

View File

@ -259,6 +259,7 @@ stop() {
}
}
_start_time = 0.0;
_paused = false;
}
@ -827,12 +828,13 @@ set_active(bool active) {
} else {
// ...deactivate the sound.
if (status() == PLAYING) {
PN_stdfloat time = get_time();
stop();
if (get_loop_count() == 0) {
// ...we're pausing a looping sound.
_paused = true;
_start_time = get_time();
_start_time = time;
}
stop();
}
}
}

View File

@ -217,6 +217,8 @@ stop() {
_stream_queued.resize(0);
}
_paused = false;
_manager->stopping_sound(this);
release_sound_data(false);
}
@ -828,13 +830,13 @@ set_active(bool active) {
} else {
// ...deactivate the sound.
if (status()==PLAYING) {
if (_loop_count==0) {
// ...we're pausing a looping sound.
_paused=true;
}
// Store off the current time so we can resume from where we paused.
_start_time = get_time();
stop();
if (_loop_count == 0) {
// ...we're pausing a looping sound.
_paused = true;
}
}
}
}