diff options
| author | AAGaming <aagaming@riseup.net> | 2025-07-01 15:24:52 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-01 15:24:52 -0400 |
| commit | e63983dba912cbf88814d635785039f1b37c94c3 (patch) | |
| tree | 884a03e24e7c35c517e5b906c8f369fe7c9db62e | |
| parent | cbea1518ed1e88fde34e40a16a0e9c20e954a9f5 (diff) | |
| download | decky-loader-e63983dba912cbf88814d635785039f1b37c94c3.tar.gz decky-loader-e63983dba912cbf88814d635785039f1b37c94c3.zip | |
Fix updater reload freezing (#786)v3.1.7-pre1
| -rw-r--r-- | backend/decky_loader/localplatform/localplatformlinux.py | 5 | ||||
| -rw-r--r-- | backend/decky_loader/updater.py | 5 |
2 files changed, 4 insertions, 6 deletions
diff --git a/backend/decky_loader/localplatform/localplatformlinux.py b/backend/decky_loader/localplatform/localplatformlinux.py index 63a07292..beaa2540 100644 --- a/backend/decky_loader/localplatform/localplatformlinux.py +++ b/backend/decky_loader/localplatform/localplatformlinux.py @@ -11,7 +11,7 @@ logger = logging.getLogger("localplatform") # subprocess._ENV ENV = Mapping[str, str] ProcessIO = int | IO[Any] | None -async def run(args: list[str], stdin: ProcessIO = DEVNULL, stdout: ProcessIO = PIPE, stderr: ProcessIO = PIPE, env: ENV | None = None) -> tuple[Process, bytes | None, bytes | None]: +async def run(args: list[str], stdin: ProcessIO = DEVNULL, stdout: ProcessIO = PIPE, stderr: ProcessIO = PIPE, env: ENV | None = {"LD_LIBRARY_PATH": ""}) -> tuple[Process, bytes | None, bytes | None]: proc = await create_subprocess_exec(args[0], *(args[1:]), stdin=stdin, stdout=stdout, stderr=stderr, env=env) proc_stdout, proc_stderr = await proc.communicate() return (proc, proc_stdout, proc_stderr) @@ -146,6 +146,7 @@ async def service_active(service_name : str) -> bool: async def service_restart(service_name : str, block : bool = True) -> bool: await run(["systemctl", "daemon-reload"]) + logger.info("Systemd reload done.") cmd = ["systemctl", "restart", service_name] if not block: @@ -272,7 +273,7 @@ async def close_cef_socket(): logger.info(f"Closing CEF socket with PID {pid} and FD {fd}") # Use gdb to inject a close() call for the socket fd into steamwebhelper - gdb_ret, _, _ = await run(["gdb", "--nx", "-p", pid, "--batch", "--eval-command", f"call (int)close({fd})"], env={"LD_LIBRARY_PATH": ""}) + gdb_ret, _, _ = await run(["gdb", "--nx", "-p", pid, "--batch", "--eval-command", f"call (int)close({fd})"]) if gdb_ret.returncode != 0: logger.error(f"Failed to close CEF socket with gdb! return code: {str(gdb_ret.returncode)}", exc_info=True) diff --git a/backend/decky_loader/updater.py b/backend/decky_loader/updater.py index 75f9618b..3fdfcc04 100644 --- a/backend/decky_loader/updater.py +++ b/backend/decky_loader/updater.py @@ -14,7 +14,6 @@ import zipfile from aiohttp import ClientSession from . import helpers -from .injector import get_gamepadui_tab from .settings import SettingsManager if TYPE_CHECKING: from .main import PluginManager @@ -142,8 +141,6 @@ class Updater: async def download_decky_binary(self, download_url: str, version: str, is_zip: bool = False, size_in_bytes: int | None = None): download_filename = "PluginLoader" if ON_LINUX else "PluginLoader.exe" download_temp_filename = download_filename + ".new" - tab = await get_gamepadui_tab() - await tab.open_websocket() if size_in_bytes == None: size_in_bytes = 26214400 # 25MiB, a reasonable overestimate (19.6MiB as of 2024/02/25) @@ -186,7 +183,6 @@ class Updater: logger.info("Updated loader installation.") await self.context.ws.emit("updater/finish_download") - await tab.close_websocket() await self.do_restart() async def do_update(self): @@ -244,6 +240,7 @@ class Updater: await self.download_decky_binary(download_url, version, size_in_bytes=size_in_bytes) async def do_restart(self): + logger.info("Restarting loader for update.") await service_restart("plugin_loader", block=False) async def do_shutdown(self): |
