aboutsummaryrefslogtreecommitdiff
path: root/src/qt_common/gamemode.cpp
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2025-12-07 07:13:43 +0100
committercrueter <crueter@eden-emu.dev>2025-12-07 07:13:43 +0100
commit83332316aa382e11e6af79b8432520ff4c9950b6 (patch)
tree73c025c0deb6bd7095e908fecba15b1cf65120d0 /src/qt_common/gamemode.cpp
parent3141019fcd01f7b8da310c1a1fb233866fe7cf93 (diff)
[gamemode] Make available on other platforms (#353)
Signed-off-by: lizzie <lizzie@eden-emu.dev> Co-authored-by: crueter <crueter@eden-emu.dev> Co-authored-by: Caio Oliveira <caiooliveirafarias0@gmail.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/353 Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Reviewed-by: Caio Oliveira <caiooliveirafarias0@gmail.com> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
Diffstat (limited to 'src/qt_common/gamemode.cpp')
-rw-r--r--src/qt_common/gamemode.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/qt_common/gamemode.cpp b/src/qt_common/gamemode.cpp
new file mode 100644
index 0000000000..6a3d870aae
--- /dev/null
+++ b/src/qt_common/gamemode.cpp
@@ -0,0 +1,52 @@
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+// While technically available on al *NIX platforms, Linux is only available
+// as the primary target of libgamemode.so - so warnings are suppressed
+#ifdef __unix__
+#include <gamemode_client.h>
+#endif
+#include "qt_common/gamemode.h"
+#include "common/logging/log.h"
+#include "qt_common/config/uisettings.h"
+
+namespace Common::FeralGamemode {
+
+/// @brief Start the gamemode client
+void Start() noexcept {
+ if (UISettings::values.enable_gamemode) {
+#ifdef __unix__
+ if (gamemode_request_start() < 0) {
+#ifdef __linux__
+ LOG_WARNING(Frontend, "{}", gamemode_error_string());
+#else
+ LOG_INFO(Frontend, "{}", gamemode_error_string());
+#endif
+ } else {
+ LOG_INFO(Frontend, "Done");
+ }
+#endif
+ }
+}
+
+/// @brief Stop the gmemode client
+void Stop() noexcept {
+ if (UISettings::values.enable_gamemode) {
+#ifdef __unix__
+ if (gamemode_request_end() < 0) {
+#ifdef __linux__
+ LOG_WARNING(Frontend, "{}", gamemode_error_string());
+#else
+ LOG_INFO(Frontend, "{}", gamemode_error_string());
+#endif
+ } else {
+ LOG_INFO(Frontend, "Done");
+ }
+#endif
+ }
+}
+
+} // namespace Common::Linux