[Scummvm-git-logs] scummvm master -> 378b867aae7d2b4aeceb885389477763d6888508

sev- noreply at scummvm.org
Mon Sep 22 19:56:56 UTC 2025


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
e6c59e1600 DIRECTOR: Do not expect behavior to return values
3a807701cf DIRECTOR: Moved behavior loading to a proper place
378b867aae DIRECTOR: LINGO: Always execute all behaviours before regarding Frame script


Commit: e6c59e1600d7b6ae2d62b5415e9c3c8267ee22b3
    https://github.com/scummvm/scummvm/commit/e6c59e1600d7b6ae2d62b5415e9c3c8267ee22b3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-22T21:56:44+02:00

Commit Message:
DIRECTOR: Do not expect behavior to return values

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


diff --git a/engines/director/lingo/lingo-events.cpp b/engines/director/lingo/lingo-events.cpp
index 821984905aa..a39b9a81e64 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -639,7 +639,7 @@ bool Lingo::processEvent(LEvent event, ScriptType st, CastMemberID scriptId, int
 
 	if (g_director->getVersion() >= 600 && st == kScoreScript && obj) {
 		push(Datum(obj));
-		LC::call(_eventHandlerTypes[event], 1, true);
+		LC::call(_eventHandlerTypes[event], 1, false);
 		return execute();
 	}
 


Commit: 3a807701cf732083bc1359b5ded3ae917d6f44a6
    https://github.com/scummvm/scummvm/commit/3a807701cf732083bc1359b5ded3ae917d6f44a6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-22T21:56:49+02:00

Commit Message:
DIRECTOR: Moved behavior loading to a proper place

Changed paths:
    engines/director/score.cpp


diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index b4ae3cf9401..3fb40d55ee5 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -910,6 +910,8 @@ void Score::updateSprites(RenderMode mode, bool withClean) {
 		if (channel->isActiveText())
 			_movie->_currentEditableTextChannel = i;
 	}
+
+	createScriptInstances(_curFrameNumber);
 }
 
 bool Score::renderPrePaletteCycle(RenderMode mode) {
@@ -2073,8 +2075,6 @@ bool Score::loadFrame(int frameNum, bool loadCast) {
 	if (loadCast) {
 		// Load frame cast
 		setSpriteCasts();
-
-		createScriptInstances(_curFrameNumber);
 	}
 
 	return true;


Commit: 378b867aae7d2b4aeceb885389477763d6888508
    https://github.com/scummvm/scummvm/commit/378b867aae7d2b4aeceb885389477763d6888508
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-22T21:56:49+02:00

Commit Message:
DIRECTOR: LINGO: Always execute all behaviours before regarding Frame script

We must execute all Sprite behaviours and only if none of them
executed the handler, we pass down to the frame script

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


diff --git a/engines/director/lingo/lingo-events.cpp b/engines/director/lingo/lingo-events.cpp
index a39b9a81e64..8220691ca9c 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -586,6 +586,8 @@ void Lingo::processEvents(Common::Queue<LingoEvent> &queue, bool isInputEvent) {
 	Movie *movie = _vm->getCurrentMovie();
 	Score *sc = movie->getScore();
 
+	bool behavioursCompleted = false;
+
 	while (!queue.empty()) {
 		LingoEvent el = queue.pop();
 
@@ -618,6 +620,17 @@ void Lingo::processEvents(Common::Queue<LingoEvent> &queue, bool isInputEvent) {
 		bool completed = processEvent(el.event, el.scriptType, el.scriptId, el.channelId, el.scriptInstance);
 		movie->_lastEventId[el.event] = el.eventId;
 
+		if (_vm->getVersion() >= 600) {
+			// We need to execute all behaviours before deciding if we pass
+			// through or not
+			if (el.scriptType == kScoreScript && el.passByDefault == true) {
+				behavioursCompleted |= completed;
+				completed = true;
+			} else {
+				completed |= behavioursCompleted;
+			}
+		}
+
 		if (isInputEvent && !completed) {
 			debugC(5, kDebugEvents, "Lingo::processEvents: context frozen on an input event, stopping");
 			LingoState *state = g_director->getCurrentWindow()->getLastFrozenLingoState();




More information about the Scummvm-git-logs mailing list