[Scummvm-cvs-logs] SF.net SVN: scummvm:[50724] scummvm/trunk/engines/sci

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Tue Jul 6 16:10:09 CEST 2010


Revision: 50724
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50724&view=rev
Author:   m_kiewitz
Date:     2010-07-06 14:10:09 +0000 (Tue, 06 Jul 2010)

Log Message:
-----------
SCI: fix regression of r50721 - pausing/resuming only on actual menu usage

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/kmenu.cpp
    scummvm/trunk/engines/sci/graphics/menu.cpp
    scummvm/trunk/engines/sci/graphics/menu.h

Modified: scummvm/trunk/engines/sci/engine/kmenu.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kmenu.cpp	2010-07-06 11:33:09 UTC (rev 50723)
+++ scummvm/trunk/engines/sci/engine/kmenu.cpp	2010-07-06 14:10:09 UTC (rev 50724)
@@ -91,16 +91,8 @@
 reg_t kMenuSelect(EngineState *s, int argc, reg_t *argv) {
 	reg_t eventObject = argv[0];
 	bool pauseSound = argc > 1 ? (argv[1].isNull() ? false : true) : true;
-	reg_t result;
 
-	if (pauseSound)
-		g_sci->_soundCmd->pauseAll(true);
-
-	result = g_sci->_gfxMenu->kernelSelect(eventObject);
-
-	if (pauseSound)
-		g_sci->_soundCmd->pauseAll(false);
-	return result;
+	return g_sci->_gfxMenu->kernelSelect(eventObject, pauseSound);
 }
 
 } // End of namespace Sci

Modified: scummvm/trunk/engines/sci/graphics/menu.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/menu.cpp	2010-07-06 11:33:09 UTC (rev 50723)
+++ scummvm/trunk/engines/sci/graphics/menu.cpp	2010-07-06 14:10:09 UTC (rev 50724)
@@ -382,7 +382,7 @@
 	}
 }
 
-reg_t GfxMenu::kernelSelect(reg_t eventObject) {
+reg_t GfxMenu::kernelSelect(reg_t eventObject, bool pauseSound) {
 	int16 eventType = readSelectorValue(_segMan, eventObject, SELECTOR(type));
 	int16 keyPress, keyModifier;
 	Common::Point mousePosition;
@@ -407,9 +407,9 @@
 		case 0:
 			break;
 		case SCI_KEY_ESC:
-			interactiveShowMouse();
+			interactiveStart(pauseSound);
 			itemEntry = interactiveWithKeyboard();
-			interactiveRestoreMouse();
+			interactiveEnd(pauseSound);
 			forceClaimed = true;
 			break;
 		default:
@@ -445,9 +445,9 @@
 	case SCI_EVENT_MOUSE_PRESS:
 		mousePosition = _cursor->getPosition();
 		if (mousePosition.y < 10) {
-			interactiveShowMouse();
+			interactiveStart(pauseSound);
 			itemEntry = interactiveWithMouse();
-			interactiveRestoreMouse();
+			interactiveEnd(pauseSound);
 			forceClaimed = true;
 		}
 		break;
@@ -632,12 +632,16 @@
 	_paint16->bitsShow(itemRect);
 }
 
-void GfxMenu::interactiveShowMouse() {
+void GfxMenu::interactiveStart(bool pauseSound) {
 	_mouseOldState = _cursor->isVisible();
 	_cursor->kernelShow();
+	if (pauseSound)
+		g_sci->_soundCmd->pauseAll(true);
 }
 
-void GfxMenu::interactiveRestoreMouse() {
+void GfxMenu::interactiveEnd(bool pauseSound) {
+	if (pauseSound)
+		g_sci->_soundCmd->pauseAll(false);
 	if (!_mouseOldState)
 		_cursor->kernelHide();
 }

Modified: scummvm/trunk/engines/sci/graphics/menu.h
===================================================================
--- scummvm/trunk/engines/sci/graphics/menu.h	2010-07-06 11:33:09 UTC (rev 50723)
+++ scummvm/trunk/engines/sci/graphics/menu.h	2010-07-06 14:10:09 UTC (rev 50724)
@@ -92,7 +92,7 @@
 	reg_t kernelGetAttribute(uint16 menuId, uint16 itemId, uint16 attributeId);
 
 	void drawBar();
-	reg_t kernelSelect(reg_t eventObject);
+	reg_t kernelSelect(reg_t eventObject, bool pauseSound);
 
 	void kernelDrawStatus(const char *text, int16 colorPen, int16 colorBack);
 	void kernelDrawMenuBar(bool clear);
@@ -103,8 +103,8 @@
 	void calculateMenuAndItemWidth();
 	void drawMenu(uint16 oldMenuId, uint16 newMenuId);
 	void invertMenuSelection(uint16 itemId);
-	void interactiveShowMouse();
-	void interactiveRestoreMouse();
+	void interactiveStart(bool pauseSound);
+	void interactiveEnd(bool pauseSound);
 	GuiMenuItemEntry *interactiveWithKeyboard();
 	GuiMenuItemEntry *interactiveWithMouse();
 	uint16 mouseFindMenuSelection(Common::Point mousePosition);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list