summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/decky_loader/main.py2
-rw-r--r--frontend/src/index.ts14
2 files changed, 14 insertions, 2 deletions
diff --git a/backend/decky_loader/main.py b/backend/decky_loader/main.py
index 8fbbaf86..4649ccd3 100644
--- a/backend/decky_loader/main.py
+++ b/backend/decky_loader/main.py
@@ -207,7 +207,7 @@ class PluginManager:
await tab.close_websocket()
self.js_ctx_tab = None
await restart_webhelper()
- await sleep(5)
+ await sleep(1) # To give CEF enough time to close down the websocket
return # We'll catch the next tab in the main loop
await tab.evaluate_js("try{if (window.deckyHasLoaded){setTimeout(() => SteamClient.Browser.RestartJSContext(), 100)}else{window.deckyHasLoaded = true;(async()=>{try{await import('http://localhost:1337/frontend/index.js?v=%s')}catch(e){console.error(e)};})();}}catch(e){console.error(e)}" % (get_loader_version(), ), False, False, False)
except:
diff --git a/frontend/src/index.ts b/frontend/src/index.ts
index 7910c740..029a731c 100644
--- a/frontend/src/index.ts
+++ b/frontend/src/index.ts
@@ -6,10 +6,22 @@ interface Window {
(async () => {
// Wait for main webpack chunks to definitely be loaded
- console.debug('[Decky:Boot] Waiting for main Webpack chunks...');
+ console.time('[Decky:Boot] Waiting for main Webpack chunks...');
while (!window.webpackChunksteamui || window.webpackChunksteamui.length < 8) {
await new Promise((r) => setTimeout(r, 10)); // Can't use DFL sleep here.
}
+ console.timeEnd('[Decky:Boot] Waiting for main Webpack chunks...');
+
+ // Wait for the React root to be mounted
+ console.time('[Decky:Boot] Waiting for React root mount...');
+ let root;
+ while (
+ !(root = document.getElementById('root')) ||
+ !(root as any)[Object.keys(root).find((k) => k.startsWith('__reactContainer$')) as string]
+ ) {
+ await new Promise((r) => setTimeout(r, 10)); // Can't use DFL sleep here.
+ }
+ console.timeEnd('[Decky:Boot] Waiting for React root mount...');
if (!window.SP_REACT) {
console.debug('[Decky:Boot] Setting up Webpack & React globals...');