From 9c863283ede4a5bf08eb1c0def5528556de2fb94 Mon Sep 17 00:00:00 2001 From: Gregory Montoir Date: Fri, 8 Oct 2004 18:30:14 +0000 Subject: fix bug #1042931. This version of comidemo doesn't have the videos. In this case, SmushPlayer::play() returns immediately without calling init(). Thus, if init() is not called, we shouldn't call release() at all. svn-id: r15475 --- scumm/smush/smush_player.cpp | 7 ++++++- scumm/smush/smush_player.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'scumm/smush') diff --git a/scumm/smush/smush_player.cpp b/scumm/smush/smush_player.cpp index 27dfab07ef..2940cda6b9 100644 --- a/scumm/smush/smush_player.cpp +++ b/scumm/smush/smush_player.cpp @@ -241,6 +241,7 @@ SmushPlayer::SmushPlayer(ScummEngine_v6 *scumm, int speed) { _height = 0; _IACTpos = 0; _soundFrequency = 22050; + _initDone = false; _speed = speed; _insanity = false; _middleAudio = false; @@ -248,7 +249,8 @@ SmushPlayer::SmushPlayer(ScummEngine_v6 *scumm, int speed) { } SmushPlayer::~SmushPlayer() { - release(); + if (_initDone) + release(); } void SmushPlayer::init() { @@ -271,9 +273,12 @@ void SmushPlayer::init() { _smixer = new SmushMixer(_vm->_mixer); g_timer->installTimerProc(&timerCallback, _speed, this); + + _initDone = true; } void SmushPlayer::release() { + _vm->_timer->removeTimerProc(&timerCallback); _vm->_smushVideoShouldFinish = true; diff --git a/scumm/smush/smush_player.h b/scumm/smush/smush_player.h index 4ccb44c84e..b9c0b5c7de 100644 --- a/scumm/smush/smush_player.h +++ b/scumm/smush/smush_player.h @@ -65,6 +65,7 @@ private: bool _storeFrame; int _soundFrequency; bool _alreadyInit; + bool _initDone; int _speed; bool _outputSound; -- cgit v1.2.3