[Scummvm-git-logs] scummvm master -> 25d508cf12f3adb257cbc67e3e458f41aa835d22

whiterandrek whiterandrek at gmail.com
Wed Jul 18 20:56:51 CEST 2018


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:
e1460103e1 GRAPHICS: MACGUI: added WMModalMenuMode
a053a19ca2 PINK: fixed pausing of engine when menu appears
25d508cf12 PINK: removed game screen drawing when menu is active


Commit: e1460103e195d788dfa0e0cf8bbe57f0afae466f
    https://github.com/scummvm/scummvm/commit/e1460103e195d788dfa0e0cf8bbe57f0afae466f
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2018-07-18T21:47:22+03:00

Commit Message:
GRAPHICS: MACGUI: added WMModalMenuMode

Changed paths:
    graphics/macgui/macmenu.cpp
    graphics/macgui/macwindowmanager.cpp
    graphics/macgui/macwindowmanager.h


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 9ab92a8..499f0b9 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -556,6 +556,9 @@ bool MacMenu::mouseMove(int x, int y) {
 			return true;
 	} else if ((_wm->_mode & kWMModeAutohideMenu) && !_bbox.contains(x, y)) {
 		_isVisible = false;
+		if ((_wm->_mode & kWMModalMenuMode) && _wm->_pauseEngineCallback) {
+			_wm->_pauseEngineCallback(_wm->_engine, false);
+		}
 	}
 
 	return false;
diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index bde17b6..17c0395 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -158,6 +158,8 @@ MacWindowManager::MacWindowManager() {
 	_menuDelay = 0;
 	_menuTimerActive = false;
 
+	_pauseEngineCallback = nullptr;
+
 	_colorBlack = 0;
 	_colorWhite = 2;
 
@@ -332,8 +334,12 @@ void MacWindowManager::draw() {
 static void menuTimerHandler(void *refCon) {
 	MacWindowManager *wm = (MacWindowManager *)refCon;
 
-	if (wm->_menuHotzone.contains(wm->_lastMousePos))
+	if (wm->_menuHotzone.contains(wm->_lastMousePos)) {
 		wm->activateMenu();
+		if ((wm->_mode & kWMModalMenuMode) && wm->_pauseEngineCallback) {
+			wm->_pauseEngineCallback(wm->_engine, true);
+		}
+	}
 
 	wm->_menuTimerActive = false;
 
diff --git a/graphics/macgui/macwindowmanager.h b/graphics/macgui/macwindowmanager.h
index a220b73..1b450d9 100644
--- a/graphics/macgui/macwindowmanager.h
+++ b/graphics/macgui/macwindowmanager.h
@@ -59,7 +59,8 @@ enum {
 enum {
 	kWMModeNone         = 0,
 	kWMModeNoDesktop    = (1 << 0),
-	kWMModeAutohideMenu = (1 << 1)
+	kWMModeAutohideMenu = (1 << 1),
+	kWMModalMenuMode = (1 << 2)
 };
 
 }
@@ -223,6 +224,9 @@ public:
 
 	int _colorBlack, _colorWhite;
 
+	void *_engine;
+	void (*_pauseEngineCallback)(void *engine, bool pause);
+
 private:
 	void drawDesktop();
 


Commit: a053a19ca258dc4d344bc2345b5faa1bf2b0183e
    https://github.com/scummvm/scummvm/commit/a053a19ca258dc4d344bc2345b5faa1bf2b0183e
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2018-07-18T21:48:54+03:00

Commit Message:
PINK: fixed pausing of engine when menu appears

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


diff --git a/engines/pink/director.cpp b/engines/pink/director.cpp
index cbf4448..09af376 100644
--- a/engines/pink/director.cpp
+++ b/engines/pink/director.cpp
@@ -79,7 +79,7 @@ static const Graphics::MacMenuData menuSubItems[] = {
 Director::Director()
 	: _surface(640, 480) {
 	_wm.setScreen(&_surface);
-	_wm.setMode(Graphics::kWMModeNoDesktop | Graphics::kWMModeAutohideMenu);
+	_wm.setMode(Graphics::kWMModeNoDesktop | Graphics::kWMModeAutohideMenu | Graphics::kWMModalMenuMode);
 	_wm.setMenuHotzone(Common::Rect(0, 0, 640, 23));
 	_wm.setMenuDelay(250000);
 
diff --git a/engines/pink/pink.cpp b/engines/pink/pink.cpp
index f18df01..25c8f88 100644
--- a/engines/pink/pink.cpp
+++ b/engines/pink/pink.cpp
@@ -75,6 +75,9 @@ Common::Error PinkEngine::init() {
 	_console = new Console(this);
 	_director = new Director();
 
+	_director->getWndManager()._engine = this;
+	_director->getWndManager()._pauseEngineCallback = &pauseEngine;
+
 	Common::String orbName;
 	Common::String broName;
 	if (isPeril()) {
@@ -147,9 +150,7 @@ Common::Error Pink::PinkEngine::run() {
 			}
 		}
 
-		if (!_director->isMenuActive())
-			_actor->update();
-
+		_actor->update();
 		_director->update();
 		_system->delayMillis(10);
 	}
@@ -157,6 +158,11 @@ Common::Error Pink::PinkEngine::run() {
 	return Common::kNoError;
 }
 
+void PinkEngine::pauseEngine(void *engine, bool pause) {
+	PinkEngine *vm = (PinkEngine*)engine;
+	vm->pauseEngineIntern(pause);
+}
+
 void PinkEngine::load(Archive &archive) {
 	archive.readString();
 	archive.readString();
diff --git a/engines/pink/pink.h b/engines/pink/pink.h
index 9017178..faed498 100644
--- a/engines/pink/pink.h
+++ b/engines/pink/pink.h
@@ -92,6 +92,8 @@ public:
 	Common::Error saveGameState(int slot, const Common::String &desc) override;
 	bool canSaveGameStateCurrently() override;
 
+	static void pauseEngine(void *engine, bool pause); // for MacWndMgr
+
 	friend class Console;
 
 protected:


Commit: 25d508cf12f3adb257cbc67e3e458f41aa835d22
    https://github.com/scummvm/scummvm/commit/25d508cf12f3adb257cbc67e3e458f41aa835d22
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2018-07-18T21:54:00+03:00

Commit Message:
PINK: removed game screen drawing when menu is active

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


diff --git a/engines/pink/director.cpp b/engines/pink/director.cpp
index 09af376..97df174 100644
--- a/engines/pink/director.cpp
+++ b/engines/pink/director.cpp
@@ -88,9 +88,9 @@ Director::Director()
 }
 
 void Director::update() {
-	if (isMenuActive()) {
+	if (_wm.isMenuActive()) {
 		_wm.draw();
-		draw();
+		g_system->updateScreen();
 		return;
 	}
 
@@ -112,10 +112,6 @@ bool Director::processEvent(Common::Event &event) {
 	return _wm.processEvent(event);
 }
 
-bool Director::isMenuActive() {
-	return _wm.isMenuActive();
-}
-
 void Director::setPalette(const byte *palette) {
 	g_system->getPaletteManager()->setPalette(palette, 0, 256);
 
diff --git a/engines/pink/director.h b/engines/pink/director.h
index 127bdbf..842330c 100644
--- a/engines/pink/director.h
+++ b/engines/pink/director.h
@@ -62,8 +62,6 @@ public:
 
 	void pause(bool pause);
 
-	bool isMenuActive();
-
 	void saveStage();
 	void loadStage();
 





More information about the Scummvm-git-logs mailing list