[Scummvm-cvs-logs] SF.net SVN: scummvm:[52310] scummvm/branches/gsoc2010-opengl/backends/ graphics/openglsdl

vgvgf at users.sourceforge.net vgvgf at users.sourceforge.net
Mon Aug 23 22:28:04 CEST 2010


Revision: 52310
          http://scummvm.svn.sourceforge.net/scummvm/?rev=52310&view=rev
Author:   vgvgf
Date:     2010-08-23 20:28:04 +0000 (Mon, 23 Aug 2010)

Log Message:
-----------
OPENGL: Add Ctrl-Shift-Enter hotkey for backward switching fullscreen modes.

Modified Paths:
--------------
    scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.cpp
    scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.h

Modified: scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.cpp	2010-08-23 19:49:51 UTC (rev 52309)
+++ scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.cpp	2010-08-23 20:28:04 UTC (rev 52310)
@@ -237,11 +237,11 @@
 bool OpenGLSdlGraphicsManager::setupFullscreenMode() {
 	SDL_Rect const* const*availableModes = SDL_ListModes(NULL, SDL_FULLSCREEN | SDL_OPENGL);
 
-	// If -1, autodetect the fullscreen mode
+	// If -2, autodetect the fullscreen mode
 	// The last used fullscreen mode will be prioritized, if there is no last fullscreen
 	// mode, the desktop resolution will be used, and in case the desktop resolution
 	// is not available as a fullscreen mode, the one with smallest metric will be selected.
-	if (_videoMode.activeFullscreenMode == -1) {
+	if (_videoMode.activeFullscreenMode == -2) {
 		// Desktop resolution
 		int desktopModeIndex = -1;
 
@@ -290,9 +290,19 @@
 			return true;
 		}
 	} else {
+		// Use last fullscreen mode if looping backwards from the first mode
+		if (_videoMode.activeFullscreenMode == -1) {
+			do {
+				_videoMode.activeFullscreenMode++;
+			} while(availableModes[_videoMode.activeFullscreenMode]);
+			_videoMode.activeFullscreenMode--;
+		}
+
+		// Use first fullscreen mode if looping from last mode
 		if (!availableModes[_videoMode.activeFullscreenMode])
 			_videoMode.activeFullscreenMode = 0;
 
+		// Check if the fullscreen mode is valid
 		if (availableModes[_videoMode.activeFullscreenMode]) {
 			_videoMode.hardwareWidth = availableModes[_videoMode.activeFullscreenMode]->w;
 			_videoMode.hardwareHeight = availableModes[_videoMode.activeFullscreenMode]->h;
@@ -497,13 +507,13 @@
 	return false;
 }
 
-void OpenGLSdlGraphicsManager::toggleFullScreen(bool loop) {
+void OpenGLSdlGraphicsManager::toggleFullScreen(int loop) {
 	beginGFXTransaction();
 		if (_videoMode.fullscreen && loop) {
-			_videoMode.activeFullscreenMode += 1;
+			_videoMode.activeFullscreenMode += loop;
 			setFullscreenMode(true);
 		} else {
-			_videoMode.activeFullscreenMode = -1;
+			_videoMode.activeFullscreenMode = -2;
 			setFullscreenMode(!_videoMode.fullscreen);
 		}
 	endGFXTransaction();
@@ -532,7 +542,7 @@
 		if (event.kbd.hasFlags(Common::KBD_ALT) &&
 			(event.kbd.keycode == Common::KEYCODE_RETURN ||
 			event.kbd.keycode == (Common::KeyCode)SDLK_KP_ENTER)) {
-			toggleFullScreen(false);
+			toggleFullScreen(0);
 			return true;
 		}
 
@@ -540,10 +550,18 @@
 		if (event.kbd.hasFlags(Common::KBD_CTRL|Common::KBD_ALT) &&
 			(event.kbd.keycode == Common::KEYCODE_RETURN ||
 			event.kbd.keycode == (Common::KeyCode)SDLK_KP_ENTER)) {
-			toggleFullScreen(true);
+			toggleFullScreen(1);
 			return true;
 		}
 
+		// Ctrl-Shift-Return and Ctrl-Shift-Enter switches backwards between full screen modes
+		if (event.kbd.hasFlags(Common::KBD_CTRL|Common::KBD_SHIFT) &&
+			(event.kbd.keycode == Common::KEYCODE_RETURN ||
+			event.kbd.keycode == (Common::KeyCode)SDLK_KP_ENTER)) {
+			toggleFullScreen(-1);
+			return true;
+		}
+
 		// Alt-S: Create a screenshot
 		if (event.kbd.hasFlags(Common::KBD_ALT) && event.kbd.keycode == 's') {
 			char filename[20];

Modified: scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.h	2010-08-23 19:49:51 UTC (rev 52309)
+++ scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.h	2010-08-23 20:28:04 UTC (rev 52310)
@@ -78,9 +78,9 @@
 
 	/**
 	 * Toggles fullscreen.
-	 * @loop if true loop to next supported fullscreen mode
+	 * @loop loop direction for switching fullscreen mode, if 0 toggles it.
 	 */
-	virtual void toggleFullScreen(bool loop);
+	virtual void toggleFullScreen(int loop);
 
 	/**
 	 * Setup the fullscreen mode.


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