diff options
author | Michael Terry <mike@mterry.name> | 2011-04-05 12:00:35 -0400 |
---|---|---|
committer | Michael Terry <mike@mterry.name> | 2011-04-05 12:00:35 -0400 |
commit | bd0bcde67690d7a7168794e680af3776b081d364 (patch) | |
tree | f9432b571cfd837e8795265397c54d280365da00 /libdbusmenu-glib | |
parent | f90465d8892aff9002874ae40656b3c67a2542af (diff) | |
download | libdbusmenu-bd0bcde67690d7a7168794e680af3776b081d364.tar.gz libdbusmenu-bd0bcde67690d7a7168794e680af3776b081d364.tar.bz2 libdbusmenu-bd0bcde67690d7a7168794e680af3776b081d364.zip |
be a little more careful with asynchronous callbacks
Diffstat (limited to 'libdbusmenu-glib')
-rw-r--r-- | libdbusmenu-glib/client.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c index ef89705..8198458 100644 --- a/libdbusmenu-glib/client.c +++ b/libdbusmenu-glib/client.c @@ -441,6 +441,9 @@ dbusmenu_client_dispose (GObject *object) priv->menuproxy_cancel = NULL; } if (priv->menuproxy != NULL) { + g_signal_handlers_disconnect_matched(priv->menuproxy, + G_SIGNAL_MATCH_DATA, + 0, 0, NULL, NULL, object); g_object_unref(G_OBJECT(priv->menuproxy)); priv->menuproxy = NULL; } @@ -1494,6 +1497,7 @@ menuitem_call_cb (GObject * proxy, GAsyncResult * res, gpointer userdata) g_variant_unref(edata->variant); g_free(edata->event); g_object_unref(edata->menuitem); + g_object_unref(event->client); g_free(edata); if (G_UNLIKELY(error != NULL)) { @@ -1528,6 +1532,7 @@ dbusmenu_client_send_event (DbusmenuClient * client, gint id, const gchar * name event_data_t * edata = g_new0(event_data_t, 1); edata->client = client; + g_object_ref(client); edata->menuitem = mi; g_object_ref(edata->menuitem); edata->event = g_strdup(name); |