X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-signal-mgr.c;h=ad681ba313014ddc559ea12cd191dd5f885d74be;hp=d8be1d3a8fdacc4fa24f969eff54610e0a7f2bd9;hb=60e5848997afb38e747c6750f2fc0d6639adaef4;hpb=94a4612a68cf9129d80418e40d177911297b76e7 diff --git a/src/modest-signal-mgr.c b/src/modest-signal-mgr.c index d8be1d3..ad681ba 100644 --- a/src/modest-signal-mgr.c +++ b/src/modest-signal-mgr.c @@ -70,6 +70,7 @@ modest_signal_mgr_disconnect_all_and_destroy (GSList *lst) g_signal_handler_disconnect (handler->obj, handler->handler_id); } g_object_unref (handler->obj); + g_free (handler->signal_name); handler->obj = NULL; } g_free (handler); @@ -88,9 +89,9 @@ obj_in_a_signal_handler (gconstpointer a, if (list_item_handler->obj == handler->obj && !strcmp (list_item_handler->signal_name, handler->signal_name)) - return 0; + return FALSE; else - return 1; + return TRUE; } GSList * @@ -114,6 +115,7 @@ modest_signal_mgr_disconnect (GSList *list, g_signal_handler_disconnect (signal_handler->obj, signal_handler->handler_id); /* Free the handlers */ + g_object_unref (signal_handler->obj); g_free (signal_handler->signal_name); g_free (signal_handler); g_free (tmp->signal_name); @@ -122,3 +124,26 @@ modest_signal_mgr_disconnect (GSList *list, /* Remove item from list */ return g_slist_delete_link (list, item); } + +gboolean +modest_signal_mgr_is_connected (GSList *list, + GObject *instance, + const gchar *signal_name) +{ + GSList *item = NULL; + SignalHandler *tmp = NULL; + + /* Build the helper object */ + tmp = g_new (SignalHandler, 1); + tmp->obj = instance; + tmp->signal_name = g_strdup (signal_name); + + /* Find the element */ + item = g_slist_find_custom (list, tmp, obj_in_a_signal_handler); + + /* Free the handlers */ + g_free (tmp->signal_name); + g_free (tmp); + + return (item != NULL) ? TRUE : FALSE; +}