Blame SOURCES/powerdevil-upower-0.99.patch

b5cc75
diff --git a/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp b/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp
b5cc75
index cc20dc7..297b020 100644
b5cc75
--- a/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp
b5cc75
+++ b/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp
b5cc75
@@ -75,7 +75,7 @@ bool checkSystemdVersion(uint requiredVersion)
b5cc75
 
b5cc75
 PowerDevilUPowerBackend::PowerDevilUPowerBackend(QObject* parent)
b5cc75
     : BackendInterface(parent),
b5cc75
-      m_brightnessControl(0), m_kbdMaxBrightness(0),
b5cc75
+      m_displayDevice(0), m_brightnessControl(0), m_kbdMaxBrightness(0),
b5cc75
       m_lidIsPresent(false), m_lidIsClosed(false), m_onBattery(false)
b5cc75
 {
b5cc75
 
b5cc75
@@ -451,6 +451,14 @@ void PowerDevilUPowerBackend::enumerateDevices()
b5cc75
         m_devices.insert(device.path(), upowerDevice);
b5cc75
     }
b5cc75
 
b5cc75
+    QDBusReply<QDBusObjectPath> reply = m_upowerInterface->call("GetDisplayDevice");
b5cc75
+    if (reply.isValid()) {
b5cc75
+        const QString path = reply.value().path();
b5cc75
+        if (!path.isEmpty() && path != QLatin1String("/")) {
b5cc75
+            m_displayDevice = new OrgFreedesktopUPowerDeviceInterface(UPOWER_SERVICE, path, QDBusConnection::systemBus(), this);
b5cc75
+        }
b5cc75
+    }
b5cc75
+
b5cc75
     updateDeviceProps();
b5cc75
 
b5cc75
     if (m_onBattery)
b5cc75
@@ -500,14 +508,22 @@ void PowerDevilUPowerBackend::updateDeviceProps()
b5cc75
 {
b5cc75
     qlonglong remainingTime = 0;
b5cc75
 
b5cc75
-    foreach(OrgFreedesktopUPowerDeviceInterface * upowerDevice, m_devices) {
b5cc75
-        const uint type = upowerDevice->type();
b5cc75
-        if (( type == 2 || type == 3) && upowerDevice->powerSupply()) {
b5cc75
-            const uint state = upowerDevice->state();
b5cc75
-            if (state == 1) // charging
b5cc75
-                remainingTime += upowerDevice->timeToFull();
b5cc75
-            else if (state == 2) //discharging
b5cc75
-                remainingTime += upowerDevice->timeToEmpty();
b5cc75
+    if (m_displayDevice && m_displayDevice->isPresent()) {
b5cc75
+        const uint state = m_displayDevice->state();
b5cc75
+        if (state == 1) // charging
b5cc75
+            remainingTime = m_displayDevice->timeToFull();
b5cc75
+        else if (state == 2) //discharging
b5cc75
+            remainingTime = m_displayDevice->timeToEmpty();
b5cc75
+    } else {
b5cc75
+        foreach(OrgFreedesktopUPowerDeviceInterface * upowerDevice, m_devices) {
b5cc75
+            const uint type = upowerDevice->type();
b5cc75
+            if (( type == 2 || type == 3) && upowerDevice->powerSupply()) {
b5cc75
+                const uint state = upowerDevice->state();
b5cc75
+                if (state == 1) // charging
b5cc75
+                    remainingTime += upowerDevice->timeToFull();
b5cc75
+                else if (state == 2) //discharging
b5cc75
+                    remainingTime += upowerDevice->timeToEmpty();
b5cc75
+            }
b5cc75
         }
b5cc75
     }
b5cc75
 
b5cc75
diff --git a/powerdevil/daemon/backends/upower/powerdevilupowerbackend.h b/powerdevil/daemon/backends/upower/powerdevilupowerbackend.h
b5cc75
index c6563b0..14f4c5e 100644
b5cc75
--- a/powerdevil/daemon/backends/upower/powerdevilupowerbackend.h
b5cc75
+++ b/powerdevil/daemon/backends/upower/powerdevilupowerbackend.h
b5cc75
@@ -84,6 +84,7 @@ private slots:
b5cc75
 private:
b5cc75
     // upower devices
b5cc75
     QMap<QString, OrgFreedesktopUPowerDeviceInterface *> m_devices;
b5cc75
+    OrgFreedesktopUPowerDeviceInterface *m_displayDevice;
b5cc75
 
b5cc75
     // brightness
b5cc75
     QMap<BrightnessControlType, float> m_cachedBrightnessMap;