summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAAGaming <aagaming@riseup.net>2025-07-01 15:24:52 -0400
committerGitHub <noreply@github.com>2025-07-01 15:24:52 -0400
commite63983dba912cbf88814d635785039f1b37c94c3 (patch)
tree884a03e24e7c35c517e5b906c8f369fe7c9db62e
parentcbea1518ed1e88fde34e40a16a0e9c20e954a9f5 (diff)
downloaddecky-loader-3.1.7-pre1.tar.gz
decky-loader-3.1.7-pre1.zip
Fix updater reload freezing (#786)v3.1.7-pre1
-rw-r--r--backend/decky_loader/localplatform/localplatformlinux.py5
-rw-r--r--backend/decky_loader/updater.py5
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):