[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