mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 02:11:36 -04:00
39 lines
1.7 KiB
C
39 lines
1.7 KiB
C
/* game_mode: Steam Deck / gamescope detection and its precedence. */
|
|
#include "game_mode.h"
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
static int fails;
|
|
static void ok(int c, const char *w) { printf(" %s %s\n", c ? "ok " : "FAIL", w); if (!c) fails++; }
|
|
|
|
int main(void) {
|
|
PsxGameModeEnv e;
|
|
const char *why;
|
|
memset(&e, 0, sizeof e); e.cli_game_mode = -1;
|
|
ok(!psx_game_mode_detect(&e, &why) && !strcmp(why, "desktop"), "desktop: off");
|
|
e.xdg_current_desktop = "gamescope";
|
|
ok(psx_game_mode_detect(&e, &why), "XDG_CURRENT_DESKTOP=gamescope: on");
|
|
e.xdg_current_desktop = "KDE"; e.gamescope_display = "gamescope-0";
|
|
ok(psx_game_mode_detect(&e, &why), "GAMESCOPE_WAYLAND_DISPLAY: on");
|
|
e.gamescope_display = NULL;
|
|
ok(!psx_game_mode_detect(&e, &why), "Deck Desktop Mode without a gamepad session: off");
|
|
e.steam_gamepad_ui = "1";
|
|
ok(psx_game_mode_detect(&e, &why), "SteamGamepadUI=1: on");
|
|
e.steam_gamepad_ui = "0";
|
|
ok(!psx_game_mode_detect(&e, &why), "SteamGamepadUI=0: off");
|
|
e.steam_gamepad_ui = "false";
|
|
ok(!psx_game_mode_detect(&e, &why), "only SteamGamepadUI=1 detects a session");
|
|
e.steam_gamepad_ui = "1"; e.psx_game_mode = "0";
|
|
ok(!psx_game_mode_detect(&e, &why), "PSX_GAME_MODE=0 beats detection");
|
|
e.psx_game_mode = "1"; e.steam_gamepad_ui = NULL;
|
|
ok(psx_game_mode_detect(&e, &why), "PSX_GAME_MODE=1 on a desktop");
|
|
e.cli_game_mode = 0;
|
|
ok(!psx_game_mode_detect(&e, &why), "--no-game-mode beats PSX_GAME_MODE");
|
|
e.cli_game_mode = 1; e.psx_game_mode = "0";
|
|
ok(psx_game_mode_detect(&e, &why) && !strcmp(why, "--game-mode"), "--game-mode wins");
|
|
ok(!psx_game_mode_detect(NULL, &why), "NULL env is safe");
|
|
printf("%s\n", fails ? "FAILED" : "passed");
|
|
return fails ? 1 : 0;
|
|
}
|