aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib/menuitem.c
diff options
context:
space:
mode:
authorKen VanDine <ken.vandine@canonical.com>2011-02-24 23:00:42 -0500
committerKen VanDine <ken.vandine@canonical.com>2011-02-24 23:00:42 -0500
commitd831bc59e28568ba53ff57e76737002a9e2bc866 (patch)
tree654c2243ce07c351bd59ff27bc47729095c3dd51 /libdbusmenu-glib/menuitem.c
parentf40abc3f546c829edb4d059b2a4c1cfe1aa9eb81 (diff)
parent86bd1a4d6b7f9eb47357dae9569d150e5be4b338 (diff)
downloadlibdbusmenu-d831bc59e28568ba53ff57e76737002a9e2bc866.tar.gz
libdbusmenu-d831bc59e28568ba53ff57e76737002a9e2bc866.tar.bz2
libdbusmenu-d831bc59e28568ba53ff57e76737002a9e2bc866.zip
releasing version 0.3.99-0ubuntu1
Diffstat (limited to 'libdbusmenu-glib/menuitem.c')
-rw-r--r--libdbusmenu-glib/menuitem.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/libdbusmenu-glib/menuitem.c b/libdbusmenu-glib/menuitem.c
index 5202aa1..34147a3 100644
--- a/libdbusmenu-glib/menuitem.c
+++ b/libdbusmenu-glib/menuitem.c
@@ -1670,11 +1670,22 @@ dbusmenu_menuitem_handle_event (DbusmenuMenuitem * mi, const gchar * name, GVari
#endif
DbusmenuMenuitemClass * class = DBUSMENU_MENUITEM_GET_CLASS(mi);
+ /* We need to keep a ref to the variant because the signal
+ handler will drop the floating ref and then we'll be up
+ a creek if we don't have our own later. */
+ if (variant != NULL) {
+ g_variant_ref_sink(variant);
+ }
+
gboolean handled = FALSE;
g_signal_emit(G_OBJECT(mi), signals[EVENT], g_quark_from_string(name), name, variant, timestamp, &handled);
if (!handled && class->handle_event != NULL) {
- return class->handle_event(mi, name, variant, timestamp);
+ class->handle_event(mi, name, variant, timestamp);
+ }
+
+ if (variant != NULL) {
+ g_variant_unref(variant);
}
return;