Browse Source

Fixed support for logind power state calls.

This resolves bug 2661 and bug 2975.

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
pull/25/head
Signed by: SlavekB <slavek.banko@axis.cz> GPG Key ID: 608F5293A04BE668
1 changed files with 39 additions and 46 deletions
  1. +39
    -46
      tdecore/tdehw/tderootsystemdevice.cpp

+ 39
- 46
tdecore/tdehw/tderootsystemdevice.cpp View File

@@ -698,41 +698,32 @@ bool TDERootSystemDevice::setPowerState(TDESystemPowerState::TDESystemPowerState

#ifdef WITH_LOGINDPOWER
{
// No support for "freeze" in org.freedesktop.login1
// No support for "freeze" and "standby" in org.freedesktop.login1
TQT_DBusConnection dbusConn;
dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
if ( dbusConn.isConnected() ) {
if (ps == TDESystemPowerState::Suspend) {
TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"Suspend");
TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
if (reply.type() == TQT_DBusMessage::ReplyMessage) {
return true;
TQT_DBusProxy logindProxy("org.freedesktop.login1", "/org/freedesktop/login1",
"org.freedesktop.login1.Manager", dbusConn);
TQValueList<TQT_DBusData> params;
params << TQT_DBusData::fromBool(true);
if (logindProxy.canSend()) {
if (ps == TDESystemPowerState::Suspend) {
TQT_DBusMessage reply = logindProxy.sendWithReply("Suspend", params);
if (reply.type() == TQT_DBusMessage::ReplyMessage) {
return true;
}
}
}
else if (ps == TDESystemPowerState::Hibernate) {
TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"Hibernate");
TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
if (reply.type() == TQT_DBusMessage::ReplyMessage) {
return true;
else if (ps == TDESystemPowerState::Hibernate) {
TQT_DBusMessage reply = logindProxy.sendWithReply("Hibernate", params);
if (reply.type() == TQT_DBusMessage::ReplyMessage) {
return true;
}
}
}
else if (ps == TDESystemPowerState::HybridSuspend) {
TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"HybridSleep");
TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
if (reply.type() == TQT_DBusMessage::ReplyMessage) {
return true;
else if (ps == TDESystemPowerState::HybridSuspend) {
TQT_DBusMessage reply = logindProxy.sendWithReply("HybridSleep", params);
if (reply.type() == TQT_DBusMessage::ReplyMessage) {
return true;
}
}
}
}
@@ -927,14 +918,15 @@ bool TDERootSystemDevice::setPowerState(TDESystemPowerState::TDESystemPowerState
TQT_DBusConnection dbusConn;
dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
if ( dbusConn.isConnected() ) {
TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
"org.trinitydesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"PowerOff");
TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
if (reply.type() == TQT_DBusMessage::ReplyMessage) {
return true;
TQT_DBusProxy logindProxy("org.freedesktop.login1", "/org/freedesktop/login1",
"org.freedesktop.login1.Manager", dbusConn);
TQValueList<TQT_DBusData> params;
params << TQT_DBusData::fromBool(true);
if (logindProxy.canSend()) {
TQT_DBusMessage reply = logindProxy.sendWithReply("PowerOff", params);
if (reply.type() == TQT_DBusMessage::ReplyMessage) {
return true;
}
}
}
}
@@ -994,14 +986,15 @@ bool TDERootSystemDevice::setPowerState(TDESystemPowerState::TDESystemPowerState
TQT_DBusConnection dbusConn;
dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
if ( dbusConn.isConnected() ) {
TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
"org.trinitydesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"Reboot");
TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
if (reply.type() == TQT_DBusMessage::ReplyMessage) {
return true;
TQT_DBusProxy logindProxy("org.freedesktop.login1", "/org/freedesktop/login1",
"org.freedesktop.login1.Manager", dbusConn);
TQValueList<TQT_DBusData> params;
params << TQT_DBusData::fromBool(true);
if (logindProxy.canSend()) {
TQT_DBusMessage reply = logindProxy.sendWithReply("Reboot", params);
if (reply.type() == TQT_DBusMessage::ReplyMessage) {
return true;
}
}
}
}


Loading…
Cancel
Save