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 |   (when exwm-input--update-focus-timer | ||||||
|     (cancel-timer exwm-input--update-focus-timer)) |     (cancel-timer exwm-input--update-focus-timer)) | ||||||
|   ;; Make input focus working even without a WM. |   ;; Make input focus working even without a WM. | ||||||
|  |   (when exwm--connection | ||||||
|     (xcb:+request exwm--connection |     (xcb:+request exwm--connection | ||||||
|         (make-instance 'xcb:SetInputFocus |         (make-instance 'xcb:SetInputFocus | ||||||
|                        :revert-to xcb:InputFocus:PointerRoot |                        :revert-to xcb:InputFocus:PointerRoot | ||||||
|                        :focus exwm--root |                        :focus exwm--root | ||||||
|                        :time xcb:Time:CurrentTime)) |                        :time xcb:Time:CurrentTime)) | ||||||
|   (xcb:flush exwm--connection)) |     (xcb:flush exwm--connection))) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue