fix(core): deadlock on window create (#9429)

* fix(core): deadlock on window create

* Update mod.rs

Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>

---------

Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
This commit is contained in:
Lucas Fernandes Nogueira 2024-04-10 10:49:59 -03:00 committed by GitHub
parent 4973d73a23
commit 32b213399f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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)
}