emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/exwm d0c2ca7: Fix a possible deadlock


From: Chris Feng
Subject: [elpa] externals/exwm d0c2ca7: Fix a possible deadlock
Date: Thu, 6 Oct 2016 11:33:22 +0000 (UTC)

branch: externals/exwm
commit d0c2ca75f8ac78d87aba3e80902fb0f113b10279
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>

    Fix a possible deadlock
    
    * exwm-input.el (exwm-input--update-focus): Unlock before switching
    workspace.  Also make sure the correct Emacs window is chosen for the
    target workspace.
---
 exwm-input.el |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/exwm-input.el b/exwm-input.el
index 4a8fdbb..a2f4780 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -212,7 +212,10 @@ This value should always be overwritten.")
     (with-current-buffer (window-buffer window)
       (if (eq major-mode 'exwm-mode)
           (if (not (eq exwm--frame exwm-workspace--current))
-              (exwm-workspace-switch exwm--frame)
+              (progn
+                (set-frame-parameter exwm--frame 'exwm-selected-window window)
+                (run-with-idle-timer 0 nil #'exwm-workspace-switch
+                                     exwm--frame))
             (exwm--log "Set focus on #x%x" exwm--id)
             (exwm-input--set-focus exwm--id)
             (when exwm--floating-frame
@@ -233,7 +236,11 @@ This value should always be overwritten.")
                    (not (eq (selected-frame) exwm-workspace--current)))
               ;; The focus is on another workspace (e.g. it got clicked)
               ;; so switch to it.
-              (exwm-workspace-switch (selected-frame))
+              (progn
+                (set-frame-parameter (selected-frame) 'exwm-selected-window
+                                     window)
+                (run-with-idle-timer 0 nil #'exwm-workspace-switch
+                                     (selected-frame)))
             ;; The focus is still on the current workspace.
             (if (not (and (exwm-workspace--minibuffer-own-frame-p)
                           (minibufferp)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]