[Scummvm-git-logs] scummvm master -> a67e4bee50ebe41b163579a65a0aa4222272ce8a

djsrv dservilla at gmail.com
Tue Jul 21 21:34:46 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:
1d0f8db46a DIRECTOR: Get rid of blocking loops
17be87ffb3 DIRECTOR: Rename Movie::getCurrentStage getStage
a67e4bee50 DIRECTOR: Update screen in DirectorEngine::draw


Commit: 1d0f8db46ac104f8a676aeed87005491d716cf27
    https://github.com/scummvm/scummvm/commit/1d0f8db46ac104f8a676aeed87005491d716cf27
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-21T17:34:22-04:00

Commit Message:
DIRECTOR: Get rid of blocking loops

Changed paths:
    engines/director/score.cpp
    engines/director/score.h


diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 7f4c32c4dd..695f7123ab 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -64,6 +64,7 @@ Score::Score(Movie *movie) {
 	_nextFrame = 0;
 	_currentLabel = 0;
 	_nextFrameTime = 0;
+	_waitForChannel = 0;
 	_playState = kPlayNotStarted;
 
 	_numChannelsDisplayed = 0;
@@ -253,6 +254,13 @@ void Score::stopPlay() {
 }
 
 void Score::update() {
+	if (_waitForChannel) {
+		if (_soundManager->isChannelActive(_waitForChannel))
+			return;
+		
+		_waitForChannel = 0;
+	}
+
 	if (g_system->getMillis() < _nextFrameTime && !debugChannelSet(-1, kDebugFast)) {
 		return;
 	}
@@ -357,14 +365,10 @@ void Score::update() {
 			_vm->waitForClick();
 		} else if (tempo == 135) {
 			// Wait for sound channel 1
-			while (_soundManager->isChannelActive(1)) {
-				_vm->processEvents();
-			}
+			_waitForChannel = 1;
 		} else if (tempo == 134) {
 			// Wait for sound channel 2
-			while (_soundManager->isChannelActive(2)) {
-				_vm->processEvents();
-			}
+			_waitForChannel = 2;
 		}
 	}
 
diff --git a/engines/director/score.h b/engines/director/score.h
index 86b6bb2cb8..948172ca9d 100644
--- a/engines/director/score.h
+++ b/engines/director/score.h
@@ -118,6 +118,7 @@ public:
 	byte _puppetTempo;
 	PlayState _playState;
 	uint32 _nextFrameTime;
+	int _waitForChannel;
 	Cursor *_currentCursor;
 
 	int _numChannelsDisplayed;


Commit: 17be87ffb3c9d6b66b777f94b59e530ff45688f0
    https://github.com/scummvm/scummvm/commit/17be87ffb3c9d6b66b777f94b59e530ff45688f0
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-21T17:34:22-04:00

Commit Message:
DIRECTOR: Rename Movie::getCurrentStage getStage

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo-the.cpp
    engines/director/movie.h
    engines/director/score.cpp


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 747d91cab5..f6dba65f49 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1947,7 +1947,7 @@ void LB::b_updateStage(int nargs) {
 	}
 
 	Score *score = movie->getScore();
-	if (movie->getCurrentStage()->render())
+	if (movie->getStage()->render())
 		g_director->draw();
 
 	g_director->processEvents(true);
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 2bd3455965..2f07637784 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -1280,7 +1280,7 @@ void Lingo::setTheSprite(Datum &id1, int field, Datum &d) {
 		}
 
 		if (d.asInt() != channel->_currentPoint.x) {
-			g_director->getCurrentMovie()->getCurrentStage()->addDirtyRect(channel->getBbox());
+			g_director->getCurrentMovie()->getStage()->addDirtyRect(channel->getBbox());
 			channel->_currentPoint.x = d.asInt();
 		} else {
 			channel->_dirty = false;
@@ -1294,7 +1294,7 @@ void Lingo::setTheSprite(Datum &id1, int field, Datum &d) {
 		}
 
 		if (d.asInt() != channel->_currentPoint.y) {
-			g_director->getCurrentMovie()->getCurrentStage()->addDirtyRect(channel->getBbox());
+			g_director->getCurrentMovie()->getStage()->addDirtyRect(channel->getBbox());
 			channel->_currentPoint.y = d.asInt();
 		} else {
 			channel->_dirty = false;
@@ -1361,7 +1361,7 @@ void Lingo::setTheSprite(Datum &id1, int field, Datum &d) {
 	}
 
 	if (channel->_dirty && g_director->getCurrentMovie())
-		g_director->getCurrentMovie()->getCurrentStage()->addDirtyRect(channel->getBbox());
+		g_director->getCurrentMovie()->getStage()->addDirtyRect(channel->getBbox());
 }
 
 Datum Lingo::getTheCast(Datum &id1, int field) {
diff --git a/engines/director/movie.h b/engines/director/movie.h
index 561d10815f..7c1f9e76ed 100644
--- a/engines/director/movie.h
+++ b/engines/director/movie.h
@@ -91,7 +91,7 @@ public:
 	void setArchive(Archive *archive);
 	Archive *getArchive() const { return _movieArchive; };
 	Common::String getMacName() const { return _macName; }
-	Stage *getCurrentStage() const { return _stage; }
+	Stage *getStage() const { return _stage; }
 	DirectorEngine *getVM() const { return _vm; }
 	Cast *getCast() const { return _cast; }
 	Cast *getSharedCast() const { return _sharedCast; }
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 695f7123ab..164be0b7b9 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -49,7 +49,7 @@ namespace Director {
 
 Score::Score(Movie *movie) {
 	_movie = movie;
-	_stage = movie->getCurrentStage();
+	_stage = movie->getStage();
 	_vm = _movie->getVM();
 	_lingo = _vm->getLingo();
 


Commit: a67e4bee50ebe41b163579a65a0aa4222272ce8a
    https://github.com/scummvm/scummvm/commit/a67e4bee50ebe41b163579a65a0aa4222272ce8a
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-21T17:34:22-04:00

Commit Message:
DIRECTOR: Update screen in DirectorEngine::draw

Changed paths:
    engines/director/events.cpp
    engines/director/graphics.cpp


diff --git a/engines/director/events.cpp b/engines/director/events.cpp
index 9770827f77..7d8fedbc2e 100644
--- a/engines/director/events.cpp
+++ b/engines/director/events.cpp
@@ -180,7 +180,6 @@ void DirectorEngine::processEvents(bool bufferLingoEvents) {
 		if (!bufferLingoEvents)
 			_lingo->processEvents();
 
-		g_system->updateScreen();
 		g_system->delayMillis(10);
 
 		if (getVersion() >= 3 && sc->getCurrentFrame() > 0 && sc->_playState != kPlayStopped && _lingo->getEventCount() == 0)
diff --git a/engines/director/graphics.cpp b/engines/director/graphics.cpp
index 0d37fa88fd..d04fae6fd3 100644
--- a/engines/director/graphics.cpp
+++ b/engines/director/graphics.cpp
@@ -796,6 +796,7 @@ void DirectorEngine::setCursor(int type) {
 void DirectorEngine::draw() {
 	_wm->renderZoomBox(true);
 	_wm->draw();
+	g_system->updateScreen();
 }
 
 void inkDrawPixel(int x, int y, int src, void *data) {




More information about the Scummvm-git-logs mailing list