|
|
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;
|