clutter: Check updated devices with the current clip
We do check the clip area as an optimization to know which input devices might need updating state after a relayout (Assuming that if a device is under a non-painted area, it's actor beneath didn't change). Use the clip region for this, and drop the last usage of the clip region bounds. https://gitlab.gnome.org/GNOME/mutter/merge_requests/867
This commit is contained in:
parent
a586f6a152
commit
353d7909f6
1 changed files with 3 additions and 6 deletions
|
@ -1394,11 +1394,10 @@ _clutter_stage_check_updated_pointers (ClutterStage *stage)
|
|||
ClutterDeviceManager *device_manager;
|
||||
GSList *updating = NULL;
|
||||
const GSList *devices;
|
||||
cairo_rectangle_int_t clip;
|
||||
cairo_region_t *clip;
|
||||
graphene_point_t point;
|
||||
gboolean has_clip;
|
||||
|
||||
has_clip = _clutter_stage_window_get_redraw_clip_bounds (priv->impl, &clip);
|
||||
clip = _clutter_stage_window_get_redraw_clip (priv->impl);
|
||||
|
||||
device_manager = clutter_device_manager_get_default ();
|
||||
devices = clutter_device_manager_peek_devices (device_manager);
|
||||
|
@ -1421,9 +1420,7 @@ _clutter_stage_check_updated_pointers (ClutterStage *stage)
|
|||
if (!clutter_input_device_get_coords (dev, NULL, &point))
|
||||
continue;
|
||||
|
||||
if (!has_clip ||
|
||||
(point.x >= clip.x && point.x < clip.x + clip.width &&
|
||||
point.y >= clip.y && point.y < clip.y + clip.height))
|
||||
if (!clip || cairo_region_contains_point (clip, point.x, point.y))
|
||||
updating = g_slist_prepend (updating, dev);
|
||||
break;
|
||||
default:
|
||||
|
|
Loading…
Reference in a new issue