From 01a1a084e0181b02fb3370bdbaadab306fe094cb Mon Sep 17 00:00:00 2001 From: Michael Brehm Date: Sun, 13 Jan 2019 22:56:49 -0500 Subject: [PATCH] Check the system capabilities to support sleep states S1/S2/S3/S4 before reporing them as available --- xbmc/platform/win32/powermanagement/Win32PowerSyscall.cpp | 5 +++++ xbmc/platform/win32/powermanagement/Win32PowerSyscall.h | 2 ++ 2 files changed, 7 insertions(+) diff --git a/xbmc/platform/win32/powermanagement/Win32PowerSyscall.cpp b/xbmc/platform/win32/powermanagement/Win32PowerSyscall.cpp index a423384d4ad5b..cf72ac48e8cf6 100644 --- a/xbmc/platform/win32/powermanagement/Win32PowerSyscall.cpp +++ b/xbmc/platform/win32/powermanagement/Win32PowerSyscall.cpp @@ -110,6 +110,7 @@ bool CWin32PowerStateWorker::PowerManagement(PowerState State) CWin32PowerSyscall::CWin32PowerSyscall() { + m_hascapabilities = GetPwrCapabilities(&m_capabilities); m_worker.Create(); } @@ -142,10 +143,14 @@ bool CWin32PowerSyscall::CanPowerdown() } bool CWin32PowerSyscall::CanSuspend() { + if (m_hascapabilities) + return (m_capabilities.SystemS1 == TRUE || m_capabilities.SystemS2 == TRUE || m_capabilities.SystemS3 == TRUE); return true; } bool CWin32PowerSyscall::CanHibernate() { + if (m_hascapabilities) + return (m_capabilities.SystemS4 == TRUE && m_capabilities.HiberFilePresent == TRUE); return true; } bool CWin32PowerSyscall::CanReboot() diff --git a/xbmc/platform/win32/powermanagement/Win32PowerSyscall.h b/xbmc/platform/win32/powermanagement/Win32PowerSyscall.h index cfea7ea5cadc3..8a992c60aaaf2 100644 --- a/xbmc/platform/win32/powermanagement/Win32PowerSyscall.h +++ b/xbmc/platform/win32/powermanagement/Win32PowerSyscall.h @@ -58,6 +58,8 @@ class CWin32PowerSyscall : public CAbstractPowerSyscall static bool IsSuspending() { return m_OnSuspend; } private: + BOOLEAN m_hascapabilities; + SYSTEM_POWER_CAPABILITIES m_capabilities; CWin32PowerStateWorker m_worker; static bool m_OnResume;