Tweak WinCE timer re-entry workaround to play Insane sequences

svn-id: r17242
This commit is contained in:
Nicolas Bacca 2005-03-26 13:24:53 +00:00
parent 61aab60064
commit 5a7c9f7d74
3 changed files with 15 additions and 1 deletions

View File

@ -728,6 +728,12 @@ void OSystem_WINCE3::update_game_settings() {
if (_isSmartphone)
panel->setVisible(false);
// Set Smush Force Redraw rate for Full Throttle
if (!ConfMan.hasKey("Smush_force_redraw")) {
ConfMan.set("Smush_force_redraw", 30);
ConfMan.flushToDisk();
}
}
get_sample_rate();

View File

@ -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();

View File

@ -78,6 +78,8 @@ private:
bool _skipPalette;
#ifdef _WIN32_WCE
bool _inTimer;
int16 _inTimerCount;
int16 _inTimerCountRedraw;
#endif
Common::Mutex _mutex;