[mutter] clutter/actor: Don't emit focus signals during destruction



commit dce3aa5c015ecd2ab3c151a5322b81849bcdd3f1
Author: Florian Müllner <fmuellner gnome org>
Date:   Wed Jun 2 16:24:25 2021 +0200

    clutter/actor: Don't emit focus signals during destruction
    
    We rightfully unset the stage focus when the focus actor is destroyed,
    which in turns results in the ClutterActor::-key-focus-out signal being
    emitted on an actor that is no longer fully valid.
    
    Avoid that emission, so consumers don't have to deal with half-disposed
    actors in their handler.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4324
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1884>

 clutter/clutter/clutter-actor.c | 3 +++
 1 file changed, 3 insertions(+)
---
diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
index ce0c5ed323..989e479a82 100644
--- a/clutter/clutter/clutter-actor.c
+++ b/clutter/clutter/clutter-actor.c
@@ -14584,6 +14584,9 @@ _clutter_actor_set_has_key_focus (ClutterActor *self,
     {
       priv->has_key_focus = has_key_focus;
 
+      if (CLUTTER_ACTOR_IN_DESTRUCTION (self))
+        return;
+
       if (has_key_focus)
         g_signal_emit (self, actor_signals[KEY_FOCUS_IN], 0);
       else


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