瀏覽代碼

fix(tauri-runtime-wry): deadlock when window focus change, closes #4533 (#4539)

Lucas Fernandes Nogueira 3 年之前
父節點
當前提交
185b0e314e
共有 2 個文件被更改,包括 9 次插入3 次删除
  1. 5 0
      .changes/fix-webview-event-handler.md
  2. 4 3
      core/tauri-runtime-wry/src/lib.rs

+ 5 - 0
.changes/fix-webview-event-handler.md

@@ -0,0 +1,5 @@
+---
+"tauri-runtime-wry": patch
+---
+
+Fixes a deadlock when the window focus change on Windows.

+ 4 - 3
core/tauri-runtime-wry/src/lib.rs

@@ -2403,13 +2403,14 @@ fn handle_user_message<T: UserEvent>(
         }
       }
       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);