diff options
-rw-r--r-- | engines/access/sound.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/engines/access/sound.cpp b/engines/access/sound.cpp index 61191aac25..95f8367b46 100644 --- a/engines/access/sound.cpp +++ b/engines/access/sound.cpp @@ -50,9 +50,6 @@ void SoundManager::clearSounds() { if (_mixer->isSoundHandleActive(_effectsHandle)) _mixer->stopHandle(_effectsHandle); - if (_queue.size()) - _queue.remove_at(0); - while (_queue.size()) { delete _queue[0]; _queue.remove_at(0); @@ -146,7 +143,7 @@ void SoundManager::playSound(Resource *res, int priority) { if (!_mixer->isSoundHandleActive(_effectsHandle)) _mixer->playStream(Audio::Mixer::kSFXSoundType, &_effectsHandle, _queue[0], -1, _mixer->kMaxChannelVolume, 0, - DisposeAfterUse::YES); + DisposeAfterUse::NO); } void SoundManager::checkSoundQueue() { @@ -155,12 +152,13 @@ void SoundManager::checkSoundQueue() { if (_queue.empty() || _mixer->isSoundHandleActive(_effectsHandle)) return; + delete _queue[0]; _queue.remove_at(0); - if (_queue.size()) + if (_queue.size() && _queue[0]) _mixer->playStream(Audio::Mixer::kSFXSoundType, &_effectsHandle, _queue[0], -1, _mixer->kMaxChannelVolume, 0, - DisposeAfterUse::YES); + DisposeAfterUse::NO); } bool SoundManager::isSFXPlaying() { @@ -181,7 +179,7 @@ void SoundManager::loadSounds(Common::Array<RoomInfo::SoundIdent> &sounds) { void SoundManager::stopSound() { debugC(3, kDebugSound, "stopSound"); - _mixer->stopHandle(Audio::SoundHandle()); + _mixer->stopHandle(_effectsHandle); } void SoundManager::freeSounds() { |