2#include <QDBusConnection>
3#include <QDBusInterface>
16#define LOC QString("ScreenSaverDBus: ")
18const std::string
kApp =
"MythTV";
25 "org.freedesktop.ScreenSaver",
26 "org.freedesktop.PowerManagement.Inhibit",
27 "org.mate.SessionManager",
28 "org.gnome.SessionManager",
31const std::array<const QString,NUM_DBUS_METHODS>
kDbusPath {
33 "/org/freedesktop/PowerManagement",
34 "/org/mate/SessionManager",
35 "/org/gnome/SessionManager",
53 const QString &dbusInterface, QDBusConnection *bus)
55 m_interface(new QDBusInterface(dbusService, dbusPath , dbusInterface, *
m_bus)),
60 LOG(VB_GENERAL, LOG_DEBUG,
LOC +
61 QString(
"Could not connect to dbus service %1: %2")
62 .arg(dbusService,
m_interface->lastError().message()));
66 LOG(VB_GENERAL, LOG_INFO,
LOC +
"Created for DBus service: " + dbusService);
81 if (msg.type() == QDBusMessage::ReplyMessage)
83 QList<QVariant> replylist = msg.arguments();
84 const QVariant& reply = replylist.first();
86 LOG(VB_GENERAL, LOG_INFO,
LOC +
87 QString(
"Successfully inhibited screensaver via %1. cookie %2. nom nom")
93 if (errout !=
nullptr)
95 *errout = msg.errorMessage();
99 LOG(VB_GENERAL, LOG_WARNING,
LOC +
100 QString(
"Failed to disable screensaver via %1: %2")
114 LOG(VB_GENERAL, LOG_INFO,
LOC + QString(
"Screensaver uninhibited via %1")
135 m_bus(QDBusConnection::sessionBus())
141 if (!ssdbp->isValid())
150 ssdbp->Inhibit(&dbuserr);
152 if (!dbuserr.isEmpty())
154 LOG(VB_GENERAL, LOG_DEBUG,
LOC +
155 QString(
"Error testing disable screensaver via %1: %2")
174 interface->Inhibit();
180 interface->UnInhibit();
~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