From 1bd0c66715f4229059f2eb586455e68bff0b3128 Mon Sep 17 00:00:00 2001 From: Nicolas Bacca Date: Tue, 21 Dec 2004 00:00:34 +0000 Subject: WinCE workaround to limit issues if the decoding is too slow svn-id: r16220 --- scumm/smush/smush_player.cpp | 14 ++++++++++++++ scumm/smush/smush_player.h | 3 +++ 2 files changed, 17 insertions(+) (limited to 'scumm') diff --git a/scumm/smush/smush_player.cpp b/scumm/smush/smush_player.cpp index 3852ebbb59..3e5e097c0a 100644 --- a/scumm/smush/smush_player.cpp +++ b/scumm/smush/smush_player.cpp @@ -216,6 +216,9 @@ static StringResource *getStrings(const char *file, bool is_encoded) { void SmushPlayer::timerCallback(void *refCon) { ((SmushPlayer *)refCon)->parseNextFrame(); +#ifdef _WIN32_WCE + ((SmushPlayer *)refCon)->_inTimer = true; +#endif } SmushPlayer::SmushPlayer(ScummEngine_v6 *scumm, int speed) { @@ -247,6 +250,9 @@ SmushPlayer::SmushPlayer(ScummEngine_v6 *scumm, int speed) { _insanity = false; _middleAudio = false; _skipPalette = false; +#ifdef _WIN32_WCE + _inTimer = false; +#endif } SmushPlayer::~SmushPlayer() { @@ -931,7 +937,12 @@ void SmushPlayer::handleFrame(Chunk &b) { end_time = _vm->_system->getMillis(); +#ifdef _WIN32_WCE + if (!_inTimer) + updateScreen(); +#else updateScreen(); +#endif _smixer->handleFrame(); debugC(DEBUG_SMUSH, "Smush stats: FRME( %03d ), Limit(%d)", end_time - start_time, _speed / 1000); @@ -1209,6 +1220,9 @@ void SmushPlayer::play(const char *filename, int32 offset, int32 startFrame) { start_time = _vm->_system->getMillis(); _vm->_system->updateScreen(); _updateNeeded = false; +#ifdef _WIN32_WCE + _inTimer = false; +#endif end_time = _vm->_system->getMillis(); diff --git a/scumm/smush/smush_player.h b/scumm/smush/smush_player.h index d0ce75da41..e4a2beac6f 100644 --- a/scumm/smush/smush_player.h +++ b/scumm/smush/smush_player.h @@ -77,6 +77,9 @@ private: bool _insanity; bool _middleAudio; bool _skipPalette; +#ifdef _WIN32_WCE + bool _inTimer; +#endif public: SmushPlayer(ScummEngine_v6 *scumm, int speed); -- cgit v1.2.3