[Scummvm-cvs-logs] SF.net SVN: scummvm:[42572] scummvm/trunk/engines/gob

drmccoy at users.sourceforge.net drmccoy at users.sourceforge.net
Fri Jul 17 22:03:42 CEST 2009


Revision: 42572
          http://scummvm.svn.sourceforge.net/scummvm/?rev=42572&view=rev
Author:   drmccoy
Date:     2009-07-17 20:03:41 +0000 (Fri, 17 Jul 2009)

Log Message:
-----------
/Finally/ fixing the longstanding flicker bug in Woodruff. I was completely mistaken about its cause, too

Modified Paths:
--------------
    scummvm/trunk/engines/gob/videoplayer.cpp
    scummvm/trunk/engines/gob/videoplayer.h

Modified: scummvm/trunk/engines/gob/videoplayer.cpp
===================================================================
--- scummvm/trunk/engines/gob/videoplayer.cpp	2009-07-17 19:45:42 UTC (rev 42571)
+++ scummvm/trunk/engines/gob/videoplayer.cpp	2009-07-17 20:03:41 UTC (rev 42572)
@@ -325,6 +325,7 @@
 		endFrame = lastFrame;
 	palCmd &= 0x3F;
 
+	int16 realStartFrame = startFrame;
 	if (video.getCurrentFrame() != startFrame) {
 		if (!forceSeek && (video.getFeatures() & Graphics::CoktelVideo::kFeaturesSound))
 			startFrame = video.getCurrentFrame();
@@ -340,7 +341,9 @@
 	bool canceled = false;
 
 	while (startFrame <= lastFrame) {
-		if (doPlay(startFrame, breakKey, palCmd, palStart, palEnd, palFrame, endFrame)) {
+		if (doPlay(startFrame, breakKey,
+					palCmd, palStart, palEnd, palFrame, endFrame, startFrame < realStartFrame)) {
+
 			canceled = true;
 			break;
 		}
@@ -630,7 +633,7 @@
 
 void VideoPlayer::playFrame(int16 frame, int16 breakKey,
 		uint16 palCmd, int16 palStart, int16 palEnd,
-		int16 palFrame, int16 endFrame) {
+		int16 palFrame, int16 endFrame, bool noRetrace) {
 
 	if (!_primaryVideo)
 		return;
@@ -703,7 +706,9 @@
 			_vm->_draw->blitInvalidated();
 		} else
 			_vm->_video->dirtyRectsAdd(state.left, state.top, state.right, state.bottom);
-		_vm->_video->retrace();
+
+		if (!noRetrace)
+			_vm->_video->retrace();
 	}
 
 
@@ -713,9 +718,9 @@
 
 bool VideoPlayer::doPlay(int16 frame, int16 breakKey,
 		uint16 palCmd, int16 palStart, int16 palEnd,
-		int16 palFrame, int16 endFrame) {
+		int16 palFrame, int16 endFrame, bool noRetrace) {
 
-	playFrame(frame, breakKey, palCmd, palStart, palEnd, palFrame, endFrame);
+	playFrame(frame, breakKey, palCmd, palStart, palEnd, palFrame, endFrame, noRetrace);
 
 	_vm->_util->processInput();
 

Modified: scummvm/trunk/engines/gob/videoplayer.h
===================================================================
--- scummvm/trunk/engines/gob/videoplayer.h	2009-07-17 19:45:42 UTC (rev 42571)
+++ scummvm/trunk/engines/gob/videoplayer.h	2009-07-17 20:03:41 UTC (rev 42572)
@@ -70,7 +70,7 @@
 
 	void playFrame(int16 frame, int16 breakKey = kShortKeyEscape,
 			uint16 palCmd = 8, int16 palStart = 0, int16 palEnd = 255,
-			int16 palFrame = -1 , int16 endFrame = -1);
+			int16 palFrame = -1 , int16 endFrame = -1, bool noRetrace = false);
 
 	int slotOpen(const char *videoFile, Type which = kVideoTypeTry);
 	void slotPlay(int slot, int16 frame = -1);
@@ -164,7 +164,7 @@
 	void copyPalette(Graphics::CoktelVideo &video, int16 palStart = -1, int16 palEnd = -1);
 	bool doPlay(int16 frame, int16 breakKey,
 			uint16 palCmd, int16 palStart, int16 palEnd,
-			int16 palFrame, int16 endFrame);
+			int16 palFrame, int16 endFrame, bool noRetrace = false);
 	void evalBgShading(Graphics::CoktelVideo &video);
 };
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list