[Scummvm-git-logs] scummvm master -> 2a90acd0eb1557caff4c8d942b058372e1dd70af

npjg nathanael.gentrydb8 at gmail.com
Mon Aug 10 15:22:26 UTC 2020


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

Summary:
6a69c3a81f DIRECTOR: Draw windowed transitions in right area
2a90acd0eb DIRECTOR: Offload transition handling to WM


Commit: 6a69c3a81f696e6744703a24f3c95f2d816cabb4
    https://github.com/scummvm/scummvm/commit/6a69c3a81f696e6744703a24f3c95f2d816cabb4
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-08-10T11:15:34-04:00

Commit Message:
DIRECTOR: Draw windowed transitions in right area

Changed paths:
    engines/director/transitions.cpp


diff --git a/engines/director/transitions.cpp b/engines/director/transitions.cpp
index 52aae17314..52b67b10bf 100644
--- a/engines/director/transitions.cpp
+++ b/engines/director/transitions.cpp
@@ -516,12 +516,12 @@ void Window::playTransition(uint16 transDuration, uint8 transArea, uint8 transCh
 		}
 
 		if (fullredraw) {
-			g_system->copyRectToScreen(_composeSurface->getBasePtr(clipRect.left, clipRect.top), _composeSurface->pitch, clipRect.left, clipRect.top, w, h);
+			g_system->copyRectToScreen(_composeSurface->getBasePtr(clipRect.left, clipRect.top), _composeSurface->pitch, _innerDims.left + clipRect.left, _innerDims.top + clipRect.top, w, h);
 		} else {
 			rto.clip(clipRect);
 
 			if (rto.height() > 0 && rto.width() > 0) {
-				g_system->copyRectToScreen(_composeSurface->getBasePtr(rto.left, rto.top), _composeSurface->pitch, rto.left, rto.top, rto.width(), rto.height());
+				g_system->copyRectToScreen(_composeSurface->getBasePtr(rto.left, rto.top), _composeSurface->pitch, _innerDims.left + rto.left, _innerDims.top + rto.top, rto.width(), rto.height());
 			}
 		}
 
@@ -702,7 +702,7 @@ void Window::dissolveTrans(TransParams &t, Common::Rect &clipRect, Graphics::Man
 			}
 		} while (rnd != seed);
 
-		g_system->copyRectToScreen(_composeSurface->getBasePtr(clipRect.left, clipRect.top), _composeSurface->pitch, clipRect.left, clipRect.top, clipRect.width(), clipRect.height());
+		g_system->copyRectToScreen(_composeSurface->getBasePtr(clipRect.left, clipRect.top), _composeSurface->pitch, _innerDims.left + clipRect.left, _innerDims.top + clipRect.top, clipRect.width(), clipRect.height());
 		g_system->updateScreen();
 
 		g_lingo->executePerFrameHook(t.frame, i + 1);
@@ -806,7 +806,7 @@ void Window::dissolvePatternsTrans(TransParams &t, Common::Rect &clipRect, Graph
 			}
 		}
 
-		g_system->copyRectToScreen(_composeSurface->getBasePtr(clipRect.left, clipRect.top), _composeSurface->pitch, clipRect.left, clipRect.top, clipRect.width(), clipRect.height());
+		g_system->copyRectToScreen(_composeSurface->getBasePtr(clipRect.left, clipRect.top), _composeSurface->pitch, _innerDims.left + clipRect.left, _innerDims.top + clipRect.top, clipRect.width(), clipRect.height());
 		g_system->updateScreen();
 
 		g_lingo->executePerFrameHook(t.frame, i + 1);
@@ -977,7 +977,7 @@ void Window::transMultiPass(TransParams &t, Common::Rect &clipRect, Graphics::Ma
 
 			if (rto.height() > 0 && rto.width() > 0) {
 				_composeSurface->blitFrom(*nextFrame, rto, Common::Point(rto.left, rto.top));
-				g_system->copyRectToScreen(_composeSurface->getBasePtr(rto.left, rto.top), _composeSurface->pitch, rto.left, rto.top, rto.width(), rto.height());
+				g_system->copyRectToScreen(_composeSurface->getBasePtr(rto.left, rto.top), _composeSurface->pitch, _innerDims.left + rto.left, _innerDims.top + rto.top, rto.width(), rto.height());
 			}
 		}
 		rects.clear();
@@ -1031,7 +1031,7 @@ void Window::transZoom(TransParams &t, Common::Rect &clipRect, Graphics::Managed
 		r.setWidth(t.xStepSize * i * 2);
 		r.moveTo(w / 2 - t.xStepSize * i, h / 2 - t.yStepSize * i);
 
-		g_system->copyRectToScreen(_composeSurface->getPixels(), _composeSurface->pitch, 0, 0, w, h);
+		g_system->copyRectToScreen(_composeSurface->getPixels(), _composeSurface->pitch, _innerDims.left, _innerDims.top, w, h);
 		g_system->updateScreen();
 
 		g_lingo->executePerFrameHook(t.frame, i);


Commit: 2a90acd0eb1557caff4c8d942b058372e1dd70af
    https://github.com/scummvm/scummvm/commit/2a90acd0eb1557caff4c8d942b058372e1dd70af
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-08-10T11:17:16-04:00

Commit Message:
DIRECTOR: Offload transition handling to WM

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


diff --git a/engines/director/transitions.cpp b/engines/director/transitions.cpp
index 52b67b10bf..0ecf7ffc95 100644
--- a/engines/director/transitions.cpp
+++ b/engines/director/transitions.cpp
@@ -133,7 +133,12 @@ struct {
 
 void Window::exitTransition(Graphics::ManagedSurface *nextFrame, Common::Rect clipRect) {
 	_composeSurface->blitFrom(*nextFrame, clipRect, Common::Point(clipRect.left, clipRect.top));
-	g_system->copyRectToScreen(_composeSurface->getBasePtr(clipRect.left, clipRect.top), _composeSurface->pitch, clipRect.left, clipRect.top, clipRect.width(), clipRect.height());
+	stepTransition();
+}
+
+void Window::stepTransition() {
+	_contentIsDirty = true;
+	g_director->draw();
 }
 
 void Window::playTransition(uint16 transDuration, uint8 transArea, uint8 transChunkSize, TransitionType transType, uint frame) {
@@ -516,16 +521,14 @@ void Window::playTransition(uint16 transDuration, uint8 transArea, uint8 transCh
 		}
 
 		if (fullredraw) {
-			g_system->copyRectToScreen(_composeSurface->getBasePtr(clipRect.left, clipRect.top), _composeSurface->pitch, _innerDims.left + clipRect.left, _innerDims.top + clipRect.top, w, h);
+			stepTransition();
 		} else {
 			rto.clip(clipRect);
 
-			if (rto.height() > 0 && rto.width() > 0) {
-				g_system->copyRectToScreen(_composeSurface->getBasePtr(rto.left, rto.top), _composeSurface->pitch, _innerDims.left + rto.left, _innerDims.top + rto.top, rto.width(), rto.height());
-			}
+			if (rto.height() > 0 && rto.width() > 0)
+				stepTransition();
 		}
 
-		g_system->updateScreen();
 		g_lingo->executePerFrameHook(t.frame, i);
 	}
 }
@@ -702,8 +705,7 @@ void Window::dissolveTrans(TransParams &t, Common::Rect &clipRect, Graphics::Man
 			}
 		} while (rnd != seed);
 
-		g_system->copyRectToScreen(_composeSurface->getBasePtr(clipRect.left, clipRect.top), _composeSurface->pitch, _innerDims.left + clipRect.left, _innerDims.top + clipRect.top, clipRect.width(), clipRect.height());
-		g_system->updateScreen();
+		stepTransition();
 
 		g_lingo->executePerFrameHook(t.frame, i + 1);
 
@@ -806,8 +808,7 @@ void Window::dissolvePatternsTrans(TransParams &t, Common::Rect &clipRect, Graph
 			}
 		}
 
-		g_system->copyRectToScreen(_composeSurface->getBasePtr(clipRect.left, clipRect.top), _composeSurface->pitch, _innerDims.left + clipRect.left, _innerDims.top + clipRect.top, clipRect.width(), clipRect.height());
-		g_system->updateScreen();
+		stepTransition();
 
 		g_lingo->executePerFrameHook(t.frame, i + 1);
 
@@ -977,13 +978,11 @@ void Window::transMultiPass(TransParams &t, Common::Rect &clipRect, Graphics::Ma
 
 			if (rto.height() > 0 && rto.width() > 0) {
 				_composeSurface->blitFrom(*nextFrame, rto, Common::Point(rto.left, rto.top));
-				g_system->copyRectToScreen(_composeSurface->getBasePtr(rto.left, rto.top), _composeSurface->pitch, _innerDims.left + rto.left, _innerDims.top + rto.top, rto.width(), rto.height());
+				stepTransition();
 			}
 		}
 		rects.clear();
 
-		g_system->updateScreen();
-
 		g_lingo->executePerFrameHook(t.frame, i);
 
 		g_system->delayMillis(t.stepDuration);
@@ -1031,9 +1030,6 @@ void Window::transZoom(TransParams &t, Common::Rect &clipRect, Graphics::Managed
 		r.setWidth(t.xStepSize * i * 2);
 		r.moveTo(w / 2 - t.xStepSize * i, h / 2 - t.yStepSize * i);
 
-		g_system->copyRectToScreen(_composeSurface->getPixels(), _composeSurface->pitch, _innerDims.left, _innerDims.top, w, h);
-		g_system->updateScreen();
-
 		g_lingo->executePerFrameHook(t.frame, i);
 
 		g_system->delayMillis(t.stepDuration);
diff --git a/engines/director/window.h b/engines/director/window.h
index 2c1e78ee67..98cd140398 100644
--- a/engines/director/window.h
+++ b/engines/director/window.h
@@ -105,6 +105,7 @@ class Window : public Graphics::MacWindow, public Object<Window> {
 
 	// transitions.cpp
 	void exitTransition(Graphics::ManagedSurface *nextFrame, Common::Rect clipRect);
+	void stepTransition();
 	void playTransition(uint16 transDuration, uint8 transArea, uint8 transChunkSize, TransitionType transType, uint frame);
 	void initTransParams(TransParams &t, Common::Rect &clipRect);
 	void dissolveTrans(TransParams &t, Common::Rect &clipRect, Graphics::ManagedSurface *tmpSurface);




More information about the Scummvm-git-logs mailing list