This commit extends the RetroArch desktop entry
file—responsible for integrating the app with
Linux desktop environments—to include all relevant
properties. Some notable aspects:
- **`TryExec`**/**`Exec`**: TryExec _should_
contain the canonical path to the executable,
however the RA buildsystem lacks a ready
mechanism for populating the correct value for
the target at build time, so we fallback to
searching $PATH here. To Exec we add the %F
token, meaning that RA is a "file handler" that
users are able to drag files onto the launcher
icon that become arguments to the launch command.
- **`MimeType`**: This key determines which file
extensions the system should offer to open with RA.
It should be regularly reviewed for any new MIME
registrations which need to be represented going
forward.
- **`PrefersNonDefaultGPU`**: Linux by default offers
hardware to processes in order from least capable to
most performant. This key reverses that behavior so
more demanding emulation cores will run more
smoothly.
- **`SingleMainWindow`**: Changes the default behavior
when the launcher is clicked while an instance is
already running from launch a second instance to
elevate the main window of the already running one.
Version 1.5 of the Freedesktop [Desktop Entry
Specification](https://specifications.freedesktop.org/desktop-entry-spec/latest/) was the reference for these changes.
Signed-off-by: Peter J. Mello <admin@petermello.net>
When loading and saving states taken during a replay, their contents
should be compared with the current replay.
- If in playback mode, states from past the end of the current replay
should be disallowed, as should states from an alternate timeline of
the current replay (inconsistent input history)
- This is because in playback mode, RA replays are read-only
- If in recording mode, states from the future or from another
timeline should overwrite the current replay's data with a warning
- In either playback or recording, loads of states from the past that
have a consistent series of inputs (same timeline) should be loaded
and the replay should be rewound (and truncated in case of recording)
This behavior is as specified in
https://tasvideos.org/LawsOfTAS/OnSavestates
The existing code only implemented some of these checks.
On systems where pipewire is installed but the build is configured with
--disable-pipewire, HAVE_PIPEWIRE_STABLE is set to 1 while HAVE_PIPEWIRE
is 0. Checking only HAVE_PIPEWIRE_STABLE leads to a build failure.
```
LD retroarch
/usr/lib/gcc/x86_64-pc-linux-gnu/15/../../../../x86_64-pc-linux-gnu/bin/ld: obj-unix/release/camera/camera_driver.o:(.data.rel+0x0): undefined reference to `camera_pipewire'
collect2: error: ld returned 1 exit status
```
Downstream Bug: https://bugs.gentoo.org/960043