mirror of
https://github.com/emacs-exwm/exwm.git
synced 2024-11-27 06:48:00 +01:00
Don't assume that exwm--connection is non-nil
`exwm-input--exit` could be called (via `exwm-exit`) from `exwm-init` in case of error when initialising EXWM. It could happen that the bit that failed when exwm-init is executed was the call to `xcb:connect`, hence `exwm--connection` would be nil when errors are handled (and `exwm-exit` is called). Without this patch, in the case above, the user will see a crash as there's no method allowing a nil XCB connection object: Debugger entered--Lisp error: (cl-no-applicable-method xcb:-+request nil #<xcb:SetInputFocus ... even worse, not even giving the chance to the `warn` call in `exwm-init`'s error handler to actually inform the user about the actual problem ("[XELB] Connection timeout", for instance). * exwm-input.el (exwm-input--exit): Check `exwm--connection' is set before trying to send requests.
This commit is contained in:
parent
b62d5e79b0
commit
cff02333e2
1 changed files with 7 additions and 6 deletions
|
@ -1215,12 +1215,13 @@ One use is to access the keymap bound to KEYS (as prefix keys) in char-mode."
|
|||
(when exwm-input--update-focus-timer
|
||||
(cancel-timer exwm-input--update-focus-timer))
|
||||
;; Make input focus working even without a WM.
|
||||
(xcb:+request exwm--connection
|
||||
(make-instance 'xcb:SetInputFocus
|
||||
:revert-to xcb:InputFocus:PointerRoot
|
||||
:focus exwm--root
|
||||
:time xcb:Time:CurrentTime))
|
||||
(xcb:flush exwm--connection))
|
||||
(when exwm--connection
|
||||
(xcb:+request exwm--connection
|
||||
(make-instance 'xcb:SetInputFocus
|
||||
:revert-to xcb:InputFocus:PointerRoot
|
||||
:focus exwm--root
|
||||
:time xcb:Time:CurrentTime))
|
||||
(xcb:flush exwm--connection)))
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue