aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Marshall <jmarshall@never.you.mind>2011-06-26 18:08:35 +1200
committerJonathan Marshall <jmarshall@never.you.mind>2011-06-27 10:43:52 +1200
commitd77b13a86d1fed9e9993c23af3f9ad2274c9f96f (patch)
treefba457e78643a535a46096927ad0019844e8f3d2
parent37d78498970dad89ee81a9a4f25a6e5f10a00485 (diff)
move dim/black screensaver to the windowmanager
-rw-r--r--XBMC-ATV2.xcodeproj/project.pbxproj6
-rw-r--r--XBMC-IOS.xcodeproj/project.pbxproj6
-rw-r--r--XBMC.xcodeproj/project.pbxproj8
-rw-r--r--project/VS2010Express/XBMC.vcxproj4
-rw-r--r--project/VS2010Express/XBMC.vcxproj.filters8
-rw-r--r--xbmc/Application.cpp61
-rw-r--r--xbmc/Application.h3
-rw-r--r--xbmc/windows/GUIWindowDebugInfo.cpp2
-rw-r--r--xbmc/windows/GUIWindowPointer.cpp4
-rw-r--r--xbmc/windows/GUIWindowScreensaverDim.cpp72
-rw-r--r--xbmc/windows/GUIWindowScreensaverDim.h38
-rw-r--r--xbmc/windows/Makefile1
12 files changed, 157 insertions, 56 deletions
diff --git a/XBMC-ATV2.xcodeproj/project.pbxproj b/XBMC-ATV2.xcodeproj/project.pbxproj
index 1314340212..fe947b777e 100644
--- a/XBMC-ATV2.xcodeproj/project.pbxproj
+++ b/XBMC-ATV2.xcodeproj/project.pbxproj
@@ -19,6 +19,7 @@
7C0A7FC813A9E75400AFC2BD /* DirtyRegionSolvers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C0A7FC413A9E75400AFC2BD /* DirtyRegionSolvers.cpp */; };
7C0A7FC913A9E75400AFC2BD /* DirtyRegionTracker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C0A7FC613A9E75400AFC2BD /* DirtyRegionTracker.cpp */; };
7C0A7FCC13A9E76E00AFC2BD /* GUIWindowDebugInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C0A7FCA13A9E76E00AFC2BD /* GUIWindowDebugInfo.cpp */; };
+ 7C89627013B702F3003631FE /* GUIWindowScreensaverDim.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C89626E13B702F3003631FE /* GUIWindowScreensaverDim.cpp */; };
7C99B73F133D372300FC2B16 /* CacheCircular.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C99B73D133D372300FC2B16 /* CacheCircular.cpp */; };
7C99B7AA134072CD00FC2B16 /* GUIDialogPlayEject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C99B7A8134072CD00FC2B16 /* GUIDialogPlayEject.cpp */; };
C807119F135DB842002F601B /* InputOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C807119D135DB842002F601B /* InputOperations.cpp */; };
@@ -942,6 +943,8 @@
7C0A7FC713A9E75400AFC2BD /* DirtyRegionTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirtyRegionTracker.h; sourceTree = "<group>"; };
7C0A7FCA13A9E76E00AFC2BD /* GUIWindowDebugInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GUIWindowDebugInfo.cpp; sourceTree = "<group>"; };
7C0A7FCB13A9E76E00AFC2BD /* GUIWindowDebugInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GUIWindowDebugInfo.h; sourceTree = "<group>"; };
+ 7C89626E13B702F3003631FE /* GUIWindowScreensaverDim.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GUIWindowScreensaverDim.cpp; sourceTree = "<group>"; };
+ 7C89626F13B702F3003631FE /* GUIWindowScreensaverDim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GUIWindowScreensaverDim.h; sourceTree = "<group>"; };
7C99B73D133D372300FC2B16 /* CacheCircular.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CacheCircular.cpp; sourceTree = "<group>"; };
7C99B73E133D372300FC2B16 /* CacheCircular.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CacheCircular.h; sourceTree = "<group>"; };
7C99B7A8134072CD00FC2B16 /* GUIDialogPlayEject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GUIDialogPlayEject.cpp; sourceTree = "<group>"; };
@@ -5219,6 +5222,8 @@
F56C77C2131EC154000AD0F6 /* GUIWindowPointer.h */,
F56C77C3131EC154000AD0F6 /* GUIWindowScreensaver.cpp */,
F56C77C4131EC154000AD0F6 /* GUIWindowScreensaver.h */,
+ 7C89626E13B702F3003631FE /* GUIWindowScreensaverDim.cpp */,
+ 7C89626F13B702F3003631FE /* GUIWindowScreensaverDim.h */,
F56C77C5131EC154000AD0F6 /* GUIWindowStartup.cpp */,
F56C77C6131EC154000AD0F6 /* GUIWindowStartup.h */,
F56C77C7131EC154000AD0F6 /* GUIWindowSystemInfo.cpp */,
@@ -6688,6 +6693,7 @@
DF0DF16C13A3AF82008ED511 /* FileNFS.cpp in Sources */,
DF0DF16D13A3AF82008ED511 /* NFSDirectory.cpp in Sources */,
F558F66F13AFE81500631E12 /* ThreadLocal.cpp in Sources */,
+ 7C89627013B702F3003631FE /* GUIWindowScreensaverDim.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/XBMC-IOS.xcodeproj/project.pbxproj b/XBMC-IOS.xcodeproj/project.pbxproj
index 53d0c7336f..e73320a4d2 100644
--- a/XBMC-IOS.xcodeproj/project.pbxproj
+++ b/XBMC-IOS.xcodeproj/project.pbxproj
@@ -20,6 +20,7 @@
7C0A7F9D13A9E70800AFC2BD /* GUIWindowDebugInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C0A7F9B13A9E70800AFC2BD /* GUIWindowDebugInfo.cpp */; };
7C0A7FB213A9E72E00AFC2BD /* DirtyRegionSolvers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C0A7FAE13A9E72E00AFC2BD /* DirtyRegionSolvers.cpp */; };
7C0A7FB313A9E72E00AFC2BD /* DirtyRegionTracker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C0A7FB013A9E72E00AFC2BD /* DirtyRegionTracker.cpp */; };
+ 7C89628013B7031E003631FE /* GUIWindowScreensaverDim.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C89627E13B7031E003631FE /* GUIWindowScreensaverDim.cpp */; };
7C99B6E9133D36E200FC2B16 /* CacheCircular.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C99B6E7133D36E200FC2B16 /* CacheCircular.cpp */; };
7C99B7BE1340730000FC2B16 /* GUIDialogPlayEject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C99B7BC1340730000FC2B16 /* GUIDialogPlayEject.cpp */; };
C80711AD135DB85F002F601B /* InputOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C80711AB135DB85F002F601B /* InputOperations.cpp */; };
@@ -943,6 +944,8 @@
7C0A7FAF13A9E72E00AFC2BD /* DirtyRegionSolvers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirtyRegionSolvers.h; sourceTree = "<group>"; };
7C0A7FB013A9E72E00AFC2BD /* DirtyRegionTracker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DirtyRegionTracker.cpp; sourceTree = "<group>"; };
7C0A7FB113A9E72E00AFC2BD /* DirtyRegionTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirtyRegionTracker.h; sourceTree = "<group>"; };
+ 7C89627E13B7031E003631FE /* GUIWindowScreensaverDim.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GUIWindowScreensaverDim.cpp; sourceTree = "<group>"; };
+ 7C89627F13B7031E003631FE /* GUIWindowScreensaverDim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GUIWindowScreensaverDim.h; sourceTree = "<group>"; };
7C99B6E7133D36E200FC2B16 /* CacheCircular.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CacheCircular.cpp; sourceTree = "<group>"; };
7C99B6E8133D36E200FC2B16 /* CacheCircular.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CacheCircular.h; sourceTree = "<group>"; };
7C99B7BC1340730000FC2B16 /* GUIDialogPlayEject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GUIDialogPlayEject.cpp; sourceTree = "<group>"; };
@@ -5587,6 +5590,8 @@
F56C87AF131F42EC000AD0F6 /* GUIWindowPointer.h */,
F56C87B0131F42EC000AD0F6 /* GUIWindowScreensaver.cpp */,
F56C87B1131F42EC000AD0F6 /* GUIWindowScreensaver.h */,
+ 7C89627E13B7031E003631FE /* GUIWindowScreensaverDim.cpp */,
+ 7C89627F13B7031E003631FE /* GUIWindowScreensaverDim.h */,
F56C87B2131F42EC000AD0F6 /* GUIWindowStartup.cpp */,
F56C87B3131F42EC000AD0F6 /* GUIWindowStartup.h */,
F56C87B4131F42EC000AD0F6 /* GUIWindowSystemInfo.cpp */,
@@ -6703,6 +6708,7 @@
DF0DF17F13A3AF9F008ED511 /* FileNFS.cpp in Sources */,
DF0DF18013A3AF9F008ED511 /* NFSDirectory.cpp in Sources */,
F558F61113AFDC3000631E12 /* ThreadLocal.cpp in Sources */,
+ 7C89628013B7031E003631FE /* GUIWindowScreensaverDim.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/XBMC.xcodeproj/project.pbxproj b/XBMC.xcodeproj/project.pbxproj
index 9fd0d6bcc6..94287562df 100644
--- a/XBMC.xcodeproj/project.pbxproj
+++ b/XBMC.xcodeproj/project.pbxproj
@@ -534,6 +534,8 @@
7C7B2B311134F36400713D6D /* mysqldataset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7B2B2E1134F36400713D6D /* mysqldataset.cpp */; };
7C84A59E12FA3C1600CD1714 /* SourcesDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C84A59C12FA3C1600CD1714 /* SourcesDirectory.cpp */; };
7C84A59F12FA3C1600CD1714 /* SourcesDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C84A59C12FA3C1600CD1714 /* SourcesDirectory.cpp */; };
+ 7C89619213B6A16F003631FE /* GUIWindowScreensaverDim.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C89619013B6A16F003631FE /* GUIWindowScreensaverDim.cpp */; };
+ 7C89619313B6A16F003631FE /* GUIWindowScreensaverDim.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C89619013B6A16F003631FE /* GUIWindowScreensaverDim.cpp */; };
7C8A14561154CB2600E5FCFA /* TextureCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C8A14541154CB2600E5FCFA /* TextureCache.cpp */; };
7C8A14571154CB2600E5FCFA /* TextureCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C8A14541154CB2600E5FCFA /* TextureCache.cpp */; };
7C8A187C115B2A8200E5FCFA /* TextureDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C8A187A115B2A8200E5FCFA /* TextureDatabase.cpp */; };
@@ -2413,6 +2415,8 @@
7C7B2B2F1134F36400713D6D /* mysqldataset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mysqldataset.h; sourceTree = "<group>"; };
7C84A59C12FA3C1600CD1714 /* SourcesDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SourcesDirectory.cpp; path = xbmc/filesystem/SourcesDirectory.cpp; sourceTree = SOURCE_ROOT; };
7C84A59D12FA3C1600CD1714 /* SourcesDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SourcesDirectory.h; path = xbmc/filesystem/SourcesDirectory.h; sourceTree = SOURCE_ROOT; };
+ 7C89619013B6A16F003631FE /* GUIWindowScreensaverDim.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GUIWindowScreensaverDim.cpp; sourceTree = "<group>"; };
+ 7C89619113B6A16F003631FE /* GUIWindowScreensaverDim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GUIWindowScreensaverDim.h; sourceTree = "<group>"; };
7C8A14541154CB2600E5FCFA /* TextureCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextureCache.cpp; sourceTree = "<group>"; };
7C8A14551154CB2600E5FCFA /* TextureCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureCache.h; sourceTree = "<group>"; };
7C8A187A115B2A8200E5FCFA /* TextureDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextureDatabase.cpp; sourceTree = "<group>"; };
@@ -4675,6 +4679,8 @@
E38E18220D25F9FA00618676 /* GUIWindowPointer.h */,
E38E18250D25F9FA00618676 /* GUIWindowScreensaver.cpp */,
E38E18260D25F9FA00618676 /* GUIWindowScreensaver.h */,
+ 7C89619013B6A16F003631FE /* GUIWindowScreensaverDim.cpp */,
+ 7C89619113B6A16F003631FE /* GUIWindowScreensaverDim.h */,
E38E18370D25F9FA00618676 /* GUIWindowStartup.cpp */,
E38E18380D25F9FA00618676 /* GUIWindowStartup.h */,
E38E18390D25F9FA00618676 /* GUIWindowSystemInfo.cpp */,
@@ -8033,6 +8039,7 @@
DF0DF15B13A3ADA7008ED511 /* FileNFS.cpp in Sources */,
DF0DF15C13A3ADA7008ED511 /* NFSDirectory.cpp in Sources */,
F558F51E13AF03AD00631E12 /* ThreadLocal.cpp in Sources */,
+ 7C89619213B6A16F003631FE /* GUIWindowScreensaverDim.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -8923,6 +8930,7 @@
F558F3D013AE663300631E12 /* FileNFS.cpp in Sources */,
F558F3D113AE663A00631E12 /* NFSDirectory.cpp in Sources */,
F558F51F13AF03AD00631E12 /* ThreadLocal.cpp in Sources */,
+ 7C89619313B6A16F003631FE /* GUIWindowScreensaverDim.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/project/VS2010Express/XBMC.vcxproj b/project/VS2010Express/XBMC.vcxproj
index f052425b31..d8e0a9604a 100644
--- a/project/VS2010Express/XBMC.vcxproj
+++ b/project/VS2010Express/XBMC.vcxproj
@@ -1151,6 +1151,7 @@
<ClCompile Include="..\..\xbmc\windows\GUIWindowLoginScreen.cpp" />
<ClCompile Include="..\..\xbmc\windows\GUIWindowPointer.cpp" />
<ClCompile Include="..\..\xbmc\windows\GUIWindowScreensaver.cpp" />
+ <ClCompile Include="..\..\xbmc\windows\GUIWindowScreensaverDim.cpp" />
<ClCompile Include="..\..\xbmc\windows\GUIWindowStartup.cpp" />
<ClCompile Include="..\..\xbmc\windows\GUIWindowSystemInfo.cpp" />
<ClCompile Include="..\..\xbmc\windows\GUIWindowWeather.cpp" />
@@ -1991,6 +1992,7 @@
<ClInclude Include="..\..\xbmc\windows\GUIWindowLoginScreen.h" />
<ClInclude Include="..\..\xbmc\windows\GUIWindowPointer.h" />
<ClInclude Include="..\..\xbmc\windows\GUIWindowScreensaver.h" />
+ <ClInclude Include="..\..\xbmc\windows\GUIWindowScreensaverDim.h" />
<ClInclude Include="..\..\xbmc\windows\GUIWindowStartup.h" />
<ClInclude Include="..\..\xbmc\windows\GUIWindowSystemInfo.h" />
<ClInclude Include="..\..\xbmc\windows\GUIWindowWeather.h" />
@@ -2053,4 +2055,4 @@
</VisualStudio>
</ProjectExtensions>
<Import Project="$(SolutionDir)\$(ProjectFileName).targets.user" Condition="Exists('$(SolutionDir)\$(ProjectFileName).targets.user')" />
-</Project> \ No newline at end of file
+</Project>
diff --git a/project/VS2010Express/XBMC.vcxproj.filters b/project/VS2010Express/XBMC.vcxproj.filters
index 7aaf2ad10d..f07d4de2bd 100644
--- a/project/VS2010Express/XBMC.vcxproj.filters
+++ b/project/VS2010Express/XBMC.vcxproj.filters
@@ -2222,6 +2222,9 @@
<ClCompile Include="..\..\xbmc\windows\GUIWindowScreensaver.cpp">
<Filter>windows</Filter>
</ClCompile>
+ <ClCompile Include="..\..\xbmc\windows\GUIWindowScreensaverDim.cpp">
+ <Filter>windows</Filter>
+ </ClCompile>
<ClCompile Include="..\..\xbmc\windows\GUIWindowStartup.cpp">
<Filter>windows</Filter>
</ClCompile>
@@ -4684,6 +4687,9 @@
<ClInclude Include="..\..\xbmc\windows\GUIWindowScreensaver.h">
<Filter>windows</Filter>
</ClInclude>
+ <ClInclude Include="..\..\xbmc\windows\GUIWindowScreensaverDim.h">
+ <Filter>windows</Filter>
+ </ClInclude>
<ClInclude Include="..\..\xbmc\windows\GUIWindowStartup.h">
<Filter>windows</Filter>
</ClInclude>
@@ -4956,4 +4962,4 @@
<Filter>win32</Filter>
</CustomBuild>
</ItemGroup>
-</Project> \ No newline at end of file
+</Project>
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
index 7113cc738a..36763e6b77 100644
--- a/xbmc/Application.cpp
+++ b/xbmc/Application.cpp
@@ -174,6 +174,7 @@
#include "windows/GUIWindowPointer.h"
#include "windows/GUIWindowSystemInfo.h"
#include "windows/GUIWindowScreensaver.h"
+#include "windows/GUIWindowScreensaverDim.h"
#include "pictures/GUIWindowSlideShow.h"
#include "windows/GUIWindowStartup.h"
#include "video/windows/GUIWindowFullScreen.h"
@@ -1054,6 +1055,7 @@ bool CApplication::Initialize()
g_windowManager.Add(new CGUIWindowLoginScreen); // window id = 29
g_windowManager.Add(new CGUIWindowSettingsProfile); // window id = 34
g_windowManager.Add(new CGUIWindowAddonBrowser); // window id = 40
+ g_windowManager.Add(new CGUIWindowScreensaverDim); // window id = 97
g_windowManager.Add(new CGUIWindowDebugInfo); // window id = 98
g_windowManager.Add(new CGUIWindowPointer); // window id = 99
g_windowManager.Add(new CGUIDialogYesNo); // window id = 100
@@ -1855,60 +1857,21 @@ bool CApplication::RenderNoPresent()
}
}
- // reset image scaling and effect states
- g_graphicsContext.SetRenderingResolution(g_graphicsContext.GetResInfo(), false);
-
- RenderScreenSaver();
-
g_graphicsContext.Unlock();
return hasRendered;
}
-static int screenSaverFadeAmount = 0;
-
-void CApplication::RenderScreenSaver()
+float CApplication::GetDimScreenSaverLevel() const
{
- if (!m_screenSaver)
- return;
-
- if (m_screenSaver->ID() != "screensaver.xbmc.builtin.dim" &&
- m_screenSaver->ID() != "screensaver.xbmc.builtin.black" &&
- m_screenSaver->ID() != "screensaver.xbmc.builtin.slideshow")
- return; // nothing to do
+ if (!m_bScreenSave || !m_screenSaver ||
+ (m_screenSaver->ID() != "screensaver.xbmc.builtin.dim" &&
+ m_screenSaver->ID() != "screensaver.xbmc.builtin.black"))
+ return 0;
- float amount = 1.0f;
if (!m_screenSaver->GetSetting("level").IsEmpty())
- amount = 1.0f - 0.01f * (float)atof(m_screenSaver->GetSetting("level"));
-
- // special case for dim screensaver
- bool draw = false;
- if (amount > 0.f)
- {
- if (m_bScreenSave)
- {
- draw = true;
- if (screenSaverFadeAmount < 100)
- {
- screenSaverFadeAmount = std::min(100, screenSaverFadeAmount + 2); // around a second to fade
- }
- }
- else
- {
- if (screenSaverFadeAmount > 0)
- {
- draw = true;
- screenSaverFadeAmount = std::max(0, screenSaverFadeAmount - 4); // around a half second to unfade
- }
- }
- }
- if (draw)
- {
- color_t color = ((color_t)(screenSaverFadeAmount * amount * 2.55f) & 0xff) << 24;
- CRect rect(0, 0, (float)g_graphicsContext.GetWidth(), (float)g_graphicsContext.GetHeight());
- g_windowManager.MarkDirty();
- CGUITexture::DrawQuad(rect, color);
- }
+ return 100.0f - (float)atof(m_screenSaver->GetSetting("level"));
+ return 100.0f;
}
bool CApplication::WaitFrame(unsigned int timeout)
@@ -1983,10 +1946,8 @@ void CApplication::Render()
unsigned int singleFrameTime = 10; // default limit 100 fps
{
- // Less fps in DPMS or Black screensaver
- bool lowfps = (m_dpmsIsActive
- || (m_bScreenSave && m_screenSaver && (m_screenSaver->ID() == "screensaver.xbmc.builtin.black")
- && (screenSaverFadeAmount >= 100)));
+ // Less fps in DPMS
+ bool lowfps = m_dpmsIsActive;
// Whether externalplayer is playing and we're unfocused
bool extPlayerActive = m_eCurrentPlayer >= EPC_EXTPLAYER && IsPlaying() && !m_AppFocused;
diff --git a/xbmc/Application.h b/xbmc/Application.h
index e645ab5d58..3482e2378f 100644
--- a/xbmc/Application.h
+++ b/xbmc/Application.h
@@ -288,8 +288,9 @@ public:
void Minimize();
bool ToggleDPMS(bool manual);
+
+ float GetDimScreenSaverLevel() const;
protected:
- void RenderScreenSaver();
bool LoadSkin(const CStdString& skinID);
void LoadSkin(const boost::shared_ptr<ADDON::CSkinInfo>& skin);
diff --git a/xbmc/windows/GUIWindowDebugInfo.cpp b/xbmc/windows/GUIWindowDebugInfo.cpp
index ecdee49ea9..53b334cb05 100644
--- a/xbmc/windows/GUIWindowDebugInfo.cpp
+++ b/xbmc/windows/GUIWindowDebugInfo.cpp
@@ -40,7 +40,7 @@ CGUIWindowDebugInfo::CGUIWindowDebugInfo(void)
m_loadOnDemand = false;
m_needsScaling = false;
m_layout = NULL;
- m_renderOrder = INT_MAX - 1;
+ m_renderOrder = INT_MAX - 2;
}
CGUIWindowDebugInfo::~CGUIWindowDebugInfo(void)
diff --git a/xbmc/windows/GUIWindowPointer.cpp b/xbmc/windows/GUIWindowPointer.cpp
index 70ae98af87..bbbb936b0a 100644
--- a/xbmc/windows/GUIWindowPointer.cpp
+++ b/xbmc/windows/GUIWindowPointer.cpp
@@ -31,7 +31,7 @@ CGUIWindowPointer::CGUIWindowPointer(void)
m_loadOnDemand = false;
m_needsScaling = false;
m_active = false;
- m_renderOrder = INT_MAX;
+ m_renderOrder = INT_MAX - 1;
}
CGUIWindowPointer::~CGUIWindowPointer(void)
@@ -72,7 +72,7 @@ void CGUIWindowPointer::OnWindowLoaded()
CGUIWindow::OnWindowLoaded();
DynamicResourceAlloc(false);
m_pointer = 0;
- m_renderOrder = INT_MAX;
+ m_renderOrder = INT_MAX - 1;
}
void CGUIWindowPointer::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions)
diff --git a/xbmc/windows/GUIWindowScreensaverDim.cpp b/xbmc/windows/GUIWindowScreensaverDim.cpp
new file mode 100644
index 0000000000..2ce3427b00
--- /dev/null
+++ b/xbmc/windows/GUIWindowScreensaverDim.cpp
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2005-2011 Team XBMC
+ * http://www.xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, write to
+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ */
+
+#include "GUIWindowScreensaverDim.h"
+#include "guilib/GraphicContext.h"
+#include "guilib/GUITexture.h"
+#include "Application.h"
+#include <climits>
+
+CGUIWindowScreensaverDim::CGUIWindowScreensaverDim(void)
+ : CGUIDialog(97, "")
+{
+ m_loadOnDemand = false;
+ m_needsScaling = false;
+ m_dimLevel = 100.0f;
+ m_animations.push_back(CAnimation::CreateFader(0, 100, 0, 1000, ANIM_TYPE_WINDOW_OPEN));
+ m_animations.push_back(CAnimation::CreateFader(100, 0, 0, 1000, ANIM_TYPE_WINDOW_CLOSE));
+ m_renderOrder = INT_MAX;
+}
+
+CGUIWindowScreensaverDim::~CGUIWindowScreensaverDim(void)
+{
+}
+
+void CGUIWindowScreensaverDim::UpdateVisibility()
+{
+ float level = g_application.GetDimScreenSaverLevel();
+ if (level)
+ {
+ m_dimLevel = level;
+ Show();
+ }
+ else
+ Close();
+}
+
+void CGUIWindowScreensaverDim::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions)
+{
+ CGUIDialog::Process(currentTime, dirtyregions);
+ m_renderRegion.SetRect(0, 0, g_graphicsContext.GetWidth(), g_graphicsContext.GetHeight());
+}
+
+void CGUIWindowScreensaverDim::Render()
+{
+ g_graphicsContext.SetRenderingResolution(g_graphicsContext.GetResInfo(), false);
+ g_graphicsContext.SetTransform(m_cachedTransform);
+ // draw a translucent black quad - fading is handled by the window animation
+ color_t color = ((color_t)(m_dimLevel * 2.55f) & 0xff) << 24;
+ color = g_graphicsContext.MergeAlpha(color);
+ CRect rect(0, 0, (float)g_graphicsContext.GetWidth(), (float)g_graphicsContext.GetHeight());
+ CGUITexture::DrawQuad(rect, color);
+ g_graphicsContext.RemoveTransform();
+ CGUIDialog::Render();
+}
diff --git a/xbmc/windows/GUIWindowScreensaverDim.h b/xbmc/windows/GUIWindowScreensaverDim.h
new file mode 100644
index 0000000000..4c6a079d17
--- /dev/null
+++ b/xbmc/windows/GUIWindowScreensaverDim.h
@@ -0,0 +1,38 @@
+#pragma once
+
+/*
+ * Copyright (C) 2005-2011 Team XBMC
+ * http://www.xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, write to
+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ */
+
+#include "guilib/GUIDialog.h"
+
+class CGUIWindowScreensaverDim :
+ public CGUIDialog
+{
+public:
+ CGUIWindowScreensaverDim();
+ virtual ~CGUIWindowScreensaverDim();
+ virtual void Process(unsigned int currentTime, CDirtyRegionList &dirtyregions);
+ virtual void Render();
+protected:
+ virtual void UpdateVisibility();
+private:
+ float m_dimLevel;
+};
diff --git a/xbmc/windows/Makefile b/xbmc/windows/Makefile
index 6d750c3771..059f24abb2 100644
--- a/xbmc/windows/Makefile
+++ b/xbmc/windows/Makefile
@@ -5,6 +5,7 @@ SRCS=GUIMediaWindow.cpp \
GUIWindowLoginScreen.cpp \
GUIWindowPointer.cpp \
GUIWindowScreensaver.cpp \
+ GUIWindowScreensaverDim.cpp \
GUIWindowStartup.cpp \
GUIWindowSystemInfo.cpp \
GUIWindowWeather.cpp \