diff --git a/daemon/dbus_messaging.c b/daemon/dbus_messaging.c index cf21358..c411e0a 100644 --- a/daemon/dbus_messaging.c +++ b/daemon/dbus_messaging.c @@ -197,11 +197,13 @@ int game_mode_inhibit_screensaver(bool inhibit) { const char *service = "org.freedesktop.ScreenSaver"; const char *object_path = "/org/freedesktop/ScreenSaver"; - const char *interface = service; + const char *interface = "org.freedesktop.ScreenSaver"; const char *function = inhibit ? "Inhibit" : "UnInhibit"; sd_bus_message *msg = NULL; sd_bus *bus = NULL; + sd_bus_error err; + memset(&err, 0, sizeof(sd_bus_error)); int result = -1; @@ -209,45 +211,55 @@ int game_mode_inhibit_screensaver(bool inhibit) int ret = sd_bus_open_user(&bus); if (ret < 0) { LOG_ERROR("Could not connect to user bus: %s\n", strerror(-ret)); - } else { - if (inhibit) { - ret = sd_bus_call_method(bus, - service, - object_path, - interface, - function, - NULL, - &msg, - "s", - "GameMode", - "s", - "GameMode Activated", - "u", - &screensaver_inhibit_cookie); + return -1; + } - } else { - ret = sd_bus_call_method(bus, - service, - object_path, - interface, - function, - NULL, - &msg, - "u", - screensaver_inhibit_cookie); - } + if (inhibit) { + ret = sd_bus_call_method(bus, + service, + object_path, + interface, + function, + &err, + &msg, + "ss", + "com.feralinteractive.GameMode", + "GameMode Activated"); + } else { + ret = sd_bus_call_method(bus, + service, + object_path, + interface, + function, + &err, + &msg, + "u", + screensaver_inhibit_cookie); + } + + if (ret < 0) { + LOG_ERROR( + "Could not call %s on %s: %s\n" + "\t%s\n" + "\t%s\n", + function, + service, + strerror(-ret), + err.name, + err.message); + } else if (inhibit) { + // Read the reply + ret = sd_bus_message_read(msg, "u", &screensaver_inhibit_cookie); if (ret < 0) { - LOG_ERROR("Could not call %s on %s: %s\n", function, service, strerror(-ret)); + LOG_ERROR("Failure to parse response from %s on %s: %s\n", + function, + service, + strerror(-ret)); } else { - // Read the reply - ret = sd_bus_message_read(msg, "i", &result); - if (ret < 0) { - LOG_ERROR("Failure to parse response from %s on %s: %s\n", - function, - service, - strerror(-ret)); - } + result = 0; } + } else { + result = 0; } return result;