diff options
author | Torbjörn Andersson | 2007-04-14 14:07:11 +0000 |
---|---|---|
committer | Torbjörn Andersson | 2007-04-14 14:07:11 +0000 |
commit | 4b4d7dec8ef1483c81221027ffb6d3a5c2f8ee9f (patch) | |
tree | 0882b810fab56f933d0d86a9ff0328f04f5e6350 /engines | |
parent | 2d2b3d0ed21ec800a8a87f9fde8d27206a0dc9c7 (diff) | |
download | scummvm-rg350-4b4d7dec8ef1483c81221027ffb6d3a5c2f8ee9f.tar.gz scummvm-rg350-4b4d7dec8ef1483c81221027ffb6d3a5c2f8ee9f.tar.bz2 scummvm-rg350-4b4d7dec8ef1483c81221027ffb6d3a5c2f8ee9f.zip |
I must have accidentally broken frame skipping when I added DXA playback. Made
frame skipping actually skip the updateScreen() call.
svn-id: r26469
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sword1/animation.cpp | 9 | ||||
-rw-r--r-- | engines/sword1/animation.h | 2 | ||||
-rw-r--r-- | engines/sword2/animation.cpp | 19 | ||||
-rw-r--r-- | engines/sword2/animation.h | 4 |
4 files changed, 19 insertions, 15 deletions
diff --git a/engines/sword1/animation.cpp b/engines/sword1/animation.cpp index 84259f572a..5a381e7393 100644 --- a/engines/sword1/animation.cpp +++ b/engines/sword1/animation.cpp @@ -119,11 +119,11 @@ bool MoviePlayer::checkSkipFrame(void) { return true; } -void MoviePlayer::syncFrame(void) { +bool MoviePlayer::syncFrame(void) { _ticks += 83; if (checkSkipFrame()) { warning("Skipped frame %d", _currentFrame); - return; + return false; } if (_bgSoundStream) { while (_snd->isSoundHandleActive(_bgSoundHandle) && (_snd->getSoundElapsedTime(_bgSoundHandle) * 12) / 1000 < _currentFrame) { @@ -140,6 +140,7 @@ void MoviePlayer::syncFrame(void) { _system->delayMillis(10); } } + return true; } /** @@ -197,8 +198,8 @@ void MoviePlayer::play(void) { Common::EventManager *eventMan = _system->getEventManager(); while (!terminated && decodeFrame()) { processFrame(); - syncFrame(); - updateScreen(); + if (syncFrame()) + updateScreen(); _currentFrame++; Common::Event event; while (eventMan->pollEvent(event)) { diff --git a/engines/sword1/animation.h b/engines/sword1/animation.h index 7566df29f2..34f05d0a11 100644 --- a/engines/sword1/animation.h +++ b/engines/sword1/animation.h @@ -90,7 +90,7 @@ protected: virtual bool initOverlays(uint32 id); virtual bool decodeFrame(void) = 0; virtual void processFrame(void) = 0; - virtual void syncFrame(void); + virtual bool syncFrame(void); virtual void updateScreen(void) = 0; }; diff --git a/engines/sword2/animation.cpp b/engines/sword2/animation.cpp index 3afd8b8748..8424e9c768 100644 --- a/engines/sword2/animation.cpp +++ b/engines/sword2/animation.cpp @@ -169,12 +169,12 @@ bool MoviePlayer::checkSkipFrame() { return true; } -void MoviePlayer::syncFrame() { +bool MoviePlayer::syncFrame() { _ticks += 83; if (checkSkipFrame()) { warning("Skipped frame %d", _currentFrame); - return; + return false; } if (_bgSoundStream) { @@ -192,6 +192,8 @@ void MoviePlayer::syncFrame() { _system->delayMillis(10); } } + + return true; } void MoviePlayer::drawFrame() { @@ -403,9 +405,10 @@ void MoviePlayer::play(SequenceTextInfo *textList, uint32 numLines, int32 leadIn _vm->_sound->playMovieSound(leadOut, kLeadOutSound); } - syncFrame(); - drawFrame(); - updateScreen(); + if (syncFrame()) { + drawFrame(); + updateScreen(); + } Common::Event event; @@ -809,13 +812,13 @@ bool MoviePlayerDummy::decodeFrame() { return true; } -void MoviePlayerDummy::syncFrame() { +bool MoviePlayerDummy::syncFrame() { if (_numSpeechLines == 0 || _currentFrame < _firstSpeechFrame) { _ticks = _system->getMillis(); - return; + return false; } - MoviePlayer::syncFrame(); + return MoviePlayer::syncFrame(); } void MoviePlayerDummy::drawFrame() { diff --git a/engines/sword2/animation.h b/engines/sword2/animation.h index 5c1715a08f..4d3660026d 100644 --- a/engines/sword2/animation.h +++ b/engines/sword2/animation.h @@ -106,7 +106,7 @@ protected: virtual void clearFrame(); virtual void updateScreen(); virtual bool decodeFrame() = 0; - virtual void syncFrame(); + virtual bool syncFrame(); virtual void drawFrame(); virtual void drawTextObject(); virtual void undrawTextObject(); @@ -123,7 +123,7 @@ public: class MoviePlayerDummy : public MoviePlayer { protected: bool decodeFrame(); - void syncFrame(); + bool syncFrame(); void drawFrame(); void drawTextObject(); void undrawTextObject(); |