}
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()
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));
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);