mirror of
https://github.com/FeralInteractive/gamemode.git
synced 2025-06-07 08:07:20 +02:00
Fix up calling screensaver, now appears to work
This commit is contained in:
parent
42dd7e6ea8
commit
b4ba947255
@ -197,11 +197,13 @@ int game_mode_inhibit_screensaver(bool inhibit)
|
|||||||
{
|
{
|
||||||
const char *service = "org.freedesktop.ScreenSaver";
|
const char *service = "org.freedesktop.ScreenSaver";
|
||||||
const char *object_path = "/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";
|
const char *function = inhibit ? "Inhibit" : "UnInhibit";
|
||||||
|
|
||||||
sd_bus_message *msg = NULL;
|
sd_bus_message *msg = NULL;
|
||||||
sd_bus *bus = NULL;
|
sd_bus *bus = NULL;
|
||||||
|
sd_bus_error err;
|
||||||
|
memset(&err, 0, sizeof(sd_bus_error));
|
||||||
|
|
||||||
int result = -1;
|
int result = -1;
|
||||||
|
|
||||||
@ -209,45 +211,55 @@ int game_mode_inhibit_screensaver(bool inhibit)
|
|||||||
int ret = sd_bus_open_user(&bus);
|
int ret = sd_bus_open_user(&bus);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
LOG_ERROR("Could not connect to user bus: %s\n", strerror(-ret));
|
LOG_ERROR("Could not connect to user bus: %s\n", strerror(-ret));
|
||||||
} else {
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (inhibit) {
|
if (inhibit) {
|
||||||
ret = sd_bus_call_method(bus,
|
ret = sd_bus_call_method(bus,
|
||||||
service,
|
service,
|
||||||
object_path,
|
object_path,
|
||||||
interface,
|
interface,
|
||||||
function,
|
function,
|
||||||
NULL,
|
&err,
|
||||||
&msg,
|
&msg,
|
||||||
"s",
|
"ss",
|
||||||
"GameMode",
|
"com.feralinteractive.GameMode",
|
||||||
"s",
|
"GameMode Activated");
|
||||||
"GameMode Activated",
|
|
||||||
"u",
|
|
||||||
&screensaver_inhibit_cookie);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
ret = sd_bus_call_method(bus,
|
ret = sd_bus_call_method(bus,
|
||||||
service,
|
service,
|
||||||
object_path,
|
object_path,
|
||||||
interface,
|
interface,
|
||||||
function,
|
function,
|
||||||
NULL,
|
&err,
|
||||||
&msg,
|
&msg,
|
||||||
"u",
|
"u",
|
||||||
screensaver_inhibit_cookie);
|
screensaver_inhibit_cookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
LOG_ERROR("Could not call %s on %s: %s\n", function, service, strerror(-ret));
|
LOG_ERROR(
|
||||||
} else {
|
"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
|
// Read the reply
|
||||||
ret = sd_bus_message_read(msg, "i", &result);
|
ret = sd_bus_message_read(msg, "u", &screensaver_inhibit_cookie);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
LOG_ERROR("Failure to parse response from %s on %s: %s\n",
|
LOG_ERROR("Failure to parse response from %s on %s: %s\n",
|
||||||
function,
|
function,
|
||||||
service,
|
service,
|
||||||
strerror(-ret));
|
strerror(-ret));
|
||||||
|
} else {
|
||||||
|
result = 0;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
result = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user