From 185b0e314ece9563cd7c83a16466b2b8b9167eb3 Mon Sep 17 00:00:00 2001 From: Lucas Fernandes Nogueira Date: Thu, 30 Jun 2022 10:39:10 -0300 Subject: [PATCH] fix(tauri-runtime-wry): deadlock when window focus change, closes #4533 (#4539) --- .changes/fix-webview-event-handler.md | 5 +++++ core/tauri-runtime-wry/src/lib.rs | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 .changes/fix-webview-event-handler.md diff --git a/.changes/fix-webview-event-handler.md b/.changes/fix-webview-event-handler.md new file mode 100644 index 000000000..64131aa47 --- /dev/null +++ b/.changes/fix-webview-event-handler.md @@ -0,0 +1,5 @@ +--- +"tauri-runtime-wry": patch +--- + +Fixes a deadlock when the window focus change on Windows. diff --git a/core/tauri-runtime-wry/src/lib.rs b/core/tauri-runtime-wry/src/lib.rs index f64120b1b..8932d66e3 100644 --- a/core/tauri-runtime-wry/src/lib.rs +++ b/core/tauri-runtime-wry/src/lib.rs @@ -2403,13 +2403,14 @@ fn handle_user_message( } } WebviewMessage::WebviewEvent(event) => { - if let Some(window) = windows + let window_event_listeners = windows .lock() .expect("poisoned webview collection") .get(&id) - { + .map(|w| w.window_event_listeners.clone()); + if let Some(window_event_listeners) = window_event_listeners { if let Some(event) = WindowEventWrapper::from(&event).0 { - let listeners = window.window_event_listeners.lock().unwrap(); + let listeners = window_event_listeners.lock().unwrap(); let handlers = listeners.values(); for handler in handlers { handler(&event);