GNOME Bugzilla – Bug 779436
ui/frames: Simplify client area control computation
Last modified: 2017-03-02 18:42:07 UTC
Ungrabbed pointer motion events over a client window area don't even reach mutter in X compositor mode, but as a wayland compositor we process those events which ends up in a call stack like: - meta_window_handle_ungrabbed_event - meta_ui_frame_handle_event - handle_motion_notify_event - get_control - meta_ui_frame_calc_geometry Computing frame geometry is a relatively CPU expensive operation and doing it on every motion event over a client window is pointless work since we aren't going to change the cursor or prelight any frame widget. This commit special cases the determination of META_FRAME_CONTROL_CLIENT_AREA using a much faster method. When continuously moving the pointer over an X (client) window, it results in a ~40% decrease in mutter cpu usage.
Created attachment 346993 [details] [review] ui/frames: Simplify client area control computation
Review of attachment 346993 [details] [review]: Makes sense to me
Attachment 346993 [details] pushed as 1f20e82 - ui/frames: Simplify client area control computation