aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorTorbjörn Andersson2007-04-14 14:07:11 +0000
committerTorbjörn Andersson2007-04-14 14:07:11 +0000
commit4b4d7dec8ef1483c81221027ffb6d3a5c2f8ee9f (patch)
tree0882b810fab56f933d0d86a9ff0328f04f5e6350 /engines
parent2d2b3d0ed21ec800a8a87f9fde8d27206a0dc9c7 (diff)
downloadscummvm-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.cpp9
-rw-r--r--engines/sword1/animation.h2
-rw-r--r--engines/sword2/animation.cpp19
-rw-r--r--engines/sword2/animation.h4
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();