aboutsummaryrefslogtreecommitdiff
path: root/scumm/smush
diff options
context:
space:
mode:
authorNicolas Bacca2005-03-26 13:24:53 +0000
committerNicolas Bacca2005-03-26 13:24:53 +0000
commit5a7c9f7d7483f7f57802f0baf3766a7ea0d752d1 (patch)
treebc798566bfedacf8070059815a2f67dfa7d03b4c /scumm/smush
parent61aab60064882360286d1d00f801e6eeeeb5df8c (diff)
downloadscummvm-rg350-5a7c9f7d7483f7f57802f0baf3766a7ea0d752d1.tar.gz
scummvm-rg350-5a7c9f7d7483f7f57802f0baf3766a7ea0d752d1.tar.bz2
scummvm-rg350-5a7c9f7d7483f7f57802f0baf3766a7ea0d752d1.zip
Tweak WinCE timer re-entry workaround to play Insane sequences
svn-id: r17242
Diffstat (limited to 'scumm/smush')
-rw-r--r--scumm/smush/smush_player.cpp8
-rw-r--r--scumm/smush/smush_player.h2
2 files changed, 9 insertions, 1 deletions
diff --git a/scumm/smush/smush_player.cpp b/scumm/smush/smush_player.cpp
index bf67ee2ed0..e3bd305ea4 100644
--- a/scumm/smush/smush_player.cpp
+++ b/scumm/smush/smush_player.cpp
@@ -220,6 +220,7 @@ void SmushPlayer::timerCallback(void *refCon) {
((SmushPlayer *)refCon)->parseNextFrame();
#ifdef _WIN32_WCE
((SmushPlayer *)refCon)->_inTimer = true;
+ ((SmushPlayer *)refCon)->_inTimerCount++;
#endif
}
@@ -254,6 +255,8 @@ SmushPlayer::SmushPlayer(ScummEngine_v6 *scumm, int speed) {
_skipPalette = false;
#ifdef _WIN32_WCE
_inTimer = false;
+ _inTimerCount = 0;
+ _inTimerCountRedraw = ConfMan.getInt("Smush_force_redraw");
#endif
}
@@ -948,8 +951,10 @@ void SmushPlayer::handleFrame(Chunk &b) {
end_time = _vm->_system->getMillis();
#ifdef _WIN32_WCE
- if (!_inTimer)
+ if (!_inTimer || _inTimerCount == _inTimerCountRedraw) {
updateScreen();
+ _inTimerCount = 0;
+ }
#else
updateScreen();
#endif
@@ -1249,6 +1254,7 @@ void SmushPlayer::play(const char *filename, int32 offset, int32 startFrame) {
_updateNeeded = false;
#ifdef _WIN32_WCE
_inTimer = false;
+ _inTimerCount = 0;
#endif
end_time = _vm->_system->getMillis();
diff --git a/scumm/smush/smush_player.h b/scumm/smush/smush_player.h
index 1b3a656ef1..8cd06a2f44 100644
--- a/scumm/smush/smush_player.h
+++ b/scumm/smush/smush_player.h
@@ -78,6 +78,8 @@ private:
bool _skipPalette;
#ifdef _WIN32_WCE
bool _inTimer;
+ int16 _inTimerCount;
+ int16 _inTimerCountRedraw;
#endif
Common::Mutex _mutex;