Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The event loop was reworked in #2767, but unfortunately I didn't know enough about run loops back then to know how to do this kind of stuff correctly. I think I have a pretty good idea now, in short, it works as follows:
AppKit retains a queue of events, which can be popped from using
-[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
, and then passed to-[NSApplication sendEvent:]
(though you're free to filter them if you so desire). This allows us to process events one at a time. It is suboptimal because certain actions like resizing will enter a "modal" mode (similar to this issue), which will prevent events from being delivered while that is ongoing; but that's the cost ofpump_app_events
.The implementation is now similar to the implementation we had all the way back in
v0.19
, and is very close to SDL's approach.changelog
module if knowledge of this change could be valuable to users