diff options
Diffstat (limited to 'engines')
-rwxr-xr-x | engines/pegasus/movie.cpp | 11 | ||||
-rwxr-xr-x | engines/pegasus/movie.h | 2 |
2 files changed, 13 insertions, 0 deletions
diff --git a/engines/pegasus/movie.cpp b/engines/pegasus/movie.cpp index be3819efb3..ec1b033cfd 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 3983a6f942..31b567407f 100755 --- a/engines/pegasus/movie.h +++ b/engines/pegasus/movie.h @@ -64,6 +64,8 @@ public: virtual void moveMovieBoxTo(const tCoordType, const tCoordType); + virtual TimeValue getDuration(const TimeScale = 0) const; + // *** HACK ALERT Video::SeekableVideoDecoder *getMovie() { return _video; } void setVolume(uint16); |