Code:
diff -r -u xbmc/XBMC/guilib/GUIWindowManager.cpp xbmc_sf/XBMC/guilib/GUIWindowManager.cpp
--- xbmc/XBMC/guilib/GUIWindowManager.cpp 2009-04-02 12:41:37.000000000 +0200
+++ xbmc_sf/XBMC/guilib/GUIWindowManager.cpp 2009-04-02 11:39:59.000000000 +0200
@@ -220,6 +220,9 @@
void CGUIWindowManager::PreviousWindow()
{
+ BOOL safeFull = false;
+ if (g_guiSettings.GetBool("videoscreen.safefull"))
+ safeFull = true;
// deactivate any window
CLog::Log(LOGDEBUG,"CGUIWindowManager::PreviousWindow: Deactivate");
DWORD currentWindow = GetActiveWindow();
@@ -270,7 +273,7 @@
HideOverlay(pNewWindow->GetOverlayState());
// deinitialize our window
- g_audioManager.PlayWindowSound(pCurrentWindow->GetID(), SOUND_DEINIT);
+ if (!safeFull) g_audioManager.PlayWindowSound(pCurrentWindow->GetID(), SOUND_DEINIT);
CGUIMessage msg(GUI_MSG_WINDOW_DEINIT, 0, 0);
pCurrentWindow->OnMessage(msg);
@@ -282,10 +285,10 @@
// ok, initialize the new window
CLog::Log(LOGDEBUG,"CGUIWindowManager::PreviousWindow: Activate new");
- g_audioManager.PlayWindowSound(pNewWindow->GetID(), SOUND_INIT);
+ if (!safeFull) g_audioManager.PlayWindowSound(pNewWindow->GetID(), SOUND_INIT);
CGUIMessage msg2(GUI_MSG_WINDOW_INIT, 0, 0, WINDOW_INVALID, GetActiveWindow());
pNewWindow->OnMessage(msg2);
-
+ if (safeFull) g_graphicsContext.SetFullScreenRoot(true);
g_infoManager.SetPreviousWindow(WINDOW_INVALID);
return;
}
diff -r -u xbmc/XBMC/language/English/strings.xml xbmc_sf/XBMC/language/English/strings.xml
--- xbmc/XBMC/language/English/strings.xml 2009-04-02 12:34:29.000000000 +0200
+++ xbmc_sf/XBMC/language/English/strings.xml 2009-04-02 11:16:14.000000000 +0200
@@ -993,6 +993,8 @@
<string id="13119">Sinc</string>
<string id="13120">Strict Pixmap-Texture Binding (requires restart)</string>
+
+ <string id="13121">Safe fullscreen mode</string>
<string id="13130">Display blanking</string>
<string id="13131">Disabled</string>
diff -r -u xbmc/XBMC/xbmc/Application.cpp xbmc_sf/XBMC/xbmc/Application.cpp
--- xbmc/XBMC/xbmc/Application.cpp 2009-04-02 12:40:34.000000000 +0200
+++ xbmc_sf/XBMC/xbmc/Application.cpp 2009-04-02 11:20:12.000000000 +0200
@@ -834,6 +834,7 @@
#endif
// set GUI res and force the clear of the screen
+ if (g_guiSettings.GetBool("videoscreen.safefull"))
g_guiSettings.m_LookAndFeelResolution = AUTORES;
g_graphicsContext.SetVideoResolution(g_guiSettings.m_LookAndFeelResolution, TRUE, true);
// initialize our charset converter
@@ -906,6 +907,8 @@
time(&seconds);
srand((unsigned int)seconds);
+ if (g_guiSettings.GetBool("videoscreen.safefull"))
+ g_graphicsContext.ToggleFullScreenRoot();
return CXBApplicationEx::Create(hWnd);
}
diff -r -u xbmc/XBMC/xbmc/GUISettings.cpp xbmc_sf/XBMC/xbmc/GUISettings.cpp
--- xbmc/XBMC/xbmc/GUISettings.cpp 2009-04-02 12:40:34.000000000 +0200
+++ xbmc_sf/XBMC/xbmc/GUISettings.cpp 2009-04-02 11:22:37.000000000 +0200
@@ -633,6 +633,7 @@
AddString(3, "videoscreen.guicalibration",214,"", BUTTON_CONTROL_STANDARD);
AddString(4, "videoscreen.testpattern",226,"", BUTTON_CONTROL_STANDARD);
AddInt(6, "videoscreen.vsync", 13105, DEFAULT_VSYNC, VSYNC_DISABLED, 1, VSYNC_DRIVER, SPIN_CONTROL_TEXT);
+ AddBool(7, "videoscreen.safefull", 13121, false);
AddCategory(7, "filelists", 14018);
AddBool(1, "filelists.hideparentdiritems", 13306, false);