aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xengines/pegasus/movie.cpp11
-rwxr-xr-xengines/pegasus/movie.h2
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);