[mutter/wip/carlosg/crossings: 2/11] clutter/main: Change picked actor before emitting crossing events




commit 794962327e5863f082c8c64fa82ec2ae7e2c5b75
Author: Carlos Garnacho <carlosg gnome org>
Date:   Tue Dec 22 17:25:48 2020 +0100

    clutter/main: Change picked actor before emitting crossing events
    
    Updating the state before emitting the CLUTTER_LEAVE event allows its
    handlers to query the pointer actor, and avoid getting the same actor
    again. Conceptually, this makes picking more "atomic", and the events a
    notification of the change.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1654>

 clutter/clutter/clutter-main.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)
---
diff --git a/clutter/clutter/clutter-main.c b/clutter/clutter/clutter-main.c
index 2b57079cc5..1ce5320125 100644
--- a/clutter/clutter/clutter-main.c
+++ b/clutter/clutter/clutter-main.c
@@ -1608,6 +1608,11 @@ clutter_stage_update_device (ClutterStage         *stage,
   old_actor = clutter_stage_get_device_actor (stage, device, sequence);
   device_actor_changed = new_actor != old_actor;
 
+  clutter_stage_update_device_entry (stage,
+                                     device, sequence,
+                                     point,
+                                     new_actor);
+
   if (device_actor_changed)
     {
       CLUTTER_NOTE (EVENT,
@@ -1625,15 +1630,7 @@ clutter_stage_update_device (ClutterStage         *stage,
                                  old_actor, new_actor,
                                  point, time);
         }
-    }
 
-  clutter_stage_update_device_entry (stage,
-                                     device, sequence,
-                                     point,
-                                     new_actor);
-
-  if (device_actor_changed)
-    {
       if (new_actor && emit_crossing)
         {
           create_crossing_event (stage,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]