[Scummvm-git-logs] scummvm master -> 203a239ee3dff5d7e671e65805e3e3780681466d

dreammaster dreammaster at scummvm.org
Thu Dec 8 01:09:21 CET 2016


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
203a239ee3 TITANIC: Further AVISurface fixes for reverse movie playback


Commit: 203a239ee3dff5d7e671e65805e3e3780681466d
    https://github.com/scummvm/scummvm/commit/203a239ee3dff5d7e671e65805e3e3780681466d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2016-12-07T19:09:14-05:00

Commit Message:
TITANIC: Further AVISurface fixes for reverse movie playback

Changed paths:
    engines/titanic/support/avi_surface.cpp
    engines/titanic/support/avi_surface.h


diff --git a/engines/titanic/support/avi_surface.cpp b/engines/titanic/support/avi_surface.cpp
index 6240de9..de7b9ab 100644
--- a/engines/titanic/support/avi_surface.cpp
+++ b/engines/titanic/support/avi_surface.cpp
@@ -132,18 +132,21 @@ bool AVISurface::startAtFrame(int frameNumber) {
 	if (frameNumber == -1)
 		// Default to starting frame of first movie range
 		frameNumber = _movieRangeInfo.front()->_startFrame;
-	if (_isReversed && frameNumber == _decoder->getFrameCount())
+	if (_isReversed && frameNumber == (int)_decoder->getFrameCount())
 		--frameNumber;
 
-	// Get the initial frame
-	seekToFrame(frameNumber);
-	renderFrame();
-
 	// Start the playback
 	_decoder->start();
+
+	// Seek to the starting frame
+	seekToFrame(frameNumber);
+
+	// If we're in reverse playback, set the decoder to play in reverse
 	if (_isReversed)
 		_decoder->setRate(-1.0);
 
+	renderFrame();
+
 	return true;
 }
 
@@ -155,12 +158,9 @@ void AVISurface::seekToFrame(uint frameNumber) {
 		_decoder->seekToFrame(frameNumber);
 		_currentFrame = (int)frameNumber;
 	}
-
-	renderFrame();
 }
 
 void AVISurface::setReversed(bool isReversed) {
-	_decoder->setReverse(isReversed);
 	_isReversed = isReversed;
 }
 
@@ -196,8 +196,8 @@ bool AVISurface::handleEvents(CMovieEventList &events) {
 	if (isPlaying()) {
 		if (newFrame != getFrame()) {
 			// The frame has been changed, so move to new position
-			setReversed(info->_isReversed);
 			seekToFrame(newFrame);
+			renderFrame();
 		}
 
 		// Get any events for the given position
diff --git a/engines/titanic/support/avi_surface.h b/engines/titanic/support/avi_surface.h
index 4ee6cc6..216d4f8 100644
--- a/engines/titanic/support/avi_surface.h
+++ b/engines/titanic/support/avi_surface.h
@@ -179,6 +179,11 @@ public:
 	int getFrame() const { return _currentFrame; }
 
 	/**
+	 * Returns true if the surface is playing in reverse
+	 */
+	bool isReversed() const { return _isReversed; }
+
+	/**
 	 * Add a movie event
 	 */
 	bool addEvent(int frameNumber, CGameObject *obj);





More information about the Scummvm-git-logs mailing list