From 2b9f625f76ec817dbbb1845ecb94363172ffb3fd Mon Sep 17 00:00:00 2001 From: stephena Date: Thu, 2 Jun 2011 20:53:01 +0000 Subject: [PATCH] Re-enabled 'grabmouse' functionality with a few changes: - it doesn't have a hotkey any more - it is changed in the "Input Settings' UI, not in 'Video Settings' - it only has meaning while in emulation mode - it is enabled by default git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2245 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba --- Changes.txt | 14 +++++++++++-- docs/graphics/eventmapping_devsports.png | Bin 16727 -> 8073 bytes docs/index.html | 12 +++++++++--- src/emucore/FrameBuffer.cxx | 5 +++-- src/emucore/OSystem.cxx | 11 +++++++++-- src/emucore/OSystem.hxx | 10 ++++++++++ src/emucore/Settings.cxx | 4 +++- src/gui/InputDialog.cxx | 24 ++++++++++++++++++++--- src/gui/InputDialog.hxx | 1 + 9 files changed, 68 insertions(+), 13 deletions(-) diff --git a/Changes.txt b/Changes.txt index 9cf775f07..db1f1c3da 100644 --- a/Changes.txt +++ b/Changes.txt @@ -12,6 +12,18 @@ Release History =========================================================================== +3.4 to 3.4.1: (June xx, 2011) + + * Re-enabled 'grabmouse' commandline argument and associated + functionality with the following changes: + - it doesn't have a hotkey anymore + - it is changed in the "Input Settings' UI, not in 'Video Settings' + - it only has meaning while in emulation mode + - it is enabled by default + +-Have fun! + + 3.3 to 3.4: (May. 29, 2011) * Many improvements to input handling, particularly with the mouse and @@ -54,8 +66,6 @@ * Updated built-in version of the PNG library to the latest version. --Have fun! - 3.2.2 to 3.3: (November 12, 2010) diff --git a/docs/graphics/eventmapping_devsports.png b/docs/graphics/eventmapping_devsports.png index 8df8062452f92eae3a069d9bfd65f4caa118cd6b..714bf16888f0edaebaa691396d7e864c8a871302 100644 GIT binary patch literal 8073 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 literal 16727 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%0ASJJ_$`k8m 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 QPsBn

-
February 1999 - May 2011
+
February 1999 - June 2011
The Stella Team
Stella Homepage
@@ -1584,7 +1584,7 @@
-video <soft|gl>
- Use SDL software or OpenGL rendering mode. + Use software or OpenGL rendering mode. @@ -1792,6 +1792,11 @@ Enable using the mouse for various controllers (paddle, driving, etc). + +
-grabmouse <1|0>
+ Keeps the mouse in the game window in emulation mode. + +
-dsense <number>
Sensitivity for emulation of paddles when using a digital device @@ -2374,6 +2379,7 @@ Mouse paddle sensitivitySensitivity used when emulating a paddle using a mouse-msense Allow all 4 ...Allow all 4 joystick directions to be pressed simultaneously-joyallow4 Use mouse as ...Use the mouse for various controllers (paddles, driving, etc)-usemouse + Grab mouse ...Keep mouse in window in emulation mode-grabmouse @@ -2567,7 +2573,7 @@

Note that you must use the entire name of the port as specified by your operating system. For example, in Windows this would be COM1, COM2, etc; Linux and MacOSX tend to use names similar to '/dev/xxxxxx'. - For now, only Linux/UNIX, MacOSX, and Win32 are supported.

+ For now, only Linux/UNIX, MacOSX, and Windows are supported.

Support for the EEPROM portion of the AtariVox and SaveKey is currently emulated. That is, a file will be created on your computer simulating the diff --git a/src/emucore/FrameBuffer.cxx b/src/emucore/FrameBuffer.cxx index ac1e9f659..d021eb547 100644 --- a/src/emucore/FrameBuffer.cxx +++ b/src/emucore/FrameBuffer.cxx @@ -743,11 +743,12 @@ cerr << "New mode:" << endl // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FrameBuffer::setCursorState() { - // Always grab mouse in fullscreen or during emulation, + // Always grab mouse in fullscreen or during emulation (if enabled), // and don't show the cursor during emulation bool emulation = myOSystem->eventHandler().state() == EventHandler::S_EMULATE; - grabMouse(fullScreen() || emulation); + grabMouse(fullScreen() || + (emulation && myOSystem->settings().getBool("grabmouse"))); showCursor(!emulation); } diff --git a/src/emucore/OSystem.cxx b/src/emucore/OSystem.cxx index 85bf02444..b08ccc7f8 100644 --- a/src/emucore/OSystem.cxx +++ b/src/emucore/OSystem.cxx @@ -643,9 +643,16 @@ string OSystem::MD5FromFile(const string& filename) void OSystem::logMessage(const string& message, uInt8 level) { if(level == 0) - cerr << message; + { + cout << message << flush; + myLogMessages += message; + } else if(level <= (uInt8)mySettings->getInt("showinfo")) - cout << message; + { + if(1) // TODO - messages should be output to console + cout << message << flush; + myLogMessages += message; + } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/OSystem.hxx b/src/emucore/OSystem.hxx index 910916f27..73e8d3f2a 100644 --- a/src/emucore/OSystem.hxx +++ b/src/emucore/OSystem.hxx @@ -386,6 +386,13 @@ class OSystem */ void logMessage(const string& message, uInt8 level); + /** + Get the system messages logged up to this point. + + @return The list of log messages + */ + const string& logMessages() const { return myLogMessages; } + public: ////////////////////////////////////////////////////////////////////// // The following methods are system-specific and can be overrided in @@ -520,6 +527,9 @@ class OSystem // Pointer to the StateManager object StateManager* myStateManager; + // The list of log messages + string myLogMessages; + // Maximum dimensions of the desktop area uInt32 myDesktopWidth, myDesktopHeight; diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index e7b844b87..a141baa00 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -54,6 +54,7 @@ Settings::Settings(OSystem* osystem) setInternal("fullscreen", "0"); setInternal("fullres", "auto"); setInternal("center", "false"); + setInternal("grabmouse", "true"); setInternal("palette", "standard"); setInternal("colorloss", "false"); setInternal("timing", "sleep"); @@ -370,6 +371,7 @@ void Settings::usage() << " -fullscreen <1|0|-1> Use fullscreen mode (1 or 0), or disable switching to fullscreen entirely\n" << " -fullres The resolution to use in fullscreen mode\n" << " -center <1|0> Centers game window (if possible)\n" + << " -grabmouse <1|0> Keeps the mouse in the game window\n" << " -palette \n" @@ -463,7 +465,7 @@ void Settings::usage() << " -pp Sets the 'Display.Phosphor' property\n" << " -ppblend Sets the 'Display.PPBlend' property\n" #endif - << endl; + << endl << flush; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/gui/InputDialog.cxx b/src/gui/InputDialog.cxx index d2fad3cd8..8ee341724 100644 --- a/src/gui/InputDialog.cxx +++ b/src/gui/InputDialog.cxx @@ -49,7 +49,7 @@ InputDialog::InputDialog(OSystem* osystem, DialogContainer* parent, // Set real dimensions _w = BSPF_min(50 * fontWidth + 10, max_w); - _h = BSPF_min(12 * (lineHeight + 4) + 10, max_h); + _h = BSPF_min(13 * (lineHeight + 4) + 10, max_h); // The tab widget xpos = 2; ypos = vBorder; @@ -190,6 +190,15 @@ void InputDialog::addDevicePortTab(const GUI::Font& font) "Use mouse as a controller"); wid.push_back(myMouseEnabled); + // Grab mouse (in windowed mode) + ypos += lineHeight + 4; + myGrabMouse = new CheckboxWidget(myTab, font, xpos, ypos, + "Grab mouse in emulation mode"); + wid.push_back(myGrabMouse); +#ifndef WINDOWED_SUPPORT + myGrabMouse->clearFlags(WIDGET_ENABLED); +#endif + // Add items for virtual device ports addToFocusList(wid, tabID); } @@ -210,8 +219,10 @@ void InputDialog::loadConfig() myDeadzoneLabel->setValue(Joystick::deadzone()); // Mouse/paddle enabled - bool usemouse = instance().settings().getBool("usemouse"); - myMouseEnabled->setState(usemouse); + myMouseEnabled->setState(instance().settings().getBool("usemouse")); + + // Grab mouse + myGrabMouse->setState(instance().settings().getBool("grabmouse")); // Paddle speed (digital and mouse) myDPaddleSpeed->setValue(instance().settings().getInt("dsense")); @@ -246,6 +257,10 @@ void InputDialog::saveConfig() instance().settings().setBool("usemouse", usemouse); instance().eventHandler().setMouseControllerMode(usemouse ? 0 : -1); + // Grab mouse + instance().settings().setBool("grabmouse", myGrabMouse->getState()); + instance().frameBuffer().setCursorState(); + // Paddle speed (digital and mouse) int sensitivity = myDPaddleSpeed->getValue(); instance().settings().setInt("dsense", sensitivity); @@ -289,6 +304,9 @@ void InputDialog::setDefaults() // Mouse/paddle enabled myMouseEnabled->setState(true); + // Grab mouse + myGrabMouse->setState(true); + // Paddle speed (digital and mouse) myDPaddleSpeed->setValue(5); myDPaddleLabel->setLabel("5"); diff --git a/src/gui/InputDialog.hxx b/src/gui/InputDialog.hxx index fd8058fa3..65280f5b0 100644 --- a/src/gui/InputDialog.hxx +++ b/src/gui/InputDialog.hxx @@ -81,6 +81,7 @@ class InputDialog : public Dialog StaticTextWidget* myMPaddleLabel; CheckboxWidget* myAllowAll4; CheckboxWidget* myMouseEnabled; + CheckboxWidget* myGrabMouse; }; #endif