summaryrefslogtreecommitdiffstats
path: root/src/common/linux
diff options
context:
space:
mode:
authorflodavid <fl.david.53@gmail.com>2023-11-03 15:41:16 +0100
committerflodavid <fl.david.53@gmail.com>2023-11-25 19:30:37 +0100
commit40644d43f700cb0075db0eea288078bda7cf4527 (patch)
tree876d26a64a803d2b1509e71a13fe822f1e851c00 /src/common/linux
parentyuzu: integrate gamemode support on linux (diff)
downloadyuzu-40644d43f700cb0075db0eea288078bda7cf4527.tar
yuzu-40644d43f700cb0075db0eea288078bda7cf4527.tar.gz
yuzu-40644d43f700cb0075db0eea288078bda7cf4527.tar.bz2
yuzu-40644d43f700cb0075db0eea288078bda7cf4527.tar.lz
yuzu-40644d43f700cb0075db0eea288078bda7cf4527.tar.xz
yuzu-40644d43f700cb0075db0eea288078bda7cf4527.tar.zst
yuzu-40644d43f700cb0075db0eea288078bda7cf4527.zip
Diffstat (limited to '')
-rw-r--r--src/common/linux/gamemode.cpp39
-rw-r--r--src/common/linux/gamemode.h24
2 files changed, 63 insertions, 0 deletions
diff --git a/src/common/linux/gamemode.cpp b/src/common/linux/gamemode.cpp
new file mode 100644
index 000000000..8876d8dc4
--- /dev/null
+++ b/src/common/linux/gamemode.cpp
@@ -0,0 +1,39 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include <gamemode_client.h>
+
+#include "common/linux/gamemode.h"
+#include "common/settings.h"
+
+namespace Common::Linux {
+
+void StartGamemode() {
+ if (Settings::values.enable_gamemode) {
+ if (gamemode_request_start() < 0) {
+ LOG_WARNING(Frontend, "Failed to start gamemode: {}", gamemode_error_string());
+ } else {
+ LOG_INFO(Frontend, "Started gamemode");
+ }
+ }
+}
+
+void StopGamemode() {
+ if (Settings::values.enable_gamemode) {
+ if (gamemode_request_end() < 0) {
+ LOG_WARNING(Frontend, "Failed to stop gamemode: {}", gamemode_error_string());
+ } else {
+ LOG_INFO(Frontend, "Stopped gamemode");
+ }
+ }
+}
+
+void SetGamemodeState(bool state) {
+ if (state) {
+ StartGamemode();
+ } else {
+ StopGamemode();
+ }
+}
+
+} // namespace Common::Linux
diff --git a/src/common/linux/gamemode.h b/src/common/linux/gamemode.h
new file mode 100644
index 000000000..b80646ae2
--- /dev/null
+++ b/src/common/linux/gamemode.h
@@ -0,0 +1,24 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+namespace Common::Linux {
+
+/**
+ * Start the (Feral Interactive) Linux gamemode if it is installed and it is activated
+ */
+void StartGamemode();
+
+/**
+ * Stop the (Feral Interactive) Linux gamemode if it is installed and it is activated
+ */
+void StopGamemode();
+
+/**
+ * Start or stop the (Feral Interactive) Linux gamemode if it is installed and it is activated
+ * @param state The new state the gamemode should have
+ */
+void SetGamemodeState(bool state);
+
+} // namespace Common::Linux