[Scummvm-git-logs] scummvm master -> e2065feca741e334b59a7264cc95828eae9fca56

djsrv dservilla at gmail.com
Thu Jun 11 21:01:01 UTC 2020


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:
e2065feca7 DIRECTOR: LINGO: Keep menu callbacks on restart


Commit: e2065feca741e334b59a7264cc95828eae9fca56
    https://github.com/scummvm/scummvm/commit/e2065feca741e334b59a7264cc95828eae9fca56
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-11T17:00:28-04:00

Commit Message:
DIRECTOR: LINGO: Keep menu callbacks on restart

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo.cpp


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 13dba12c0e..141c38ae3d 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1619,6 +1619,7 @@ void LB::b_installMenu(int nargs) {
 		menu->createSubMenuFromString(submenu, submenuText.c_str(), 0);
 	}
 
+	// FIXME: Menu callbacks should not be in the movie's lingo archive
 	g_lingo->addCode(handlers.c_str(), kMovieScript, 1337);
 }
 
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index ae5a5ae038..29645209ce 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -632,6 +632,10 @@ void Lingo::restartLingo(bool keepSharedCast) {
 		LingoArchive *arch = &_archives[a];
 		for (int i = 0; i <= kMaxScriptType; i++) {
 			for (ScriptContextHash::iterator it = arch->scriptContexts[i].begin(); it != arch->scriptContexts[i].end(); ++it) {
+				// FIXME: Menu callbacks should not be in the movie's lingo archive
+				if (it->_key == 1337)
+					continue;
+
 				it->_value->functions.clear();
 				delete it->_value;
 			}
@@ -641,7 +645,11 @@ void Lingo::restartLingo(bool keepSharedCast) {
 
 		arch->names.clear();
 		arch->eventHandlers.clear();
-		arch->functionHandlers.clear();
+		// FIXME: Menu callbacks should not be in the movie's lingo archive
+		for (SymbolHash::iterator it = arch->functionHandlers.begin(); it != arch->functionHandlers.end(); ++it) {
+			if (!it->_key.hasPrefixIgnoreCase("scummvm"))
+				arch->functionHandlers.erase(it->_key);
+		}
 
 	}
 




More information about the Scummvm-git-logs mailing list