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

bgK bastien.bouclet at gmail.com
Sat Dec 10 17:36:11 CET 2016


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:
fd794bd4a3 MOHAWK: Poll the events while drawing Myst transitions


Commit: fd794bd4a307478be8f6014d742d4e841121c404
    https://github.com/scummvm/scummvm/commit/fd794bd4a307478be8f6014d742d4e841121c404
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2016-12-10T17:34:24+01:00

Commit Message:
MOHAWK: Poll the events while drawing Myst transitions

Fixes #9594, the mouse cursor was hanging while transitions were drawn.

Changed paths:
    engines/mohawk/myst.cpp
    engines/mohawk/myst.h
    engines/mohawk/myst_graphics.cpp


diff --git a/engines/mohawk/myst.cpp b/engines/mohawk/myst.cpp
index 6b91e74..e887436 100644
--- a/engines/mohawk/myst.cpp
+++ b/engines/mohawk/myst.cpp
@@ -401,6 +401,25 @@ bool MohawkEngine_Myst::skippableWait(uint32 duration) {
 	return skipped;
 }
 
+void MohawkEngine_Myst::pollAndDiscardEvents() {
+	// Poll the events to update the mouse cursor position
+	Common::Event event;
+	while (_system->getEventManager()->pollEvent(event)) {
+		switch (event.type) {
+			case Common::EVENT_KEYDOWN:
+				switch (event.kbd.keycode) {
+					case Common::KEYCODE_SPACE:
+						pauseGame();
+						break;
+					default:
+						break;
+				}
+			default:
+				break;
+		}
+	}
+}
+
 void MohawkEngine_Myst::changeToStack(uint16 stack, uint16 card, uint16 linkSrcSound, uint16 linkDstSound) {
 	debug(2, "changeToStack(%d)", stack);
 
diff --git a/engines/mohawk/myst.h b/engines/mohawk/myst.h
index 0491e85..2414b71 100644
--- a/engines/mohawk/myst.h
+++ b/engines/mohawk/myst.h
@@ -187,6 +187,7 @@ public:
 	uint16 getMainCursor() { return _mainCursor; }
 	void checkCursorHints();
 	MystArea *updateCurrentResource();
+	void pollAndDiscardEvents();
 	bool skippableWait(uint32 duration);
 
 	MystSoundBlock readSoundBlock(Common::ReadStream *stream) const;
diff --git a/engines/mohawk/myst_graphics.cpp b/engines/mohawk/myst_graphics.cpp
index 427fba4..333da40 100644
--- a/engines/mohawk/myst_graphics.cpp
+++ b/engines/mohawk/myst_graphics.cpp
@@ -243,6 +243,7 @@ void MystGraphics::runTransition(TransitionType type, Common::Rect rect, uint16
 				area.right = area.left + step;
 
 				_vm->_system->delayMillis(delay);
+				_vm->pollAndDiscardEvents();
 
 				copyBackBufferToScreen(area);
 				_vm->_system->updateScreen();
@@ -266,6 +267,7 @@ void MystGraphics::runTransition(TransitionType type, Common::Rect rect, uint16
 				area.left = area.right - step;
 
 				_vm->_system->delayMillis(delay);
+				_vm->pollAndDiscardEvents();
 
 				copyBackBufferToScreen(area);
 				_vm->_system->updateScreen();
@@ -309,6 +311,7 @@ void MystGraphics::runTransition(TransitionType type, Common::Rect rect, uint16
 				area.bottom = area.top + step;
 
 				_vm->_system->delayMillis(delay);
+				_vm->pollAndDiscardEvents();
 
 				copyBackBufferToScreen(area);
 				_vm->_system->updateScreen();
@@ -332,6 +335,7 @@ void MystGraphics::runTransition(TransitionType type, Common::Rect rect, uint16
 				area.top = area.bottom - step;
 
 				_vm->_system->delayMillis(delay);
+				_vm->pollAndDiscardEvents();
 
 				copyBackBufferToScreen(area);
 				_vm->_system->updateScreen();
@@ -456,6 +460,7 @@ void MystGraphics::transitionDissolve(Common::Rect rect, uint step) {
 	}
 
 	_vm->_system->unlockScreen();
+	_vm->pollAndDiscardEvents();
 	_vm->_system->updateScreen();
 }
 
@@ -475,6 +480,7 @@ void MystGraphics::transitionSlideToLeft(Common::Rect rect, uint16 steps, uint16
 		simulatePreviousDrawDelay(dstRect);
 		_vm->_system->copyRectToScreen(_backBuffer->getBasePtr(dstRect.left, dstRect.top),
 				_backBuffer->pitch, srcRect.left, srcRect.top, srcRect.width(), srcRect.height());
+		_vm->pollAndDiscardEvents();
 		_vm->_system->updateScreen();
 	}
 
@@ -500,6 +506,7 @@ void MystGraphics::transitionSlideToRight(Common::Rect rect, uint16 steps, uint1
 		simulatePreviousDrawDelay(dstRect);
 		_vm->_system->copyRectToScreen(_backBuffer->getBasePtr(dstRect.left, dstRect.top),
 				_backBuffer->pitch, srcRect.left, srcRect.top, srcRect.width(), srcRect.height());
+		_vm->pollAndDiscardEvents();
 		_vm->_system->updateScreen();
 	}
 
@@ -525,6 +532,7 @@ void MystGraphics::transitionSlideToTop(Common::Rect rect, uint16 steps, uint16
 		simulatePreviousDrawDelay(dstRect);
 		_vm->_system->copyRectToScreen(_backBuffer->getBasePtr(dstRect.left, dstRect.top),
 				_backBuffer->pitch, srcRect.left, srcRect.top, srcRect.width(), srcRect.height());
+		_vm->pollAndDiscardEvents();
 		_vm->_system->updateScreen();
 	}
 
@@ -551,6 +559,7 @@ void MystGraphics::transitionSlideToBottom(Common::Rect rect, uint16 steps, uint
 		simulatePreviousDrawDelay(dstRect);
 		_vm->_system->copyRectToScreen(_backBuffer->getBasePtr(dstRect.left, dstRect.top),
 				_backBuffer->pitch, srcRect.left, srcRect.top, srcRect.width(), srcRect.height());
+		_vm->pollAndDiscardEvents();
 		_vm->_system->updateScreen();
 	}
 
@@ -575,6 +584,7 @@ void MystGraphics::transitionPartialToRight(Common::Rect rect, uint32 width, uin
 		simulatePreviousDrawDelay(dstRect);
 		_vm->_system->copyRectToScreen(_backBuffer->getBasePtr(dstRect.left, dstRect.top),
 				_backBuffer->pitch, srcRect.left, srcRect.top, srcRect.width(), srcRect.height());
+		_vm->pollAndDiscardEvents();
 		_vm->_system->updateScreen();
 	}
 
@@ -596,6 +606,7 @@ void MystGraphics::transitionPartialToLeft(Common::Rect rect, uint32 width, uint
 		simulatePreviousDrawDelay(dstRect);
 		_vm->_system->copyRectToScreen(_backBuffer->getBasePtr(dstRect.left, dstRect.top),
 				_backBuffer->pitch, srcRect.left, srcRect.top, srcRect.width(), srcRect.height());
+		_vm->pollAndDiscardEvents();
 		_vm->_system->updateScreen();
 	}
 





More information about the Scummvm-git-logs mailing list