diff options
author | Chris Feng <chris.w.feng@gmail.com> | 2019-08-25T00·00+0000 |
---|---|---|
committer | Chris Feng <chris.w.feng@gmail.com> | 2019-08-25T00·00+0000 |
commit | 5505cff826b361d5d0090a6314891005595e3279 (patch) | |
tree | 18ed9005bb3f1739c878a947312309f164094a78 /exwm.el | |
parent | 5b9f4b0851d27e8132a930dfbfec0b94099a4c9f (diff) |
Fix a lock issue with _NET_CLOSE_WINDOW and WM_DELETE_WINDOW
* exwm.el (exwm--on-ClientMessage): Calling `kill-buffer' directly from an event context won't work since the DestroyNotify event for a WM_DELETE_WINDOW request won't be handled until the current event context terminates. * exwm-manage.el (exwm-manage--kill-buffer-query-function): Avoid potential side effects with MapWindow.
Diffstat (limited to 'exwm.el')
-rw-r--r-- | exwm.el | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/exwm.el b/exwm.el index 9ebfabf9e817..8ea4a7636f86 100644 --- a/exwm.el +++ b/exwm.el @@ -420,7 +420,8 @@ (setq type (slot-value obj 'type) id (slot-value obj 'window) data (slot-value (slot-value obj 'data) 'data32)) - (exwm--log "atom=%s(%s)" (x-get-atom-name type exwm-workspace--current) type) + (exwm--log "atom=%s(%s)" (x-get-atom-name type exwm-workspace--current) + type) (cond ;; _NET_NUMBER_OF_DESKTOPS. ((= type xcb:Atom:_NET_NUMBER_OF_DESKTOPS) @@ -459,7 +460,7 @@ ((= type xcb:Atom:_NET_CLOSE_WINDOW) (let ((buffer (exwm--id->buffer id))) (when (buffer-live-p buffer) - (kill-buffer buffer)))) + (exwm--defer 0 #'kill-buffer buffer)))) ;; _NET_WM_MOVERESIZE ((= type xcb:Atom:_NET_WM_MOVERESIZE) (let ((direction (elt data 2)) |