[kde-workspace] refresh powerdevil_systemd_login1 patch (kde review#108407)

Rex Dieter rdieter at fedoraproject.org
Mon Jan 14 14:31:42 UTC 2013


commit 1a2bcf265f89f96460ce8874bac7cf6f52f41672
Author: Rex Dieter <rdieter at math.unl.edu>
Date:   Mon Jan 14 08:32:06 2013 -0600

    refresh powerdevil_systemd_login1 patch (kde review#108407)

 ...orkspace-4.9.97-powerdevil_systemd_login1.patch |   80 ++++++++------------
 kde-workspace.spec                                 |    5 +-
 2 files changed, 37 insertions(+), 48 deletions(-)
---
diff --git a/kde-workspace-4.9.97-powerdevil_systemd_login1.patch b/kde-workspace-4.9.97-powerdevil_systemd_login1.patch
index c7ffe96..9b69956 100644
--- a/kde-workspace-4.9.97-powerdevil_systemd_login1.patch
+++ b/kde-workspace-4.9.97-powerdevil_systemd_login1.patch
@@ -12,10 +12,10 @@ index 5dbe6f6..5344925 100644
  )
 diff --git a/powerdevil/daemon/backends/upower/login1suspendjob.h b/powerdevil/daemon/backends/upower/login1suspendjob.h
 new file mode 100644
-index 0000000..bc75e7b
+index 0000000..c7e33ba
 --- /dev/null
 +++ b/powerdevil/daemon/backends/upower/login1suspendjob.h
-@@ -0,0 +1,52 @@
+@@ -0,0 +1,54 @@
 +/*  This file is part of the KDE project
 +    Copyright (C) 2006 Kevin Ottens <ervin at kde.org>
 +    Copyright (C) 2010 Alejandro Fiestas <alex at eyeos.org>
@@ -43,6 +43,7 @@ index 0000000..bc75e7b
 +#include <kjob.h>
 +#include <QtDBus/QDBusInterface>
 +#include <QtDBus/QDBusMessage>
++#include <QtDBus/QDBusPendingCallWatcher>
 +
 +#include "powerdevilbackendinterface.h"
 +
@@ -60,6 +61,7 @@ index 0000000..bc75e7b
 +
 +private Q_SLOTS:
 +    void doStart();
++    void sendResult(QDBusPendingCallWatcher* watcher);
 +
 +private:
 +    QDBusInterface *m_login1Interface;
@@ -70,10 +72,10 @@ index 0000000..bc75e7b
 +#endif //LOGIN1SUSPENDJOB_H
 diff --git a/powerdevil/daemon/backends/upower/login1suspendjob.cpp b/powerdevil/daemon/backends/upower/login1suspendjob.cpp
 new file mode 100644
-index 0000000..587b9cf
+index 0000000..1fe34bb
 --- /dev/null
 +++ b/powerdevil/daemon/backends/upower/login1suspendjob.cpp
-@@ -0,0 +1,89 @@
+@@ -0,0 +1,100 @@
 +/*  This file is part of the KDE project
 +    Copyright (C) 2006 Kevin Ottens <ervin at kde.org>
 +    Copyright (C) 2010 Alejandro Fiestas <alex at eyeos.org>
@@ -136,20 +138,19 @@ index 0000000..587b9cf
 +        args << true; // interactive, ie. with polkit dialogs
 +
 +        QDBusPendingReply<void> reply;
++        QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this);
++        connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(sendResult(QDBusPendingCallWatcher*)));
 +
 +        switch(m_method)
 +        {
 +        case PowerDevil::BackendInterface::ToRam:
 +            reply = m_login1Interface->asyncCallWithArgumentList("Suspend", args);
-+            reply.waitForFinished();
 +            break;
 +        case PowerDevil::BackendInterface::ToDisk:
 +            reply = m_login1Interface->asyncCallWithArgumentList("Hibernate", args);
-+            reply.waitForFinished();
 +            break;
 +        case PowerDevil::BackendInterface::HybridSuspend:
 +            reply = m_login1Interface->asyncCallWithArgumentList("HybridSleep", args);
-+            reply.waitForFinished();
 +            break;
 +        default:
 +            kDebug() << "Unsupported suspend method";
@@ -157,8 +158,20 @@ index 0000000..587b9cf
 +            setErrorText(i18n("Unsupported suspend method"));
 +            break;
 +        }
++    }
++}
++
++void Login1SuspendJob::sendResult(QDBusPendingCallWatcher *watcher)
++{
++    const QDBusPendingReply<void> reply = *watcher;
++    if (!reply.isError()) {
 +        emitResult();
 +    }
++    else {
++        kWarning() << "Failed to start suspend job" << reply.error().name() << reply.error().message();
++    }
++
++    watcher->deleteLater();
 +}
 +
 +
@@ -194,7 +207,7 @@ index ba942bd..ae3d754 100644
      bool m_lidIsPresent;
      bool m_lidIsClosed;
 diff --git a/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp b/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp
-index 97a409b..cc5bd0d 100644
+index 97a409b..2c00ac0 100644
 --- a/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp
 +++ b/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp
 @@ -2,7 +2,7 @@
@@ -222,37 +235,7 @@ index 97a409b..cc5bd0d 100644
  }
  
  PowerDevilUPowerBackend::~PowerDevilUPowerBackend()
-@@ -48,6 +50,29 @@ PowerDevilUPowerBackend::~PowerDevilUPowerBackend()
- 
- bool PowerDevilUPowerBackend::isAvailable()
- {
-+    if (!QDBusConnection::systemBus().interface()->isServiceRegistered(LOGIN1_SERVICE)) {
-+        // Is it pending activation?
-+        kDebug() << "Login1 service, " << LOGIN1_SERVICE << ", is not registered on the bus. Trying to find out if it is activated.";
-+        QDBusMessage message = QDBusMessage::createMethodCall("org.freedesktop.DBus",
-+                                                              "/org/freedesktop/DBus",
-+                                                              "org.freedesktop.DBus",
-+                                                              "ListActivatableNames");
-+
-+        QDBusPendingReply< QStringList > reply = QDBusConnection::systemBus().asyncCall(message);
-+        reply.waitForFinished();
-+
-+        if (reply.isValid()) {
-+            if (reply.value().contains(LOGIN1_SERVICE)) {
-+                kDebug() << "Login1 was found, activating service...";
-+                QDBusConnection::systemBus().interface()->startService(LOGIN1_SERVICE);
-+            } else {
-+                kDebug() << "Login1 cannot be found on this system.";
-+            }
-+        } else {
-+            kWarning() << "Could not request activatable names to DBus!";
-+        }
-+    }
-+
-     if (!QDBusConnection::systemBus().interface()->isServiceRegistered(UPOWER_SERVICE)) {
-         // Is it pending activation?
-         kDebug() << "UPower service, " << UPOWER_SERVICE << ", is not registered on the bus. Trying to find out if it is activated.";
-@@ -80,11 +105,17 @@ bool PowerDevilUPowerBackend::isAvailable()
+@@ -80,11 +82,19 @@ bool PowerDevilUPowerBackend::isAvailable()
  void PowerDevilUPowerBackend::init()
  {
      // interfaces
@@ -266,11 +249,13 @@ index 97a409b..cc5bd0d 100644
          QDBusConnection::systemBus().interface()->startService(UPOWER_SERVICE);
      }
  
-+    m_login1Interface = new QDBusInterface(LOGIN1_SERVICE, "/org/freedesktop/login1", "org.freedesktop.login1.Manager", QDBusConnection::systemBus(), this);
++    if (QDBusConnection::systemBus().interface()->isServiceRegistered(LOGIN1_SERVICE)) {
++        m_login1Interface = new QDBusInterface(LOGIN1_SERVICE, "/org/freedesktop/login1", "org.freedesktop.login1.Manager", QDBusConnection::systemBus(), this);
++    }
      m_upowerInterface = new OrgFreedesktopUPowerInterface(UPOWER_SERVICE, "/org/freedesktop/UPower", QDBusConnection::systemBus(), this);
      m_kbdBacklight = new OrgFreedesktopUPowerKbdBacklightInterface(UPOWER_SERVICE, "/org/freedesktop/UPower/KbdBacklight", QDBusConnection::systemBus(), this);
      m_brightnessControl = new XRandrBrightness();
-@@ -113,7 +144,22 @@ void PowerDevilUPowerBackend::init()
+@@ -113,7 +123,22 @@ void PowerDevilUPowerBackend::init()
  
      // Supported suspend methods
      SuspendMethods supported = UnknownSuspendMethod;
@@ -294,12 +279,12 @@ index 97a409b..cc5bd0d 100644
          if (m_upowerInterface->canSuspend() && m_upowerInterface->SuspendAllowed()) {
              kDebug() << "Can suspend";
              supported |= ToRam;
-@@ -125,7 +171,13 @@ void PowerDevilUPowerBackend::init()
+@@ -125,7 +150,13 @@ void PowerDevilUPowerBackend::init()
          }
      }
  
 -    connect(m_upowerInterface, SIGNAL(Resuming()), this, SIGNAL(resumeFromSuspend()));
-+    // CHECKME if login1 indeed has the resuming signal
++    // CHECKME if login1 indeed has the resuming signal, it doesn't yet :/
 +    // "resuming" signal
 +    if (m_login1Interface) {
 +        connect(m_login1Interface.data(), SIGNAL(PrepareForSleep(bool)), this, SLOT(slotLogin1Resuming(bool)));
@@ -309,19 +294,20 @@ index 97a409b..cc5bd0d 100644
  
      // battery
      QList<RecallNotice> recallList;
-@@ -246,7 +298,10 @@ bool PowerDevilUPowerBackend::setBrightness(float brightnessValue, PowerDevil::B
+@@ -246,7 +277,11 @@ bool PowerDevilUPowerBackend::setBrightness(float brightnessValue, PowerDevil::B
  
  KJob* PowerDevilUPowerBackend::suspend(PowerDevil::BackendInterface::SuspendMethod method)
  {
 -    return new UPowerSuspendJob(m_upowerInterface, method, supportedSuspendMethods());
-+    if (m_login1Interface)
++    if (m_login1Interface) {
 +        return new Login1SuspendJob(m_login1Interface.data(), method, supportedSuspendMethods());
-+    else
++    } else {
 +        return new UPowerSuspendJob(m_upowerInterface, method, supportedSuspendMethods());
++    }
  }
  
  void PowerDevilUPowerBackend::enumerateDevices()
-@@ -337,4 +392,11 @@ void PowerDevilUPowerBackend::slotPropertyChanged()
+@@ -337,4 +372,11 @@ void PowerDevilUPowerBackend::slotPropertyChanged()
      m_onBattery = onBattery;
  }
  
diff --git a/kde-workspace.spec b/kde-workspace.spec
index fd7b750..4437813 100644
--- a/kde-workspace.spec
+++ b/kde-workspace.spec
@@ -5,7 +5,7 @@
 Summary: KDE Workspace
 Name:    kde-workspace
 Version: 4.9.97
-Release: 4%{?dist}
+Release: 5%{?dist}
 
 License: GPLv2
 URL:     https://projects.kde.org/projects/kde/kde-workspace
@@ -973,6 +973,9 @@ fi
 
 
 %changelog
+* Mon Jan 14 2013 Rex Dieter <rdieter at fedoraproject.org> 4.9.97-5
+- refresh powerdevil_systemd_login1 patch (kde review#108407)
+
 * Mon Jan 14 2013 Rex Dieter <rdieter at fedoraproject.org> 4.9.97-4
 - proper powerdevil systemd-login1 support (kde review#108407)
 


More information about the scm-commits mailing list