[Scummvm-git-logs] scummvm master -> 25632958e720b923c2e015f06b041ae280af82fb

moralrecordings noreply at scummvm.org
Sun May 26 17:09:52 UTC 2024


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

Summary:
25632958e7 DIRECTOR: Fix issues with palette transitions


Commit: 25632958e720b923c2e015f06b041ae280af82fb
    https://github.com/scummvm/scummvm/commit/25632958e720b923c2e015f06b041ae280af82fb
Author: Scott Percival (code at moral.net.au)
Date: 2024-05-27T01:09:13+08:00

Commit Message:
DIRECTOR: Fix issues with palette transitions

Exiting a transition early should result in the target palette.
In addition, mouseDown and keyDown events are enough to register a
transition skip, not mouseUp.

Fixes palette glitches in Majestic.

Changed paths:
    engines/director/events.cpp
    engines/director/transitions.cpp
    engines/director/window.h


diff --git a/engines/director/events.cpp b/engines/director/events.cpp
index 5eaac9a32be..cb8ba0d6f64 100644
--- a/engines/director/events.cpp
+++ b/engines/director/events.cpp
@@ -80,7 +80,9 @@ bool DirectorEngine::processEvents(bool captureClick, bool skipWindowManager) {
 			if (captureClick)
 				return true;
 			break;
-		case Common::EVENT_LBUTTONUP:
+		case Common::EVENT_LBUTTONDOWN:
+		case Common::EVENT_RBUTTONDOWN:
+		case Common::EVENT_KEYDOWN:
 			if (captureClick)
 				return true;
 			break;
diff --git a/engines/director/transitions.cpp b/engines/director/transitions.cpp
index bf0c8cc1894..ab3e0ae74de 100644
--- a/engines/director/transitions.cpp
+++ b/engines/director/transitions.cpp
@@ -132,9 +132,9 @@ struct {
 	TRANS(kTransDissolveBits,			kTransAlgoDissolve,	kTransDirDissolve)
 };
 
-void Window::exitTransition(TransParams &t, int step, Graphics::ManagedSurface *nextFrame, Common::Rect clipRect) {
+void Window::exitTransition(TransParams &t, Graphics::ManagedSurface *nextFrame, Common::Rect clipRect) {
 	_composeSurface->blitFrom(*nextFrame, clipRect, Common::Point(clipRect.left, clipRect.top));
-	stepTransition(t, step);
+	stepTransition(t, t.steps);
 }
 
 void Window::stepTransition(TransParams &t, int step) {
@@ -560,7 +560,7 @@ void Window::playTransition(uint frame, RenderMode mode, uint16 transDuration, u
 		_composeSurface->blitFrom(*blitFrom, rfrom, Common::Point(rto.left, rto.top));
 
 		if (_vm->processEvents(true)) {
-			exitTransition(t, i, &nextFrame, clipRect);
+			exitTransition(t, &nextFrame, clipRect);
 			break;
 		}
 
@@ -765,7 +765,7 @@ void Window::dissolveTrans(TransParams &t, Common::Rect &clipRect, Graphics::Man
 		g_lingo->executePerFrameHook(t.frame, i + 1);
 
 		if (_vm->processEvents(true)) {
-			exitTransition(t, i, nextFrame, clipRect);
+			exitTransition(t, nextFrame, clipRect);
 			break;
 		}
 
@@ -871,7 +871,7 @@ void Window::dissolvePatternsTrans(TransParams &t, Common::Rect &clipRect, Graph
 		g_lingo->executePerFrameHook(t.frame, i + 1);
 
 		if (_vm->processEvents(true)) {
-			exitTransition(t, i, nextFrame, clipRect);
+			exitTransition(t, nextFrame, clipRect);
 			break;
 		}
 
@@ -1053,7 +1053,7 @@ void Window::transMultiPass(TransParams &t, Common::Rect &clipRect, Graphics::Ma
 		g_director->delayMillis(MAX(0, diff));
 
 		if (_vm->processEvents(true)) {
-			exitTransition(t, i, nextFrame, clipRect);
+			exitTransition(t, nextFrame, clipRect);
 			break;
 		}
 
@@ -1104,7 +1104,7 @@ void Window::transZoom(TransParams &t, Common::Rect &clipRect, Graphics::Managed
 		r.moveTo(w / 2 - t.xStepSize * i, h / 2 - t.yStepSize * i);
 
 		if (_vm->processEvents(true)) {
-			exitTransition(t, i, nextFrame, clipRect);
+			exitTransition(t, nextFrame, clipRect);
 			break;
 		}
 
diff --git a/engines/director/window.h b/engines/director/window.h
index 451a17424e2..4881649c5a6 100644
--- a/engines/director/window.h
+++ b/engines/director/window.h
@@ -116,7 +116,7 @@ public:
 	void reset();
 
 	// transitions.cpp
-	void exitTransition(TransParams &t, int step, Graphics::ManagedSurface *nextFrame, Common::Rect clipRect);
+	void exitTransition(TransParams &t, Graphics::ManagedSurface *nextFrame, Common::Rect clipRect);
 	void stepTransition(TransParams &t, int step);
 	void playTransition(uint frame, RenderMode mode, uint16 transDuration, uint8 transArea, uint8 transChunkSize, TransitionType transType, CastMemberID paletteId);
 	void initTransParams(TransParams &t, Common::Rect &clipRect);




More information about the Scummvm-git-logs mailing list