macOS: Improve event queuing (#3708)

* Use AppKit's internal queuing mechanisms

This allows events to be queued in a more consistent order, they're now
interleaved with events that we handle immediately (like redraw events),
instead of being handled afterwards.

* Only queue events if necessary

This makes the call stack / backtraces easier to understand whenever
possible, and generally improves upon the order in which events are
delivered.
This commit is contained in:
Mads Marquart 2024-06-06 12:32:02 +02:00 committed by GitHub
parent 0e74d37ff5
commit 279e3edc54
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 172 additions and 113 deletions

View file

@ -252,7 +252,7 @@ impl<T> EventLoop<T> {
});
let panic_info: Rc<PanicInfo> = Default::default();
setup_control_flow_observers(Rc::downgrade(&panic_info));
setup_control_flow_observers(mtm, Rc::downgrade(&panic_info));
let (sender, receiver) = mpsc::channel();
Ok(EventLoop {