mirror of
https://github.com/devinacker/bsnes-plus.git
synced 2025-04-02 10:52:46 -04:00
41 lines
1.2 KiB
C++
41 lines
1.2 KiB
C++
#include <dbus/dbus.h>
|
|
|
|
static void log(DBusError &error) {
|
|
fprintf(stderr, "DBus error: %s\n", error.name);
|
|
fprintf(stderr, "Message: %s\n", error.message);
|
|
}
|
|
|
|
void Application::App::inhibitScreenSaver() {
|
|
DBusError error;
|
|
dbus_error_init(&error);
|
|
|
|
DBusConnection *connection = dbus_bus_get(DBUS_BUS_SESSION, &error);
|
|
if (connection == nullptr) {
|
|
log(error);
|
|
return;
|
|
}
|
|
|
|
DBusMessage *message = dbus_message_new_method_call(
|
|
"org.freedesktop.ScreenSaver", "/org/freedesktop/ScreenSaver",
|
|
"org.freedesktop.ScreenSaver", "Inhibit");
|
|
|
|
const char *app = "org.bsnes.bsnes-plus";
|
|
const char *reason = "Playing a game";
|
|
if (!dbus_message_append_args(message, DBUS_TYPE_STRING, &app,
|
|
DBUS_TYPE_STRING, &reason, DBUS_TYPE_INVALID)) {
|
|
dbus_connection_unref(connection);
|
|
dbus_message_unref(message);
|
|
fputs("Failed to append arguments to DBus call\n", stderr);
|
|
return;
|
|
}
|
|
|
|
DBusMessage *reply = dbus_connection_send_with_reply_and_block(
|
|
connection, message, DBUS_TIMEOUT_USE_DEFAULT, &error);
|
|
dbus_connection_unref(connection);
|
|
dbus_message_unref(message);
|
|
if (reply == nullptr) {
|
|
log(error);
|
|
return;
|
|
}
|
|
dbus_message_unref(reply);
|
|
}
|