diff --git a/panda/src/audiotraits/fmodAudioSound.cxx b/panda/src/audiotraits/fmodAudioSound.cxx index e81695969c..260228225a 100644 --- a/panda/src/audiotraits/fmodAudioSound.cxx +++ b/panda/src/audiotraits/fmodAudioSound.cxx @@ -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(); } } } diff --git a/panda/src/audiotraits/openalAudioSound.cxx b/panda/src/audiotraits/openalAudioSound.cxx index 9244b7509f..bb4b9f9ae4 100644 --- a/panda/src/audiotraits/openalAudioSound.cxx +++ b/panda/src/audiotraits/openalAudioSound.cxx @@ -217,6 +217,8 @@ stop() { _stream_queued.resize(0); } + _paused = false; + _manager->stopping_sound(this); release_sound_data(false); } @@ -813,11 +815,11 @@ set_active(bool active) { } else { // ...deactivate the sound. if (status()==PLAYING) { + stop(); if (_loop_count==0) { // ...we're pausing a looping sound. _paused=true; } - stop(); } } }