[Scummvm-cvs-logs] SF.net SVN: scummvm:[45308] scummvm/trunk/engines/sci/gui/gui_animate.cpp

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Wed Oct 21 17:12:10 CEST 2009


Revision: 45308
          http://scummvm.svn.sourceforge.net/scummvm/?rev=45308&view=rev
Author:   m_kiewitz
Date:     2009-10-21 15:12:10 +0000 (Wed, 21 Oct 2009)

Log Message:
-----------
SCI/newgui: updating flags separately to fix issue in sq1 (almost at the end) where wilco will go michael jackson otherwise

Modified Paths:
--------------
    scummvm/trunk/engines/sci/gui/gui_animate.cpp

Modified: scummvm/trunk/engines/sci/gui/gui_animate.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_animate.cpp	2009-10-21 14:13:08 UTC (rev 45307)
+++ scummvm/trunk/engines/sci/gui/gui_animate.cpp	2009-10-21 15:12:10 UTC (rev 45308)
@@ -427,6 +427,20 @@
 	GuiAnimateList::iterator listIterator;
 	GuiAnimateList::iterator listEnd = _list.end();
 
+
+	// This has to be done in a separate loop. At least in sq1 some .dispose modifies FIXEDLOOP flag in signal for
+	//  another object. In that case we would overwrite the new signal with our version of the old signal
+	listIterator = _list.begin();
+	while (listIterator != listEnd) {
+		listEntry = *listIterator;
+		curObject = listEntry->object;
+		signal = listEntry->signal;
+
+		// Finally update signal
+		PUT_SEL32V(segMan, curObject, signal, signal);
+		listIterator++;
+	}
+
 	listIterator = _list.reverse_begin();
 	while (listIterator != listEnd) {
 		listEntry = *listIterator;
@@ -438,9 +452,6 @@
 			PUT_SEL32V(segMan, curObject, underBits, 0);
 		}
 
-		// Finally update signal
-		PUT_SEL32V(segMan, curObject, signal, signal);
-
 		if (signal & SCI_ANIMATE_SIGNAL_DISPOSEME) {
 			// Call .delete_ method of that object
 			invoke_selector(_s, curObject, _s->_kernel->_selectorCache.delete_, kContinueOnInvalidSelector, argv, argc, __FILE__, __LINE__, 0);


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