r7979 - packages/trunk/kikithebot/debian/patches
Peter De Wachter
pdewacht-guest at alioth.debian.org
Sun Aug 24 21:13:14 UTC 2008
Author: pdewacht-guest
Date: 2008-08-24 21:13:14 +0000 (Sun, 24 Aug 2008)
New Revision: 7979
Added:
packages/trunk/kikithebot/debian/patches/sdl-set-video-mode.patch
Modified:
packages/trunk/kikithebot/debian/patches/series
Log:
- use wide screen resolutions if available
- remember screen size in windowed mode
Added: packages/trunk/kikithebot/debian/patches/sdl-set-video-mode.patch
===================================================================
--- packages/trunk/kikithebot/debian/patches/sdl-set-video-mode.patch (rev 0)
+++ packages/trunk/kikithebot/debian/patches/sdl-set-video-mode.patch 2008-08-24 21:13:14 UTC (rev 7979)
@@ -0,0 +1,180 @@
+--- a/kodilib/src/handler/KEventHandler.cpp
++++ b/kodilib/src/handler/KEventHandler.cpp
+@@ -226,86 +226,55 @@
+ // --------------------------------------------------------------------------------------------------------
+ bool KEventHandler::setScreenSize ( int width, int height, bool fullscreen )
+ {
+- int flags = SDL_OPENGL; // | SDL_ANYFORMAT;
+- if (fullscreen)
+- {
+- flags |= SDL_FULLSCREEN;
+- }
+- else
+- {
+- flags |= SDL_RESIZABLE;
+- }
+-
+- if (SDL_VideoModeOK (width, height, 32, flags) == 0) // video mode not ok
+- {
+- if (fullscreen)
+- {
+- switch (width)
+- {
+- case 1600:
+- KConsole::printf ("couldn't set video mode %dx%d:\ntrying to fallback to 1280x1024 mode", width, height);
+- return setScreenSize (1280, 1024, true);
+- case 1280:
+- KConsole::printf ("couldn't set video mode %dx%d:\ntrying to fallback to 1024x768 mode", width, height);
+- return setScreenSize (1024, 768, true);
+- case 1024:
+- KConsole::printf ("couldn't set video mode %dx%d:\ntrying to fallback to 800x600 mode", width, height);
+- return setScreenSize (800, 600, true);
+- default:
+- break;
+- }
+-
+- // fallback to window mode
+- KConsole::printf ("couldn't set video mode %dx%d (%s) test failed",
+- width, height,
+- fullscreen ? "fullscreen" : "window");
+- KConsole::printf ("trying to fallback to window mode");
+- return setScreenSize (width, height, false);
+- }
+- else
+- {
+- KConsole::printError( kStringPrintf("couldn't set video mode %dx%d (window test failed)", width, height));
+- return false;
+- }
+- }
+-
+- if (SDL_SetVideoMode (width, height, 32, flags) == NULL) // paranoid
++ // For fullscreen mode the requested resolution is ignore, we'll pick what
++ // SDL thinks is best.
++
++ int baseFlags = SDL_OPENGL;
++
++ if (fullscreen)
+ {
+- if (fullscreen)
++ int flags = baseFlags | SDL_FULLSCREEN;
++ KSize fallbackSize = getScreenSize();
++
++ SDL_Rect ** modes = SDL_ListModes (NULL, flags);
++
++ if (modes != 0 && modes != (SDL_Rect **)-1)
+ {
+- switch (width)
+- {
+- case 1600:
+- KConsole::printf ("couldn't init video mode %dx%d:\ntrying to fallback to 1280x1024 mode", width, height);
+- return setScreenSize (1280, 1024, true);
+- case 1280:
+- KConsole::printf ("couldn't init video mode %dx%d:\ntrying to fallback to 1024x768 mode", width, height);
+- return setScreenSize (1024, 768, true);
+- case 1024:
+- KConsole::printf ("couldn't init video mode %dx%d:\ntrying to fallback to 800x600 mode", width, height);
+- return setScreenSize (800, 600, true);
+- default:
+- break;
+- }
+-
+- // fallback to window mode
+- KConsole::printf ("couldn't change video mode %dx%d (fullscreen setting failed)", width, height);
+- KConsole::printf ("trying to fallback to window mode");
+- return setScreenSize (width, height, false);
++ for (int i = 0; modes[i]; ++i)
++ {
++ if (SDL_SetVideoMode (modes[i]->w, modes[i]->h, 0, flags) != NULL)
++ {
++ // notify interested receivers that the resolution changed
++ notification_center.notifyReceiversType(KDL_NOTIFICATION_TYPE_VIDEO_MODE_CHANGED);
++ return true;
++ }
++
++ KConsole::printf ("couldn't change vidoe mode %dx%d (fullscreen):\n%s",
++ modes[i]->w, modes[i]->h, SDL_GetError());
++ }
+ }
+ else
+ {
+- KConsole::printError(kStringPrintf("couldn't change video mode %dx%d (%s):\n%s\n",
+- width, height,
+- fullscreen ? "fullscreen" : "window", SDL_GetError()), true);
+- return false;
++ KConsole::printf ("SDL didn't give us a list of video modes");
+ }
++
++ // fallback to window mode
++ KConsole::printf ("trying to fallback to window mode");
++ width = fallbackSize.w;
++ height = fallbackSize.h;
+ }
+
+- // notify interested receivers that the resolution changed
+- notification_center.notifyReceiversType(KDL_NOTIFICATION_TYPE_VIDEO_MODE_CHANGED);
++ int flags = baseFlags | SDL_RESIZABLE;
++ if (SDL_SetVideoMode (width, height, 0, flags) != NULL)
++ {
++ // notify interested receivers that the resolution changed
++ notification_center.notifyReceiversType(KDL_NOTIFICATION_TYPE_VIDEO_MODE_CHANGED);
++ return true;
++ }
+
+- return true;
++ KConsole::printError(kStringPrintf("couldn't change video mode %dx%d (window):\n%s\n",
++ width, height, SDL_GetError()), true);
++ return false;
+ }
+
+ // --------------------------------------------------------------------------------------------------------
+@@ -332,7 +301,7 @@
+ return;
+ }
+ // check if resolution is restricted
+- if (modes != (SDL_Rect **)-1)
++ if (modes == (SDL_Rect **)-1)
+ {
+ // all resolutions available
+ width = 1024;
+@@ -359,7 +328,7 @@
+ return;
+ }
+ // check if resolution is restricted
+- if (modes != (SDL_Rect **)-1)
++ if (modes == (SDL_Rect **)-1)
+ {
+ // all resolutions available
+ width = 1024;
+--- a/py/config.py
++++ b/py/config.py
+@@ -46,11 +46,14 @@
+ Controller.setGamma(int(value))
+ elif option == "fullscreen":
+ fullscreen = self.getboolean(section, option)
+- if fullscreen <> Controller.getFullscreen():
+- screen_size = self.get (section, fullscreen and "fullscreen size" or "window size")
+- screen_size = tuple (map (int, screen_size.split("x")))
+- Controller.changeScreenSize (screen_size[0], screen_size[1], self.getboolean(section, option))
+- self.set (section, "fullscreen size", "%dx%d" % Controller.getScreenSize())
++ if fullscreen:
++ # remember window size before switching to fullscreen
++ if not Controller.getFullscreen():
++ self.set (section, "window size", "%dx%d" % Controller.getScreenSize())
++ Controller.changeScreenSize (0, 0, true)
++ else:
++ window_size = map (int, self.get (section, "window size").split("x"))
++ Controller.changeScreenSize (window_size[0], window_size[1], false)
+ elif section == "keyboard":
+ player = Controller.getPlayer()
+ player.setKeyForAction (value, option.replace("_", " "))
+@@ -70,6 +73,10 @@
+
+ def save (self):
+ """save the configuration"""
++ # Save the window size. We need to do this here as the resize
++ # notifications don't get transfered to the Python code (AFAICS).
++ if not Controller.getFullscreen():
++ self.set ("display", "window size", "%dx%d" % Controller.getScreenSize())
+ try:
+ cfg_file = file (self.config_file_path, "w+")
+ self.write (cfg_file)
Modified: packages/trunk/kikithebot/debian/patches/series
===================================================================
--- packages/trunk/kikithebot/debian/patches/series 2008-08-24 20:33:36 UTC (rev 7978)
+++ packages/trunk/kikithebot/debian/patches/series 2008-08-24 21:13:14 UTC (rev 7979)
@@ -14,6 +14,7 @@
dont-leak-menu-objects.patch
look-up-down.patch
turn-and-exit-level.patch
+sdl-set-video-mode.patch
fix-french-translation.patch
fix-dutch-translation.patch
ogg-sound.patch
More information about the Pkg-games-commits
mailing list