[Scummvm-git-logs] scummvm master -> 51ce5217f24c0f3bd724570b736b9eaed0a517e0
sev-
noreply at scummvm.org
Tue Feb 25 21:46:39 UTC 2025
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
599f70ee4f DIRECTOR: LINGO: Added utility function to print object types
55e342f814 DIRECTOR: XLIBS: Fix callback calling and added sanity check to QTVR Xlib
51ce5217f2 DIRECTOR: XLIBS: Actually execute rollover callback in QTVR Xlib
Commit: 599f70ee4feba422b4ca018a7754732bc917b80e
https://github.com/scummvm/scummvm/commit/599f70ee4feba422b4ca018a7754732bc917b80e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-25T22:46:16+01:00
Commit Message:
DIRECTOR: LINGO: Added utility function to print object types
Changed paths:
engines/director/types.cpp
engines/director/types.h
diff --git a/engines/director/types.cpp b/engines/director/types.cpp
index 8d28980b442..3932dddf80c 100644
--- a/engines/director/types.cpp
+++ b/engines/director/types.cpp
@@ -20,6 +20,7 @@
*/
#include "common/array.h"
+#include "common/str.h"
#include "director/types.h"
namespace Director {
@@ -140,4 +141,38 @@ const char *inkType2str(InkType type) {
}
+#define defFlag(x) { x, #x }
+
+struct FlagsList {
+ int f;
+ const char *s;
+} static objFlagList[] = {
+ defFlag(kNoneObj),
+ defFlag(kFactoryObj),
+ defFlag(kXObj),
+ defFlag(kScriptObj),
+ defFlag(kXtraObj),
+ defFlag(kWindowObj),
+ defFlag(kCastMemberObj),
+};
+
+Common::String objectType2str(int fl) {
+ Common::String res;
+
+ for (int i = 0; i < ARRAYSIZE(objFlagList); i++) {
+ if (fl & objFlagList[i].f) {
+ if (!res.empty())
+ res += " | ";
+
+ res += objFlagList[i].s;
+ fl &= ~objFlagList[i].f;
+ }
+ }
+
+ if (fl)
+ res += Common::String::format(" | %x", fl);
+
+ return res;
+}
+
} // End of namespace Director
diff --git a/engines/director/types.h b/engines/director/types.h
index 86ab98fb714..a8b994e07b4 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -460,6 +460,7 @@ const char *scriptType2str(ScriptType scr);
const char *castType2str(CastType type);
const char *spriteType2str(SpriteType type);
const char *inkType2str(InkType type);
+Common::String objectType2str(int fl);
} // End of namespace Director
Commit: 55e342f81417ef85050e26f9573d868c30257b76
https://github.com/scummvm/scummvm/commit/55e342f81417ef85050e26f9573d868c30257b76
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-25T22:46:16+01:00
Commit Message:
DIRECTOR: XLIBS: Fix callback calling and added sanity check to QTVR Xlib
Changed paths:
engines/director/lingo/xlibs/qtvr.cpp
diff --git a/engines/director/lingo/xlibs/qtvr.cpp b/engines/director/lingo/xlibs/qtvr.cpp
index 2ca175f7b30..a54d2826517 100644
--- a/engines/director/lingo/xlibs/qtvr.cpp
+++ b/engines/director/lingo/xlibs/qtvr.cpp
@@ -252,9 +252,10 @@ void QTVR::m_mouseOver(int nargs) {
me->_widget->processEvent(event);
if (hotspot != me->_video->getRolloverHotspotID() && !me->_rolloverCallbackMethod.empty()) {
- g_lingo->push(me->_video->getRolloverHotspotID());
g_lingo->push(me->_rolloverCallbackObject);
- LC::call(me->_rolloverCallbackMethod, 2, false);
+ g_lingo->push(me->_video->getRolloverHotspotID());
+
+ LC::call(me->_rolloverCallbackObject.u.obj->getMethod(me->_rolloverCallbackMethod), 2, false);
}
}
@@ -368,6 +369,9 @@ void QTVR::m_setRolloverCallback(int nargs) {
me->_rolloverCallbackMethod = g_lingo->pop().asString();
me->_rolloverCallbackObject = g_lingo->pop();
+
+ if (me->_rolloverCallbackObject.type != OBJECT || !(me->_rolloverCallbackObject.u.obj->getObjType() & kFactoryObj))
+ error("QTVR::m_setRolloverCallback(): first argument is not a Factory but %s", me->_rolloverCallbackObject.type2str());
}
void QTVR::m_setTransitionMode(int nargs) {
Commit: 51ce5217f24c0f3bd724570b736b9eaed0a517e0
https://github.com/scummvm/scummvm/commit/51ce5217f24c0f3bd724570b736b9eaed0a517e0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-25T22:46:16+01:00
Commit Message:
DIRECTOR: XLIBS: Actually execute rollover callback in QTVR Xlib
Changed paths:
engines/director/lingo/xlibs/qtvr.cpp
diff --git a/engines/director/lingo/xlibs/qtvr.cpp b/engines/director/lingo/xlibs/qtvr.cpp
index a54d2826517..063805730bc 100644
--- a/engines/director/lingo/xlibs/qtvr.cpp
+++ b/engines/director/lingo/xlibs/qtvr.cpp
@@ -255,7 +255,9 @@ void QTVR::m_mouseOver(int nargs) {
g_lingo->push(me->_rolloverCallbackObject);
g_lingo->push(me->_video->getRolloverHotspotID());
+ int cframe = g_lingo->_state->callstack.size();
LC::call(me->_rolloverCallbackObject.u.obj->getMethod(me->_rolloverCallbackMethod), 2, false);
+ g_lingo->execute(cframe);
}
}
More information about the Scummvm-git-logs
mailing list