[Scummvm-git-logs] scummvm master -> 785b659a6b35c0d592cbb1d88ce1d8bc1e872ba2

sev- noreply at scummvm.org
Sun Sep 21 23:07:36 UTC 2025


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

Summary:
785b659a6b DIRECTOR: Behaviors now get executed


Commit: 785b659a6b35c0d592cbb1d88ce1d8bc1e872ba2
    https://github.com/scummvm/scummvm/commit/785b659a6b35c0d592cbb1d88ce1d8bc1e872ba2
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-22T01:05:27+02:00

Commit Message:
DIRECTOR: Behaviors now get executed

We keep Datum in the scriptInstance array, since it has refCount
which prevents them from premature destruction

Changed paths:
    engines/director/channel.h
    engines/director/lingo/lingo-events.cpp
    engines/director/score.cpp


diff --git a/engines/director/channel.h b/engines/director/channel.h
index 863a6cbdb6e..3ce735a44de 100644
--- a/engines/director/channel.h
+++ b/engines/director/channel.h
@@ -123,7 +123,7 @@ public:
 
 	int _startFrame;
 	int _endFrame;
-	Common::Array<AbstractObject *> _scriptInstanceList;
+	Common::Array<Datum> _scriptInstanceList;
 
 private:
 	Graphics::ManagedSurface *getSurface();
diff --git a/engines/director/lingo/lingo-events.cpp b/engines/director/lingo/lingo-events.cpp
index 5c52aef83fe..ce90fc7866f 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -271,7 +271,7 @@ void Movie::resolveScriptEvent(LingoEvent &event) {
 			if (_vm->getVersion() >= 600) {
 				event.scriptType = kScoreScript;
 				event.scriptId = scriptId;
-				event.scriptInstance = _score->_channels[event.channelId]->_scriptInstanceList[event.behaviorIndex];
+				event.scriptInstance = _score->_channels[event.channelId]->_scriptInstanceList[event.behaviorIndex].u.obj;
 				return;
 			}
 
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index d5d4c032389..b4ae3cf9401 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -2454,9 +2454,6 @@ void Score::killScriptInstances(int frameNum) {
 			continue;
 
 		if (frameNum < channel->_startFrame || frameNum > channel->_endFrame) {
-			for (auto &inst : channel->_scriptInstanceList) {
-				delete inst;
-			}
 			channel->_scriptInstanceList.clear();
 			channel->_startFrame = channel->_endFrame = -1;
 
@@ -2491,7 +2488,7 @@ void Score::createScriptInstances(int frameNum) {
 							continue;
 						}
 
-						channel->_scriptInstanceList.push_back(result.u.obj);
+						channel->_scriptInstanceList.push_back(result);
 
 						debugC(1, kDebugLingoExec, "Score::createScriptInstances(): Instantiating behavior %s for channel %d",
 							sprite->_behaviors[j].toString().c_str(), i + 1);




More information about the Scummvm-git-logs mailing list