mirror of
https://github.com/FeralInteractive/gamemode.git
synced 2025-06-07 08:07:20 +02:00
Add initial screensaver inhibiting code
This commit is contained in:
parent
6544bfb99d
commit
42dd7e6ea8
@ -187,3 +187,68 @@ void game_mode_context_loop(GameModeContext *context)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempts to inhibit the screensaver
|
||||||
|
* Uses the "org.freedesktop.ScreenSaver" interface
|
||||||
|
*/
|
||||||
|
static unsigned int screensaver_inhibit_cookie = 0;
|
||||||
|
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 *function = inhibit ? "Inhibit" : "UnInhibit";
|
||||||
|
|
||||||
|
sd_bus_message *msg = NULL;
|
||||||
|
sd_bus *bus = NULL;
|
||||||
|
|
||||||
|
int result = -1;
|
||||||
|
|
||||||
|
// Open the user bus
|
||||||
|
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);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
ret = sd_bus_call_method(bus,
|
||||||
|
service,
|
||||||
|
object_path,
|
||||||
|
interface,
|
||||||
|
function,
|
||||||
|
NULL,
|
||||||
|
&msg,
|
||||||
|
"u",
|
||||||
|
screensaver_inhibit_cookie);
|
||||||
|
}
|
||||||
|
if (ret < 0) {
|
||||||
|
LOG_ERROR("Could not call %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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
@ -39,3 +39,8 @@ POSSIBILITY OF SUCH DAMAGE.
|
|||||||
* Run the main D-BUS loop "forever"
|
* Run the main D-BUS loop "forever"
|
||||||
*/
|
*/
|
||||||
void game_mode_context_loop(GameModeContext *context);
|
void game_mode_context_loop(GameModeContext *context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inhibit the screensaver
|
||||||
|
*/
|
||||||
|
int game_mode_inhibit_screensaver(bool inhibit);
|
||||||
|
@ -33,6 +33,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
#include "gamemode.h"
|
#include "gamemode.h"
|
||||||
#include "daemon_config.h"
|
#include "daemon_config.h"
|
||||||
|
#include "dbus_messaging.h"
|
||||||
#include "governors-query.h"
|
#include "governors-query.h"
|
||||||
#include "governors.h"
|
#include "governors.h"
|
||||||
#include "helpers.h"
|
#include "helpers.h"
|
||||||
@ -202,6 +203,9 @@ static void game_mode_context_enter(GameModeContext *self)
|
|||||||
memset(self->initial_cpu_mode, 0, sizeof(self->initial_cpu_mode));
|
memset(self->initial_cpu_mode, 0, sizeof(self->initial_cpu_mode));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Inhibit the screensaver */
|
||||||
|
game_mode_inhibit_screensaver(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -215,6 +219,9 @@ static void game_mode_context_leave(GameModeContext *self)
|
|||||||
LOG_MSG("Leaving Game Mode...\n");
|
LOG_MSG("Leaving Game Mode...\n");
|
||||||
sd_notifyf(0, "STATUS=%sGameMode is currently deactivated.%s\n", "\x1B[1;36m", "\x1B[0m");
|
sd_notifyf(0, "STATUS=%sGameMode is currently deactivated.%s\n", "\x1B[1;36m", "\x1B[0m");
|
||||||
|
|
||||||
|
/* UnInhibit the screensaver */
|
||||||
|
game_mode_inhibit_screensaver(false);
|
||||||
|
|
||||||
/* Reset the governer state back to initial */
|
/* Reset the governer state back to initial */
|
||||||
if (self->initial_cpu_mode[0] != '\0') {
|
if (self->initial_cpu_mode[0] != '\0') {
|
||||||
/* Choose the governor to reset to, using the config to override */
|
/* Choose the governor to reset to, using the config to override */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user