=== modified file 'src/VideoDriverWrapper.cpp' --- src/VideoDriverWrapper.cpp 2010-03-24 23:00:29 +0000 +++ src/VideoDriverWrapper.cpp 2010-03-27 14:30:53 +0000 @@ -354,8 +354,8 @@ */ void VideoDriverWrapper::RenewViewport(bool onlyRenew) { - const unsigned short width = GetScreenWidth(); - const unsigned short height = GetScreenHeight(); + const unsigned short width = videodriver->GetScreenWidth(); + const unsigned short height = videodriver->GetScreenHeight(); // Viewport mit widthxheight setzen glViewport(0, 0, width, height); @@ -369,7 +369,7 @@ // 0; 0 soll obere linke Ecke sein glRotated(180,1,0,0); - glTranslated(0,-height,0); + glTranslated(0,-videodriver->GetScreenHeight(),0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); === modified file 'src/VideoDriverWrapper.h' --- src/VideoDriverWrapper.h 2010-03-24 23:00:29 +0000 +++ src/VideoDriverWrapper.h 2010-03-27 14:07:44 +0000 @@ -66,9 +66,9 @@ void * GetWindowPointer() const; unsigned short GetScreenWidth() const - { return videodriver->GetScreenWidth(); } + { const unsigned short w = videodriver->GetScreenWidth(); return (w < 800 ? 800 : w); } unsigned short GetScreenHeight() const - { return videodriver->GetScreenHeight(); } + { const unsigned short h = videodriver->GetScreenHeight(); return (h < 600 ? 600 : h); } bool IsFullscreen() const { return videodriver->IsFullscreen(); } === modified file 'src/WindowManager.cpp' --- src/WindowManager.cpp 2010-03-24 23:00:29 +0000 +++ src/WindowManager.cpp 2010-03-27 14:32:59 +0000 @@ -45,7 +45,7 @@ * @author OLiver */ WindowManager::WindowManager(void) - : desktop(NULL), nextdesktop(NULL), nextdesktop_data(NULL), disable_mouse(false), mc(NULL), screenWidth(0), screenHeight(0), lastScreenWidthSignal(0), lastScreenHeightSignal(0), lastScreenSignalCount(0) + : desktop(NULL), nextdesktop(NULL), nextdesktop_data(NULL), disable_mouse(false), mc(NULL), screenWidth(0), screenHeight(0)//, lastScreenWidthSignal(0), lastScreenHeightSignal(0), lastScreenSignalCount(0) { } @@ -852,6 +852,7 @@ void WindowManager::Msg_KeyDown(const KeyEvent& ke) { +#ifndef _WIN32 if(ke.alt && ke.kt == KT_RETURN) { // Switch Fullscreen/Windowed @@ -860,6 +861,7 @@ !VideoDriverWrapper::inst().IsFullscreen()); } else +#endif RelayKeyboardMessage(&Window::Msg_KeyDown,ke); } @@ -880,14 +882,14 @@ unsigned short newWidth = width; unsigned short newHeight = height; - bool mustResize = false; +// bool mustResize = false; // Minimale Ausdehnung erfüllt? - if(newWidth < 800 || newHeight < 600) - { - mustResize = true; - if(newWidth < 800) newWidth = 800; - if(newHeight < 600) newHeight = 600; - } +// if(newWidth < 800 || newHeight < 600) +// { +// mustResize = true; +// if(newWidth < 800) newWidth = 800; +// if(newHeight < 600) newHeight = 600; +// } // Es kann passieren dass wir versuchen ein 800x600-Fenster zu erstellen, // aber das Betriebssystem es immer wieder verkleinert. Hier sollten wir @@ -900,27 +902,27 @@ // TODO: Dann den Treiber zwingen, ein nicht resizable Fenster zu öffnen // und erst wieder, wenn der Nutzer im Menü nochmal eine Auflösung einstellt, // das Resizen zulassen. - if(width < 800 || height < 600) - if(lastScreenWidthSignal == width) - if(lastScreenHeightSignal == height) - if(lastScreenSignalCount == 500) - { - VideoDriverWrapper::inst().ResizeScreen(width, height, VideoDriverWrapper::inst().IsFullscreen()); - return; - } +// if(width < 800 || height < 600) +// if(lastScreenWidthSignal == width) +// if(lastScreenHeightSignal == height) +// if(lastScreenSignalCount == 500) +// { +// VideoDriverWrapper::inst().ResizeScreen(width, height, VideoDriverWrapper::inst().IsFullscreen()); +// return; +// } // Letzten Wert merken - if(lastScreenWidthSignal == width - && lastScreenHeightSignal == height) - { - ++lastScreenSignalCount; - } - else - { - lastScreenWidthSignal = width; - lastScreenHeightSignal = height; - lastScreenSignalCount = 0; - } +// if(lastScreenWidthSignal == width +// && lastScreenHeightSignal == height) +// { +// ++lastScreenSignalCount; +// } +// else +// { +// lastScreenWidthSignal = width; +// lastScreenHeightSignal = height; +// lastScreenSignalCount = 0; +// } // Und los VideoDriverWrapper::inst().ResizeScreen(newWidth, newHeight, VideoDriverWrapper::inst().IsFullscreen()); @@ -946,8 +948,8 @@ ScreenResizeEvent sr; sr.oldWidth = screenWidth; sr.oldHeight = screenHeight; - sr.newWidth = screenWidth = width; - sr.newHeight = screenHeight = height; + sr.newWidth = screenWidth = (width < 800 ? 800 : width); + sr.newHeight = screenHeight = (height < 600 ? 600 : height); SETTINGS.video.fullscreen = VideoDriverWrapper::inst().IsFullscreen(); // Wenn es absolut nicht anders geht, lassen wir im temporär doch === modified file 'src/WindowManager.h' --- src/WindowManager.h 2010-03-24 23:00:29 +0000 +++ src/WindowManager.h 2010-03-27 14:31:22 +0000 @@ -108,9 +108,9 @@ unsigned short screenHeight; /// letzte gültige Bildschirm-/Fensterhöhe // um Schleifen abzufangen, die entstehen, weil wir mindestens 800x600 haben wollen. - unsigned short lastScreenWidthSignal; - unsigned short lastScreenHeightSignal; - unsigned short lastScreenSignalCount; +// unsigned short lastScreenWidthSignal; +// unsigned short lastScreenHeightSignal; +// unsigned short lastScreenSignalCount; }; #endif // !WINDOWMANAGER_H_INCLUDED === modified file 'src/dskOptions.cpp' --- src/dskOptions.cpp 2010-03-24 23:00:29 +0000 +++ src/dskOptions.cpp 2010-03-27 13:47:24 +0000 @@ -528,6 +528,21 @@ SETTINGS.Save(); // Auflösung/Vollbildmodus geändert? +#ifdef _WIN32 + if((SETTINGS.video.fullscreen_width != VideoDriverWrapper::inst().GetScreenWidth() + || + SETTINGS.video.fullscreen_height != VideoDriverWrapper::inst().GetScreenHeight()) + || SETTINGS.video.fullscreen != VideoDriverWrapper::inst().IsFullscreen()) + { + if(!VideoDriverWrapper::inst().ResizeScreen(SETTINGS.video.fullscreen_width, + SETTINGS.video.fullscreen_height, + SETTINGS.video.fullscreen)) + { + WindowManager::inst().Show(new iwMsgbox(_("Sorry!"), _("You need to restart your game to change the screen resolution!"), this, MSB_OK, MSB_EXCLAMATIONGREEN, 1)); + break; + } + } +#else if((SETTINGS.video.fullscreen && (SETTINGS.video.fullscreen_width != VideoDriverWrapper::inst().GetScreenWidth() || @@ -542,7 +557,7 @@ break; } } - +#endif if(SETTINGS.driver.video != VideoDriverWrapper::inst().GetName() || SETTINGS.driver.audio != AudioDriverWrapper::inst().GetName()) { === modified file 'src/iwSettings.cpp' --- src/iwSettings.cpp 2010-03-24 23:00:29 +0000 +++ src/iwSettings.cpp 2010-03-27 13:49:58 +0000 @@ -109,6 +109,20 @@ SETTINGS.video.fullscreen_height = video_modes[SizeCombo->GetSelection()].height; // Auflösung/Vollbildmodus geändert? +#ifdef _WIN32 + if((SETTINGS.video.fullscreen_width != VideoDriverWrapper::inst().GetScreenWidth() + || + SETTINGS.video.fullscreen_height != VideoDriverWrapper::inst().GetScreenHeight()) + ) || SETTINGS.video.fullscreen != VideoDriverWrapper::inst().IsFullscreen()) + { + if(!VideoDriverWrapper::inst().ResizeScreen(SETTINGS.video.fullscreen_width, + SETTINGS.video.fullscreen_height, + SETTINGS.video.fullscreen)) + { + // WindowManager::inst().Show(new iwMsgbox(_("Sorry!"), _("You need to restart your game to change the screen resolution!"), this, MSB_OK, MSB_EXCLAMATIONGREEN, 1)); + } + } +#else if((SETTINGS.video.fullscreen && (SETTINGS.video.fullscreen_width != VideoDriverWrapper::inst().GetScreenWidth() || @@ -122,6 +136,7 @@ // WindowManager::inst().Show(new iwMsgbox(_("Sorry!"), _("You need to restart your game to change the screen resolution!"), this, MSB_OK, MSB_EXCLAMATIONGREEN, 1)); } } +#endif } ///////////////////////////////////////////////////////////////////////////////