[Scummvm-cvs-logs] SF.net SVN: scummvm:[40063] scummvm/trunk/engines/agos

Kirben at users.sourceforge.net Kirben at users.sourceforge.net
Wed Apr 22 12:19:10 CEST 2009


Revision: 40063
          http://scummvm.svn.sourceforge.net/scummvm/?rev=40063&view=rev
Author:   Kirben
Date:     2009-04-22 10:19:10 +0000 (Wed, 22 Apr 2009)

Log Message:
-----------
Fix crash that occurs when OmniTV video is played completely, in The Feeble Files.

Modified Paths:
--------------
    scummvm/trunk/engines/agos/agos.cpp
    scummvm/trunk/engines/agos/agos.h
    scummvm/trunk/engines/agos/animation.cpp
    scummvm/trunk/engines/agos/event.cpp
    scummvm/trunk/engines/agos/script_ff.cpp

Modified: scummvm/trunk/engines/agos/agos.cpp
===================================================================
--- scummvm/trunk/engines/agos/agos.cpp	2009-04-22 03:46:49 UTC (rev 40062)
+++ scummvm/trunk/engines/agos/agos.cpp	2009-04-22 10:19:10 UTC (rev 40063)
@@ -200,6 +200,7 @@
 	_lastVgaTick = 0;
 
 	_marks = 0;
+	_omniTV = false;
 	_scanFlag = false;
 
 	_scriptVar2 = 0;

Modified: scummvm/trunk/engines/agos/agos.h
===================================================================
--- scummvm/trunk/engines/agos/agos.h	2009-04-22 03:46:49 UTC (rev 40062)
+++ scummvm/trunk/engines/agos/agos.h	2009-04-22 10:19:10 UTC (rev 40063)
@@ -290,6 +290,7 @@
 	uint32 _lastVgaTick;
 
 	uint16 _marks;
+	bool _omniTV;
 	bool _scanFlag;
 
 	bool _scriptVar2;

Modified: scummvm/trunk/engines/agos/animation.cpp
===================================================================
--- scummvm/trunk/engines/agos/animation.cpp	2009-04-22 03:46:49 UTC (rev 40062)
+++ scummvm/trunk/engines/agos/animation.cpp	2009-04-22 10:19:10 UTC (rev 40063)
@@ -324,6 +324,7 @@
 		copyFrameToBuffer(_vm->getBackBuf(), 465, 222, _vm->_screenWidth);
 	} else {
 		closeFile();
+		_vm->_omniTV = false;
 		_vm->_variableArray[254] = 6747;
 	}
 }
@@ -431,11 +432,6 @@
 }
 
 void MoviePlayerSMK::nextFrame() {
-	if (_vm->getBitFlag(42)) {
-		closeFile();
-		return;
-	}
-
 	if (getCurFrame() < getFrameCount()) {
 		decodeNextFrame();
 		copyFrameToBuffer(_vm->getBackBuf(), 465, 222, _vm->_screenWidth);

Modified: scummvm/trunk/engines/agos/event.cpp
===================================================================
--- scummvm/trunk/engines/agos/event.cpp	2009-04-22 03:46:49 UTC (rev 40062)
+++ scummvm/trunk/engines/agos/event.cpp	2009-04-22 10:19:10 UTC (rev 40063)
@@ -583,9 +583,10 @@
 			}
 		}
 
-		if (getGameType() == GType_FF && _moviePlayer) {
+		if (getGameType() == GType_FF && _omniTV) {
 			// Controls Omni TV videos
 			if (getBitFlag(42)) {
+				_omniTV = false;
 				_moviePlayer->stopVideo();
 				delete _moviePlayer;
 				_moviePlayer = NULL;

Modified: scummvm/trunk/engines/agos/script_ff.cpp
===================================================================
--- scummvm/trunk/engines/agos/script_ff.cpp	2009-04-22 03:46:49 UTC (rev 40062)
+++ scummvm/trunk/engines/agos/script_ff.cpp	2009-04-22 10:19:10 UTC (rev 40063)
@@ -574,6 +574,8 @@
 	if (getBitFlag(40)) {
 		// Omni TV controls
 		if (_moviePlayer) {
+			setBitFlag(42, false);
+			_omniTV = true;
 			_moviePlayer->play();
 		} else {
 			_variableArray[254] = 6747;


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