mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-11-12 03:21:08 +00:00
Keep a Proton choice unless the shared build needs the other platform
This commit is contained in:
1 parent
5f0e6a8b7e
commit
82d8eb3b79
3 files changed
+14
-4
No files matched your search
@@ -305,7 +305,8 @@ alone would then read as an installed client.
|
||||
downloaded its version again (Left 4 Dead 2, 8.6 GB; hard links do not help, switching platform makes
|
||||
Steam download depot 551 anyway). A shared game gets the tool its own client uses: `droiddeck-fex`
|
||||
there becomes `droiddeck-direct` here and the other way round, a Proton build keeps its Proton. Only
|
||||
automatic choices are replaced; a tool the user picked stays.
|
||||
an automatic choice that would switch the build is replaced; any other choice, including another
|
||||
Proton, stays.
|
||||
- **Updates and uninstall.** The newer manifest wins: an update made through a view is written back to
|
||||
the client that owns the game. Uninstalling a shared game removes it from that client only; its files
|
||||
stay with the client that installed it (Steam does not delete through the link) and it stays hidden
|
||||
|
||||
@@ -11,6 +11,7 @@ NOT_GAMES = frozenset((
|
||||
))
|
||||
TOOL_DIR = re.compile(r"(steam ?linux ?runtime.*|proton.*|steamworks shared|fex|steamvr)", re.I)
|
||||
AUTOMATIC = ("", "droiddeck-direct", "droiddeck-fex", "droiddeck-proton-arm64", "droiddeck-proton-11-arm64")
|
||||
LINUX_TOOLS = ("droiddeck-direct", "droiddeck-fex")
|
||||
STATE = ".droiddeck-shared.json"
|
||||
LABELS = {"arm64": "ARM64 client games", "x86-64": "x86-64 client games"}
|
||||
|
||||
@@ -205,6 +206,8 @@ def set_tools(config, wanted):
|
||||
name = name.group(1) if name else ""
|
||||
if name == tool or not (canonical(name) in map(canonical, AUTOMATIC) or name.startswith("proton_")):
|
||||
continue
|
||||
if name and (name in LINUX_TOOLS) == (tool in LINUX_TOOLS):
|
||||
continue
|
||||
inner = inner[:m.start()] + inner[m.end():]
|
||||
inner = ('\n\t\t\t\t\t"%s"\n\t\t\t\t\t{\n\t\t\t\t\t\t"name"\t\t"%s"\n\t\t\t\t\t\t"config"\t\t""\n'
|
||||
'\t\t\t\t\t\t"priority"\t\t"250"\n\t\t\t\t\t}' % (app, tool)) + inner
|
||||
|
||||
@@ -75,11 +75,17 @@ class SteamShareTest(unittest.TestCase):
|
||||
self.assertEqual(tools['413150'], 'droiddeck-direct')
|
||||
self.assertEqual(tools['13210'], 'droiddeck-proton-a64')
|
||||
|
||||
def test_an_automatic_x64_proton_is_replaced(self):
|
||||
def test_a_proton_pick_stays_when_the_other_client_uses_another_proton(self):
|
||||
(self.x64 / 'config/config.vdf').write_text(CONFIG % mapping(_13210='droiddeck-proton-11-a64'))
|
||||
(self.arm / 'config/config.vdf').write_text(CONFIG % mapping(_0='droiddeck-proton-arm64'))
|
||||
self.run_share('x86-64')
|
||||
self.assertEqual(SHARE['entries']((self.x64 / 'config/config.vdf').read_text())['13210'], 'droiddeck-proton-a64')
|
||||
self.assertEqual(SHARE['entries']((self.x64 / 'config/config.vdf').read_text())['13210'], 'droiddeck-proton-11-a64')
|
||||
|
||||
def test_an_automatic_proton_gives_way_to_the_installed_linux_build(self):
|
||||
self.install(self.x64, '550', 'Left 4 Dead 2')
|
||||
(self.x64 / 'config/config.vdf').write_text(CONFIG % mapping(_550='droiddeck-direct'))
|
||||
(self.arm / 'config/config.vdf').write_text(CONFIG % mapping(_0='droiddeck-proton-arm64', _550='droiddeck-proton-arm64'))
|
||||
self.run_share('arm64')
|
||||
self.assertEqual(SHARE['entries']((self.arm / 'config/config.vdf').read_text())['550'], 'droiddeck-fex')
|
||||
|
||||
def test_an_x64_proton_pick_reaches_the_arm64_client(self):
|
||||
self.install(self.x64, '550', 'Left 4 Dead 2')
|
||||
|
||||
Reference in new issue
Block a user