From 13000713f0b8fa3cc7ea7a8689f90d3241a35d2a Mon Sep 17 00:00:00 2001
From: Iain Lane <iain.lane@canonical.com>
Date: Mon, 29 Apr 2013 22:01:41 +0000
Subject: [PATCH] Use logind for powering off too

---
 mythtv/programs/mythfrontend/exitprompt.cpp | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/mythtv/programs/mythfrontend/exitprompt.cpp b/mythtv/programs/mythfrontend/exitprompt.cpp
index 266a8d9..af45702 100644
--- a/mythtv/programs/mythfrontend/exitprompt.cpp
+++ b/mythtv/programs/mythfrontend/exitprompt.cpp
@@ -33,6 +33,10 @@ static bool DBusHalt(void)
                               "/org/freedesktop/ConsoleKit/Manager",
                               "org.freedesktop.ConsoleKit.Manager",
                               QDBusConnection::systemBus());
+    QDBusInterface logind("org.freedesktop.login1",
+                          "/org/freedesktop/login1",
+                          "org.freedesktop.login1.Manager",
+                          QDBusConnection::systemBus());
     QDBusInterface hal("org.freedesktop.Hal",
                        "/org/freedesktop/Hal/devices/computer",
                        "org.freedesktop.Hal.Device.SystemPowerManagement",
@@ -41,9 +45,16 @@ static bool DBusHalt(void)
     QDBusReply<void> void_reply = kde.call("logout", 0, 2, 2);
     QDBusReply<bool> bool_reply;
     QDBusReply<int>  int_reply;
+    QDBusReply<QString> string_reply;
 
     if (!void_reply.isValid())
     {
+        bool_reply = logind.call("CanPowerOff");
+        if (string_reply.isValid() && string_reply.value() == "yes")
+            void_reply = logind.call("PowerOff", false);
+    }
+    if (!void_reply.isValid())
+    {
         bool_reply = gnome.call("CanShutdown");
         if (bool_reply.isValid() && bool_reply.value() == 1)
             void_reply = gnome.call("RequestShutdown");
-- 
1.8.1.2

