Page MenuHome

SDL2-fullscreen.patch

SDL2-fullscreen.patch

Index: blender/intern/ghost/intern/GHOST_DisplayManagerSDL.cpp
===================================================================
--- blender/intern/ghost/intern/GHOST_DisplayManagerSDL.cpp
+++ blender/intern/ghost/intern/GHOST_DisplayManagerSDL.cpp
@@ -39,7 +39,7 @@ GHOST_DisplayManagerSDL::GHOST_DisplayManagerSDL(GHOST_SystemSDL *system)
GHOST_DisplayManager(),
m_system(system)
{
- /* do nothing */
+ memset(&m_mode, 0, sizeof m_mode);
}
GHOST_TSuccess
@@ -105,6 +105,14 @@ GHOST_DisplayManagerSDL::getCurrentDisplaySetting(GHOST_TUns8 display,
}
GHOST_TSuccess
+GHOST_DisplayManagerSDL::getCurrentDisplayModeSDL(SDL_DisplayMode& mode) const
+{
+ mode = m_mode;
+ return GHOST_kSuccess;
+}
+
+
+GHOST_TSuccess
GHOST_DisplayManagerSDL:: setCurrentDisplaySetting(GHOST_TUns8 display,
const GHOST_DisplaySetting& setting)
{
@@ -151,6 +159,8 @@ GHOST_DisplayManagerSDL:: setCurrentDisplaySetting(GHOST_TUns8 display,
SDL_GetDisplayMode(display, best_fit, &mode);
}
+ m_mode = mode;
+
/* evil, SDL2 needs a window to adjust display modes */
GHOST_WindowSDL *win = (GHOST_WindowSDL *)m_system->getWindowManager()->getActiveWindow();
@@ -168,6 +178,8 @@ GHOST_DisplayManagerSDL:: setCurrentDisplaySetting(GHOST_TUns8 display,
/* this is a problem for the BGE player :S, perhaps SDL2 will resolve at some point.
* we really need SDL_SetDisplayModeForDisplay() to become an API func! - campbell */
printf("no windows available, cant fullscreen");
- return GHOST_kFailure;
+
+ /* do not fail, we will try again later after the window be created - wander */
+ return GHOST_kSuccess;
}
}
Index: blender/intern/ghost/intern/GHOST_DisplayManagerSDL.h
===================================================================
--- blender/intern/ghost/intern/GHOST_DisplayManagerSDL.h
+++ blender/intern/ghost/intern/GHOST_DisplayManagerSDL.h
@@ -65,8 +65,12 @@ public:
setCurrentDisplaySetting(GHOST_TUns8 display,
const GHOST_DisplaySetting& setting);
+ GHOST_TSuccess
+ getCurrentDisplayModeSDL(SDL_DisplayMode &mode) const;
+
private :
GHOST_SystemSDL * m_system;
+ SDL_DisplayMode m_mode;
};
#endif /* __GHOST_DISPLAYMANAGERSDL_H__ */
Index: blender/intern/ghost/intern/GHOST_SystemSDL.cpp
===================================================================
--- blender/intern/ghost/intern/GHOST_SystemSDL.cpp
+++ blender/intern/ghost/intern/GHOST_SystemSDL.cpp
@@ -76,6 +76,17 @@ GHOST_SystemSDL::createWindow(const STR_String& title,
window= new GHOST_WindowSDL (this, title, left, top, width, height, state, parentWindow, type, stereoVisual, 1);
if (window) {
+ if (GHOST_kWindowStateFullScreen == state) {
+ SDL_Window *sdl_win = window->getSDLWindow();
+ SDL_DisplayMode mode;
+
+ static_cast<GHOST_DisplayManagerSDL *> (m_displayManager)->getCurrentDisplayModeSDL(mode);
+
+ SDL_SetWindowDisplayMode(sdl_win, &mode);
+ SDL_ShowWindow(sdl_win);
+ SDL_SetWindowFullscreen(sdl_win, SDL_TRUE);
+ }
+
if (window->getValid()) {
m_windowManager->addWindow(window);
pushEvent(new GHOST_Event(getMilliSeconds(), GHOST_kEventWindowSize, window));

File Metadata

Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
25/ef/be04c5802a73e70dd3c270f924fd

Event Timeline