Altered how initialization of the properties is done with UPower, also made them...
authortopfs2 <topfs2@svn>
Fri, 7 May 2010 22:26:30 +0000 (22:26 +0000)
committertopfs2 <topfs2@svn>
Fri, 7 May 2010 22:26:30 +0000 (22:26 +0000)
git-svn-id: https://xbmc.svn.sourceforge.net/svnroot/xbmc/trunk@29912 568bbfeb-2a22-0410-94d2-cc84cf5bfa90

xbmc/linux/ConsoleUPowerSyscall.cpp
xbmc/linux/ConsoleUPowerSyscall.h

index 7ebf830..929c0df 100644 (file)
@@ -44,24 +44,9 @@ CConsoleUPowerSyscall::CConsoleUPowerSyscall()
   }
 
   m_CanPowerdown = ConsoleKitMethodCall("CanStop");
-
-  // If "the name org.freedesktop.UPower was not provided by any .service files",
-  // GetVariant() would return NULL, and asBoolean() would crash.
-  CVariant canSuspend = CDBusUtil::GetVariant("org.freedesktop.UPower", "/org/freedesktop/UPower",    "org.freedesktop.UPower", "CanSuspend");
-
-  if ( !canSuspend.isNull() )
-    m_CanSuspend = canSuspend.asBoolean();
-  else
-    m_CanSuspend = false;
-
-  CVariant canHibernate = CDBusUtil::GetVariant("org.freedesktop.UPower", "/org/freedesktop/UPower",    "org.freedesktop.UPower", "CanHibernate");
-
-  if ( !canHibernate.isNull() )
-    m_CanHibernate = canHibernate.asBoolean();
-  else
-    m_CanHibernate = false;
-
   m_CanReboot    = ConsoleKitMethodCall("CanRestart");
+
+  UpdateUPower();
 }
 
 CConsoleUPowerSyscall::~CConsoleUPowerSyscall()
@@ -173,6 +158,8 @@ bool CConsoleUPowerSyscall::PumpPowerEvents(IPowerEventsCallback *callback)
         callback->OnSleep();
       else if (dbus_message_is_signal(msg, "org.freedesktop.UPower", "Resuming"))
         callback->OnWake();
+      else if (dbus_message_is_signal(msg, "org.freedesktop.UPower", "Changed"))
+        UpdateUPower();
       else
         CLog::Log(LOGDEBUG, "UPower: Recieved an unkown signal %s", dbus_message_get_member(msg));
 
@@ -182,6 +169,12 @@ bool CConsoleUPowerSyscall::PumpPowerEvents(IPowerEventsCallback *callback)
   return result;
 }
 
+void CConsoleUPowerSyscall::UpdateUPower()
+{
+  m_CanSuspend   = CDBusUtil::GetVariant("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", "CanSuspend").asBoolean(false);
+  m_CanHibernate = CDBusUtil::GetVariant("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", "CanHibernate").asBoolean(false);
+}
+
 bool CConsoleUPowerSyscall::ConsoleKitMethodCall(const char *method)
 {
   CDBusMessage message("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", method);
index d8cc81e..c639183 100644 (file)
@@ -44,6 +44,7 @@ public:
   static bool HasDeviceConsoleKit();
 private:
   static bool ConsoleKitMethodCall(const char *method);
+  void UpdateUPower();
 
   bool m_CanPowerdown;
   bool m_CanSuspend;