diff options
Diffstat (limited to 'engines/titanic/support/movie.cpp')
-rw-r--r-- | engines/titanic/support/movie.cpp | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/engines/titanic/support/movie.cpp b/engines/titanic/support/movie.cpp index 50a55c8218..e863185f84 100644 --- a/engines/titanic/support/movie.cpp +++ b/engines/titanic/support/movie.cpp @@ -133,22 +133,14 @@ void OSMovie::playCutscene(const Rect &drawRect, uint startFrame, uint endFrame) drawRect.top + (heightLess ? CLIP_HEIGHT_REDUCED : CLIP_HEIGHT) ); - uint timePerFrame = (uint)(1000.0 / _aviSurface._frameRate); + // Set a new event target whilst the clip plays, so standard scene drawing isn't called + CEventTarget eventTarget; + g_vm->_events->addTarget(&eventTarget); - for (; startFrame < endFrame; ++startFrame) { - // Set the frame - _aviSurface.setFrame(startFrame); + _aviSurface.setFrame(startFrame); + _aviSurface.playCutscene(r, startFrame, endFrame); - // TODO: See if we need to do anything further here. The original had a bunch - // of calls and using of the _movieSurface; perhaps to allow scaling down - // videos to half-size - if (widthLess || heightLess) - warning("Not properly reducing clip size: %d %d", r.width(), r.height()); - - // Wait for the next frame, unless the user interrupts the clip - if (g_vm->_events->waitForPress(timePerFrame)) - break; - } + g_vm->_events->removeTarget(); } void OSMovie::stop() { |