28 Mar 2012 16:57
[STUMP] Event processing hook
Alessandro Piras <laynor <at> gmail.com>
2012-03-28 14:57:14 GMT
2012-03-28 14:57:14 GMT
Hi everybody, I'm starting hacking on stumpwm. I wrote a systray in common lisp that runs in the same image as stumpwm. I only tested it on sbcl, and it's not completely ready yet - it's still buggy, some errors occur when resuming the system after hibernating. I needed to process the tray events, and I thought processing them separately from the other stumpwm events would have been better, so I added a hook that runs just before stumpwm processes it's own event. The patch is attached here, let me know what you think! It would be great if it could get pushed to the main git repo(Continue reading)As an example, here is the code that I wrote to process the events for my tray: (let ((event-handler (lambda () (loop while (ignore-errors (xlib:process-event stumpwm::*display* :timeout 0 :handler hnd)))))) (setf (tray-event-processing-fn tray) event-handler) (stumpwm::add-hook stumpwm:*event-processing-hook* event-handler)))) The 0 timeout is needed so that when there are no more tray-relative events to process, hnd will return nil but process-events will still terminate, allowing stumpwm to process the other events. About the errors I'm getting after resuming, I would like to do something about them, but I don't know where to start. I've seen there is a *top-level-error-hook*, but I've seen no arguments are passed to it. How am I supposed to check the error, to see if it's a tray related error that I need to handle or some other error that I should not?
As an example, here is the code that I wrote to process the events for my tray:
(let ((event-handler (lambda ()
(loop while (ignore-errors
(xlib:process-event stumpwm::*display* :timeout 0 :handler hnd))))))
(setf (tray-event-processing-fn tray) event-handler)
(stumpwm::add-hook stumpwm:*event-processing-hook*
event-handler))))
The 0 timeout is needed so that when there are no more tray-relative
events to process, hnd will return nil but process-events will still
terminate, allowing stumpwm to process the other events.
About the errors I'm getting after resuming, I would like to do
something about them, but I don't know where to start.
I've seen there is a *top-level-error-hook*, but I've seen no
arguments are passed to it. How am I supposed to check the error, to
see if it's a tray related error that I need to handle or some other
error that I should not?
RSS Feed