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

Without-interrupts and event-handling

It seems that any function that is called inside an event-handler method is
implicitly wrapped inside ccl:without-interrupts.  Is this definitely the case?

I have a function which does some animation -- basically it repeatedly redraws
the contents of a window.  This function can be called explicitly from the
listener, or by the ccl:view-click-event-handler when you click in the window.
MCL's event handling behavior is different, depending on which way I invoke the
function.  If I call it from the listener, then while the window is animating,
I can click around on other windows, bringing them to the front as I click,
and process various other events.

But if the animation function is invoked from the event-handler, then all
event processing (like clicks in other windows) are queued up until the
function returns, and then the events are all processed at once.

I would like to be able to process other events while the function executes,
regardless of how it was invoked.  Is there a way to re-enable interrupts
inside the event-handler, or not disable them in the first place?

Also, is there any way to trace ccl:without-interrupts?  It is apparently
not a function or a macro, but a "Special Form".  Perhaps there is some
auxiliary function that can be traced, like you can trace
ccl::call-with-focused-view when you really want to know about the macro

Thanks for any suggestions,

--Andrew Mickish