]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blobdiff - liblightdm-qt/power.cpp
Load all users only when really needed
[sojka/lightdm.git] / liblightdm-qt / power.cpp
index 47bd5a05ec25c76b15de36f486cd395ef2e405aa..a8cb4fae834973bde1c690d5b3f30aa37d70ba9e 100644 (file)
@@ -51,6 +51,17 @@ PowerInterface::~PowerInterface()
 
 bool PowerInterface::canSuspend()
 {
+    if (d->login1Interface->isValid())
+    {
+       QDBusReply<QString> reply = d->login1Interface->call("CanSuspend");
+       if (reply.isValid())
+       {
+           return reply.value() == "yes";
+       }
+    }
+
+    qWarning() << d->login1Interface->lastError();
+
     QDBusReply<bool> reply = d->powerManagementInterface->call("SuspendAllowed");
     if (reply.isValid()) {
         return reply.value();
@@ -62,12 +73,28 @@ bool PowerInterface::canSuspend()
 
 bool PowerInterface::suspend()
 {
-    QDBusReply<void> reply = d->powerManagementInterface->call("Suspend");
+    QDBusReply<void> reply;
+    if (d->login1Interface->isValid())
+        reply = d->login1Interface->call("Suspend", false);
+    else
+        reply = d->powerManagementInterface->call("Suspend");
+
     return reply.isValid ();
 }
 
 bool PowerInterface::canHibernate()
 {
+    if (d->login1Interface->isValid())
+    {
+        QDBusReply<QString> reply = d->login1Interface->call("CanHibernate");
+        if (reply.isValid())
+        {
+            return reply.value() == "yes";
+        }
+    }
+
+    qWarning() << d->login1Interface->lastError();
+
     QDBusReply<bool> reply = d->powerManagementInterface->call("HibernateAllowed");
     if (reply.isValid()) {
         return reply.value();
@@ -79,7 +106,12 @@ bool PowerInterface::canHibernate()
 
 bool PowerInterface::hibernate()
 {
-    QDBusReply<void> reply = d->powerManagementInterface->call("Hibernate");
+    QDBusReply<void> reply;
+    if (d->login1Interface->isValid())
+        reply = d->login1Interface->call("Hibernate", false);
+    else
+        reply = d->powerManagementInterface->call("Hibernate");
+
     return reply.isValid ();
 }
 
@@ -120,7 +152,7 @@ bool PowerInterface::canRestart()
         }
     }
     qWarning() << d->login1Interface->lastError();
-  
+
     QDBusReply<bool> reply = d->consoleKitInterface->call("CanRestart");
     if (reply.isValid()) {
         return reply.value();