[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45091] trunk/blender/intern/ghost/intern: patch [#30636] Enable full screen mode with SDL2
Campbell Barton
ideasman42 at gmail.com
Thu Mar 22 19:48:03 CET 2012
Revision: 45091
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45091
Author: campbellbarton
Date: 2012-03-22 18:47:52 +0000 (Thu, 22 Mar 2012)
Log Message:
-----------
patch [#30636] Enable full screen mode with SDL2
from Wander Costa (walac)
Modified Paths:
--------------
trunk/blender/intern/ghost/intern/GHOST_DisplayManagerSDL.cpp
trunk/blender/intern/ghost/intern/GHOST_DisplayManagerSDL.h
trunk/blender/intern/ghost/intern/GHOST_SystemSDL.cpp
Modified: trunk/blender/intern/ghost/intern/GHOST_DisplayManagerSDL.cpp
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_DisplayManagerSDL.cpp 2012-03-22 17:27:37 UTC (rev 45090)
+++ trunk/blender/intern/ghost/intern/GHOST_DisplayManagerSDL.cpp 2012-03-22 18:47:52 UTC (rev 45091)
@@ -39,7 +39,7 @@
GHOST_DisplayManager(),
m_system(system)
{
- /* do nothing */
+ memset(&m_mode, 0, sizeof m_mode);
}
GHOST_TSuccess
@@ -105,6 +105,13 @@
}
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 +158,8 @@
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 +177,8 @@
/* 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 when the window is created - wander */
+ return GHOST_kSuccess;
}
}
Modified: trunk/blender/intern/ghost/intern/GHOST_DisplayManagerSDL.h
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_DisplayManagerSDL.h 2012-03-22 17:27:37 UTC (rev 45090)
+++ trunk/blender/intern/ghost/intern/GHOST_DisplayManagerSDL.h 2012-03-22 18:47:52 UTC (rev 45091)
@@ -62,11 +62,15 @@
GHOST_DisplaySetting& setting) const;
GHOST_TSuccess
+ getCurrentDisplayModeSDL(SDL_DisplayMode &mode) const;
+
+ GHOST_TSuccess
setCurrentDisplaySetting(GHOST_TUns8 display,
const GHOST_DisplaySetting& setting);
private :
GHOST_SystemSDL * m_system;
+ SDL_DisplayMode m_mode;
};
#endif /* __GHOST_DISPLAYMANAGERSDL_H__ */
Modified: trunk/blender/intern/ghost/intern/GHOST_SystemSDL.cpp
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_SystemSDL.cpp 2012-03-22 17:27:37 UTC (rev 45090)
+++ trunk/blender/intern/ghost/intern/GHOST_SystemSDL.cpp 2012-03-22 18:47:52 UTC (rev 45091)
@@ -76,6 +76,17 @@
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));
More information about the Bf-blender-cvs
mailing list