aboutsummaryrefslogtreecommitdiff
path: root/engines/neverhood/screen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/neverhood/screen.cpp')
-rw-r--r--engines/neverhood/screen.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/engines/neverhood/screen.cpp b/engines/neverhood/screen.cpp
index 372c705b3e..4689d3ba2d 100644
--- a/engines/neverhood/screen.cpp
+++ b/engines/neverhood/screen.cpp
@@ -26,7 +26,7 @@
namespace Neverhood {
Screen::Screen(NeverhoodEngine *vm)
- : _vm(vm), _paletteData(NULL), _paletteChanged(false) {
+ : _vm(vm), _paletteData(NULL), _paletteChanged(false), _smackerDecoder(NULL) {
_ticks = _vm->_system->getMillis();
@@ -48,8 +48,13 @@ void Screen::update() {
}
void Screen::wait() {
- // TODO
- _vm->_system->delayMillis(40);
+ int32 frameDelay = _frameDelay;
+ if (_smackerDecoder && _smackerDecoder->isVideoLoaded() && !_smackerDecoder->endOfVideo())
+ frameDelay = _smackerDecoder->getTimeToNextFrame();
+ int32 waitTicks = frameDelay - (_vm->_system->getMillis() - _ticks);
+ if (waitTicks > 0)
+ _vm->_system->delayMillis(waitTicks);
+ _ticks = _vm->_system->getMillis();
}
void Screen::setFps(int fps) {