3#include <QDBusConnection>
4#include <QDBusInterface>
17#define LOC QString("ScreenSaverDBus: ")
19const std::string
kApp =
"MythTV";
26 "org.freedesktop.ScreenSaver",
27 "org.freedesktop.PowerManagement.Inhibit",
28 "org.mate.SessionManager",
29 "org.gnome.SessionManager",
32const std::array<const QString,NUM_DBUS_METHODS>
kDbusPath {
34 "/org/freedesktop/PowerManagement",
35 "/org/mate/SessionManager",
36 "/org/gnome/SessionManager",
54 const QString &dbusInterface, QDBusConnection *bus)
56 m_interface(new QDBusInterface(dbusService, dbusPath , dbusInterface, *
m_bus)),
61 LOG(VB_GENERAL, LOG_DEBUG,
LOC +
62 QString(
"Could not connect to dbus service %1: %2")
63 .arg(dbusService,
m_interface->lastError().message()));
67 LOG(VB_GENERAL, LOG_INFO,
LOC +
"Created for DBus service: " + dbusService);
82 if (msg.type() == QDBusMessage::ReplyMessage)
84 QList<QVariant> replylist = msg.arguments();
85 const QVariant& reply = replylist.first();
87 LOG(VB_GENERAL, LOG_INFO,
LOC +
88 QString(
"Successfully inhibited screensaver via %1. cookie %2. nom nom")
94 if (errout !=
nullptr)
96 *errout = msg.errorMessage();
100 LOG(VB_GENERAL, LOG_WARNING,
LOC +
101 QString(
"Failed to disable screensaver via %1: %2")
115 LOG(VB_GENERAL, LOG_INFO,
LOC + QString(
"Screensaver uninhibited via %1")
136 m_bus(QDBusConnection::sessionBus())
142 if (!ssdbp->isValid())
151 ssdbp->Inhibit(&dbuserr);
153 if (!dbuserr.isEmpty())
155 LOG(VB_GENERAL, LOG_DEBUG,
LOC +
156 QString(
"Error testing disable screensaver via %1: %2")
175 interface->Inhibit();
181 interface->UnInhibit();
193#include "moc_mythscreensaverdbus.cpp"
~MythScreenSaverDBus() override
QList< ScreenSaverDBusPrivate * > m_dbusPrivateInterfaces
Base Class for screensavers.
QDBusInterface * m_interface
void SetUnInhibit(const QString &method)
~ScreenSaverDBusPrivate()
void Inhibit(QString *errout=nullptr)
ScreenSaverDBusPrivate(const QString &dbusService, const QString &dbusPath, const QString &dbusInterface, QDBusConnection *bus)
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
const std::string kReason
const std::array< const QString, NUM_DBUS_METHODS > kDbusPath
const std::array< const QString, NUM_DBUS_METHODS > kDbusService
KDE >= 4 and GNOME >= 3.10.
const std::string kDbusInhibit
const std::array< const QString, NUM_DBUS_METHODS > kDbusUnInhibit
static constexpr size_t NUM_DBUS_METHODS