[Scummvm-git-logs] scummvm master -> 27c80ffddcbf65a1ce0308158b3447c09e4eaa54

djsrv dservilla at gmail.com
Fri Jun 26 20:59:04 UTC 2020


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:
b728485736 DIRECTOR: LINGO: Fix frame event queueing
8f7e232ed2 DIRECTOR: LINGO: Don't do frame events when paused
27c80ffddc DIRECTOR: LINGO: Call perFrameHook on stop


Commit: b72848573688d3fe01b337fac2e160de2bc9f15d
    https://github.com/scummvm/scummvm/commit/b72848573688d3fe01b337fac2e160de2bc9f15d
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-26T16:54:56-04:00

Commit Message:
DIRECTOR: LINGO: Fix frame event queueing

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


diff --git a/engines/director/lingo/lingo-events.cpp b/engines/director/lingo/lingo-events.cpp
index 59b089f3f7..8cdc76b7ea 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -170,7 +170,14 @@ void Lingo::queueFrameEvent(LEvent event, int eventId) {
 	int scriptId = score->_frames[score->getCurrentFrame()]->_actionId;
 
 	if (scriptId) {
-		_eventQueue.push(LingoEvent(event, eventId, kArchMain, kScoreScript, scriptId, false));
+		if (event == kEventEnterFrame && _vm->getVersion() <= 3) {
+			_eventQueue.push(LingoEvent(kEventNone, eventId, kArchMain, kScoreScript, scriptId, false));
+		} else {
+			ScriptContext *script = getScriptContext(kArchMain, kScoreScript, scriptId);
+			if (script && script->_eventHandlers.contains(event)) {
+				_eventQueue.push(LingoEvent(event, eventId, kArchMain, kScoreScript, scriptId, false));
+			}
+		}
 	}
 }
 
@@ -180,9 +187,6 @@ void Lingo::queueMovieEvent(LEvent event, int eventId) {
 	 * window [p.81 of D4 docs]
 	 */
 
-	if (event == kEventNone)
-		return;
-
 	// FIXME: shared cast movie scripts could come before main movie ones
 	for (ScriptContextHash::iterator it = _archives[kArchMain].scriptContexts[kMovieScript].begin();
 			it != _archives[kArchMain].scriptContexts[kMovieScript].end(); ++it) {
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 2db94a2f0d..b29bfb506f 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -493,7 +493,6 @@ void Score::update() {
 
 	// Enter and exit from previous frame (Director 4)
 	_lingo->processEvent(kEventEnterFrame);
-	_lingo->processEvent(kEventNone);
 	// TODO Director 6 - another order
 
 	byte tempo = _puppetTempo ? _puppetTempo : _frames[_currentFrame]->_tempo;


Commit: 8f7e232ed2143aff548984403757c8c59c3f0026
    https://github.com/scummvm/scummvm/commit/8f7e232ed2143aff548984403757c8c59c3f0026
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-26T16:57:05-04:00

Commit Message:
DIRECTOR: LINGO: Don't do frame events when paused

Changed paths:
    engines/director/score.cpp


diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index b29bfb506f..f258d018bf 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -428,7 +428,7 @@ void Score::update() {
 	}
 
 	// For previous frame
-	if (_currentFrame > 0) {
+	if (_currentFrame > 0 && !_vm->_playbackPaused) {
 		// TODO: Confirm when the perFrameHook is called if
 		// there's no transition.
 		// If there is a transition, the perFrameHook is called
@@ -492,7 +492,8 @@ void Score::update() {
 	// Stage is drawn between the prepareFrame and enterFrame events (Lingo in a Nutshell, p.100)
 
 	// Enter and exit from previous frame (Director 4)
-	_lingo->processEvent(kEventEnterFrame);
+	if (!_vm->_playbackPaused)
+		_lingo->processEvent(kEventEnterFrame);
 	// TODO Director 6 - another order
 
 	byte tempo = _puppetTempo ? _puppetTempo : _frames[_currentFrame]->_tempo;


Commit: 27c80ffddcbf65a1ce0308158b3447c09e4eaa54
    https://github.com/scummvm/scummvm/commit/27c80ffddcbf65a1ce0308158b3447c09e4eaa54
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-26T16:57:36-04:00

Commit Message:
DIRECTOR: LINGO: Call perFrameHook on stop

Changed paths:
    engines/director/score.cpp


diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index f258d018bf..19a626fc6c 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -415,6 +415,7 @@ void Score::startLoop() {
 	}
 
 	_lingo->processEvent(kEventStopMovie);
+	_lingo->executePerFrameHook(-1, 0);
 }
 
 void Score::update() {




More information about the Scummvm-git-logs mailing list