b8f92a6ce4
As event handling goes: 1) Events get generated and queued by the seat (from another thread in native, in the same thread in X11) 2) The MetaBackend gets those events and forwards them to Clutter via clutter_do_event() 3) The events get queued in the ClutterStage 4) At the time of processing a frame, the input events are processed, 5) Motion events are throttled, only the last is effectively handled 6) Events are filtered, wayland and WM handling happens here 7) Events maybe reach to clutter This commit moves 6 to happen between 2 and 3. The end result is that: - Throttling only applies to Clutter event handling, The wayland event forwarding bits will handle the event stream as soon as it comes, as timely as possible. - WM event handling is also unthrottled, but that's more of a side effect. - This all still happens on the main thread, so there's the possibility that other busy areas (e.g. relayout) temporarily block this event forwarding. - Sending events unthrottled inherently means more CPU, probably dependent on input devices' frequency. The impact is not measured. This should bring the best of both worlds with e.g. 1000Hz mice, wayland clients get unthrottled events, while GNOME Shell UI still behaves like it used to do. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1915> |
||
---|---|---|
.. | ||
clutter | ||
.gitignore | ||
meson.build |