From f96aba9d99227752219a247e4107566ce08fe333 Mon Sep 17 00:00:00 2001 From: m4ko Date: Tue, 1 Sep 2026 20:05:54 +0200 Subject: [PATCH] Fixed multiple clients bug in umu. --- ptlinux/cli.py | 1 + ptlinux/runtime.py | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/ptlinux/cli.py b/ptlinux/cli.py index 9ce31b2..78dc5c5 100644 --- a/ptlinux/cli.py +++ b/ptlinux/cli.py @@ -819,6 +819,7 @@ def _play_locked( runner, start_option=start_option, use_gamebox=not no_box, + concurrent_prefix_launch=reuse_prepared, ) except KeyboardInterrupt: current_game_log = _current_game_log( diff --git a/ptlinux/runtime.py b/ptlinux/runtime.py index 777ce12..ec56f21 100644 --- a/ptlinux/runtime.py +++ b/ptlinux/runtime.py @@ -380,6 +380,7 @@ def run_game( *, start_option: DepotStartOption = DEFAULT_DEPOT_START_OPTION, use_gamebox: bool = True, + concurrent_prefix_launch: bool = False, timeout_seconds: float = 12 * 60 * 60, check: bool = True, extra_environment: Mapping[str, str] | None = None, @@ -428,6 +429,13 @@ def run_game( selection, synchronization=resolve_proton_sync_mode(settings.proton_sync), ) + if selection.kind in {"umu", "proton7-container"}: + # Keep every UMU launch identical except for the verb, as required when + # several games share one prefix. The first client owns prefix startup; + # every later shared-lease client joins the active wineserver directly. + environment["PROTON_VERB"] = ( + "runinprefix" if concurrent_prefix_launch else "waitforexitandrun" + ) if use_gamebox: game_command = build_gamebox_command(game_command, settings) if extra_environment: