From c95320bb170a01ad4193246213d5c4a01d3b588d Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sat, 16 Jul 2011 20:04:23 +0200 Subject: COMPOSER: Clear audio on new page. --- engines/composer/composer.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'engines/composer/composer.cpp') diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index d2da61f5d6..60b31df77b 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -363,6 +363,8 @@ void ComposerEngine::playWaveForAnim(uint16 id, bool bufferingOnly) { // FIXME: deal with word6 (priority) byte *buffer = (byte *)malloc(stream->size()); stream->read(buffer, stream->size()); + if (!_audioStream) + _audioStream = Audio::makeQueuingAudioStream(22050, false); _audioStream->queueBuffer(buffer, stream->size(), DisposeAfterUse::YES, Audio::FLAG_UNSIGNED); delete stream; if (!_mixer->isSoundHandleActive(_soundHandle)) @@ -534,7 +536,6 @@ ComposerEngine::~ComposerEngine() { for (Common::List::iterator i = _libraries.begin(); i != _libraries.end(); i++) delete i->_archive; - delete _audioStream; delete _rnd; } @@ -567,8 +568,6 @@ Common::Error ComposerEngine::run() { initGraphics(width, height, true); _surface.create(width, height, Graphics::PixelFormat::createFormatCLUT8()); - _audioStream = Audio::makeQueuingAudioStream(22050, false); - loadLibrary(0); uint fps = atoi(getStringFromConfig("Common", "FPS").c_str()); @@ -744,6 +743,9 @@ void ComposerEngine::unloadLibrary(uint id) { } _sprites.clear(); + _mixer->stopAll(); + _audioStream = NULL; + for (uint j = 0; j < _queuedScripts.size(); j++) { _queuedScripts[j]._count = 0; _queuedScripts[j]._scriptId = 0; -- cgit v1.2.3