Invalidate single_va_closure when adding an emission hook
authorMike Gorse <mgorse@novell.com>
Tue, 13 Mar 2012 21:02:30 +0000 (16:02 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 14 Mar 2012 10:01:36 +0000 (06:01 -0400)
If the optimization is used for only having one closure handling a
signal emission, then hooks will not be run, so it should be disabled
when an emission hook is added.

https://bugzilla.gnome.org/show_bug.cgi?id=671918

gobject/gsignal.c

index 8e067c3..7c90a7a 100644 (file)
@@ -972,6 +972,7 @@ g_signal_add_emission_hook (guint               signal_id,
       SIGNAL_UNLOCK ();
       return 0;
     }
+    node->single_va_closure_is_valid = FALSE;
   if (!node->emission_hooks)
     {
       node->emission_hooks = g_new (GHookList, 1);