diff --git a/engines/pegasus/movie.cpp b/engines/pegasus/movie.cpp index be3819efb33f..ec1b033cfdcd 100755 --- a/engines/pegasus/movie.cpp +++ b/engines/pegasus/movie.cpp @@ -177,6 +177,17 @@ void Movie::pause() { TimeBase::pause(); } +TimeValue Movie::getDuration(const TimeScale scale) const { + // Unlike TimeBase::getDuration(), this returns the whole duration of the movie + // The original source has a TODO to make this behave like TimeBase::getDuration(), + // but the problem is that too much code requires this function to behave this way... + + if (_video) + return _video->getDuration() * ((scale == 0) ? getScale() : scale) / 1000; + + return 0; +} + void Movie::checkCallBacks() { TimeBase::checkCallBacks(); diff --git a/engines/pegasus/movie.h b/engines/pegasus/movie.h index 3983a6f94215..31b567407f7d 100755 --- a/engines/pegasus/movie.h +++ b/engines/pegasus/movie.h @@ -64,6 +64,8 @@ class Movie : public Animation, public PixelImage { virtual void moveMovieBoxTo(const tCoordType, const tCoordType); + virtual TimeValue getDuration(const TimeScale = 0) const; + // *** HACK ALERT Video::SeekableVideoDecoder *getMovie() { return _video; } void setVolume(uint16);