gtk: Hold reference on controller until events are fully handled
authorMaxim Zakharov <zakhma@muli.com.au>
Wed, 27 Oct 2021 00:37:36 +0000 (11:37 +1100)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 31 Oct 2021 21:52:05 +0000 (17:52 -0400)
Fixes premature controller unreferencing in
gtk_event_controller_handle_event() if the controller itself is being
removed while handling the event.

gtk/gtkeventcontroller.c

index 6892562901bbb3822fca3bb03587d704b12de73a..2d0de553830b27b506272726ccc9d28bdbfe12f9 100644 (file)
@@ -367,10 +367,10 @@ gtk_event_controller_handle_event (GtkEventController *controller,
 
   g_object_ref (controller);
   retval = controller_class->handle_event (controller, event, x, y);
-  g_object_unref (controller);
 
   g_clear_object (&priv->target);
   g_clear_pointer (&priv->event, gdk_event_unref);
+  g_object_unref (controller);
 
   return retval;
 }