diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c index 59345a7252c042ca59d5f09a7b4c2ccf80497cf0..30124cdb6ec1e2d832030450dc2e62687f260975 100644 --- a/clutter/clutter/clutter-actor.c +++ b/clutter/clutter/clutter-actor.c @@ -13309,7 +13309,7 @@ clutter_actor_update_pointer (ClutterActor *self) seat = clutter_backend_get_default_seat (clutter_get_default_backend ()); pointer = clutter_seat_get_pointer (seat); - clutter_stage_repick_device (stage, pointer); + clutter_stage_repick_device (stage, pointer, NULL); } static void diff --git a/clutter/clutter/clutter-mutter.h b/clutter/clutter/clutter-mutter.h index b383ff518cfe86c3e995365438e9e69e56ce57ca..10eed7830f863a8618f1a5315d2b2e3930f580e3 100644 --- a/clutter/clutter/clutter-mutter.h +++ b/clutter/clutter/clutter-mutter.h @@ -117,8 +117,9 @@ void clutter_stage_get_device_coords (ClutterStage *stage, ClutterEventSequence *sequence, graphene_point_t *coords); CLUTTER_EXPORT -void clutter_stage_repick_device (ClutterStage *stage, - ClutterInputDevice *device); +void clutter_stage_repick_device (ClutterStage *stage, + ClutterInputDevice *device, + ClutterEventSequence *sequence); CLUTTER_EXPORT void clutter_get_debug_flags (ClutterDebugFlag *debug_flags, diff --git a/clutter/clutter/clutter-stage-private.h b/clutter/clutter/clutter-stage-private.h index efa341cc19066881f6c6e6ad34c66adcf678b001..dc3b07da97180534db17d8b8c32d5a0208fe1e5f 100644 --- a/clutter/clutter/clutter-stage-private.h +++ b/clutter/clutter/clutter-stage-private.h @@ -134,13 +134,6 @@ GList * clutter_stage_get_views_for_rect (ClutterStage *stage, void clutter_stage_set_actor_needs_immediate_relayout (ClutterStage *stage); -void clutter_stage_update_device_entry (ClutterStage *self, - ClutterInputDevice *device, - ClutterEventSequence *sequence, - graphene_point_t coords, - ClutterActor *actor, - cairo_region_t *clear_area); - void clutter_stage_remove_device_entry (ClutterStage *self, ClutterInputDevice *device, ClutterEventSequence *sequence); diff --git a/clutter/clutter/clutter-stage.c b/clutter/clutter/clutter-stage.c index 569df87a767fc318b55eab985bd81cdefc7ec995..6774c97f3459faf9bc5958e1dd37b17943cb1fce 100644 --- a/clutter/clutter/clutter-stage.c +++ b/clutter/clutter/clutter-stage.c @@ -3178,7 +3178,12 @@ on_device_actor_destroyed (ClutterActor *actor, */ entry->current_actor = NULL; g_clear_pointer (&entry->clear_area, cairo_region_destroy); - clutter_stage_repick_device (entry->stage, entry->device); + + /* Be consistent with clutter_stage_update_devices() and only repick + * pointer devices, not touch sequences. + */ + if (entry->sequence == NULL) + clutter_stage_repick_device (entry->stage, entry->device, NULL); } static void @@ -3203,7 +3208,7 @@ free_pointer_device_entry (PointerDeviceEntry *entry) g_free (entry); } -void +static void clutter_stage_update_device_entry (ClutterStage *self, ClutterInputDevice *device, ClutterEventSequence *sequence, @@ -3501,15 +3506,16 @@ clutter_stage_update_device (ClutterStage *stage, } void -clutter_stage_repick_device (ClutterStage *stage, - ClutterInputDevice *device) +clutter_stage_repick_device (ClutterStage *stage, + ClutterInputDevice *device, + ClutterEventSequence *sequence) { graphene_point_t point; - clutter_stage_get_device_coords (stage, device, NULL, &point); + clutter_stage_get_device_coords (stage, device, sequence, &point); clutter_stage_pick_and_update_device (stage, device, - NULL, + sequence, CLUTTER_DEVICE_UPDATE_IGNORE_CACHE | CLUTTER_DEVICE_UPDATE_EMIT_CROSSING, point, diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c index 9cee56a371c663479a043f2ab4de390916a81c3f..bf6d37ad2d3c43ee06527898b00643a0fa5e31b9 100644 --- a/src/compositor/meta-window-actor.c +++ b/src/compositor/meta-window-actor.c @@ -699,7 +699,7 @@ meta_window_actor_after_effects (MetaWindowActor *self) meta_window_actor_sync_actor_geometry (self, FALSE); } - clutter_stage_repick_device (stage, clutter_seat_get_pointer (seat)); + clutter_stage_repick_device (stage, clutter_seat_get_pointer (seat), NULL); } void diff --git a/src/core/display.c b/src/core/display.c index 5f99578a69b6067a3f487bc9a4d2ee0c7e460351..b95fea008c18395b09b19d33127bd3d903374a22 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -1440,7 +1440,7 @@ meta_display_sync_wayland_input_focus (MetaDisplay *display) meta_wayland_compositor_set_input_focus (compositor, focus_window); clutter_stage_repick_device (CLUTTER_STAGE (stage), - clutter_seat_get_pointer (seat)); + clutter_seat_get_pointer (seat), NULL); #endif }