[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