[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