X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-signal-mgr.c;h=ad681ba313014ddc559ea12cd191dd5f885d74be;hp=990cedda638c8ff207dc722b18497c8abb08415c;hb=12a672c559d983c4e49a7e4054ee14c0177ecb1c;hpb=ca75dc94db59734487ec69f5163545ce4edf0b5c diff --git a/src/modest-signal-mgr.c b/src/modest-signal-mgr.c index 990cedd..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 * @@ -123,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; +}