From 32b213399fb8d1d263bbae5aa9d14ac3bac67b6f Mon Sep 17 00:00:00 2001 From: Lucas Fernandes Nogueira Date: Wed, 10 Apr 2024 10:49:59 -0300 Subject: [PATCH] fix(core): deadlock on window create (#9429) * fix(core): deadlock on window create * Update mod.rs Co-authored-by: Fabian-Lars --------- Co-authored-by: Fabian-Lars --- core/tauri/src/window/mod.rs | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/core/tauri/src/window/mod.rs b/core/tauri/src/window/mod.rs index 9df2fc711..f1d48c421 100644 --- a/core/tauri/src/window/mod.rs +++ b/core/tauri/src/window/mod.rs @@ -424,17 +424,22 @@ tauri::Builder::default() crate::vibrancy::set_window_effects(&window, Some(effects))?; } - app_manager.webview.eval_script_all(format!( - "window.__TAURI_INTERNALS__.metadata.windows = {window_labels_array}.map(function (label) {{ return {{ label: label }} }})", - window_labels_array = serde_json::to_string(&app_manager.window.labels())?, - ))?; + let app_manager = self.manager.manager_owned(); + let window_label = window.label().to_string(); + // run on the main thread to fix a deadlock on webview.eval if the tracing feature is enabled + let _ = window.run_on_main_thread(move || { + let _ = app_manager.webview.eval_script_all(format!( + "window.__TAURI_INTERNALS__.metadata.windows = {window_labels_array}.map(function (label) {{ return {{ label: label }} }})", + window_labels_array = serde_json::to_string(&app_manager.window.labels()).unwrap(), + )); - app_manager.emit( - "tauri://window-created", - Some(crate::webview::CreatedEvent { - label: window.label().into(), - }), - )?; + let _ = app_manager.emit( + "tauri://window-created", + Some(crate::webview::CreatedEvent { + label: window_label, + }), + ); + }); Ok(window) }