X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=blobdiff_plain;f=src%2Fcommon%2Fhooks.c;h=cfca1b3f6bf961a7fb11b271bce70c6e9eab6083;hp=95dc0a23bc07f6aaaec006dcb49395c77ad21b24;hb=9684e5dd833167d1185880f3930ea1c5c19a25a9;hpb=b7e4917caf69330cc2fedebe8004cb7933b1e38a diff --git a/src/common/hooks.c b/src/common/hooks.c index 95dc0a23b..cfca1b3f6 100644 --- a/src/common/hooks.c +++ b/src/common/hooks.c @@ -23,9 +23,10 @@ #include +#include "utils.h" #include "hooks.h" -GHashTable *hooklist_table; +static GHashTable *hooklist_table; GHookList *hooks_get_hooklist(gchar *hooklist_name) { @@ -45,27 +46,29 @@ GHookList *hooks_get_hooklist(gchar *hooklist_name) return hooklist; } -gint hooks_register_hook(gchar *hooklist_name, - SylpheedHookFunction hook_func, - gpointer userdata) +guint hooks_register_hook(gchar *hooklist_name, + SylpheedHookFunction hook_func, + gpointer userdata) { GHookList *hooklist; GHook *hook; - g_return_val_if_fail(hooklist_name != NULL, -1); - g_return_val_if_fail(hook_func != NULL, -1); + g_return_val_if_fail(hooklist_name != NULL, (guint)-1); + g_return_val_if_fail(hook_func != NULL, (guint)-1); hooklist = hooks_get_hooklist(hooklist_name); - g_return_val_if_fail(hooklist != NULL, -1); + g_return_val_if_fail(hooklist != NULL, (guint)-1); hook = g_hook_alloc(hooklist); - g_return_val_if_fail(hook != NULL, -1); + g_return_val_if_fail(hook != NULL, (guint)-1); hook->func = hook_func; hook->data = userdata; g_hook_append(hooklist, hook); + debug_print("registed new hook for '%s' as id %d\n", hooklist_name, hook->hook_id); + return hook->hook_id; } @@ -83,7 +86,9 @@ void hooks_unregister_hook(gchar *hooklist_name, hook = g_hook_get(hooklist, hook_id); g_return_if_fail(hook != NULL); - g_hook_destroy_link(hooklist, hook); + debug_print("unregisted hook %d in '%s'\n", hook->hook_id, hooklist_name); + + g_hook_destroy(hooklist, hook); } struct MarshalData @@ -103,19 +108,21 @@ static void hooks_marshal(GHook *hook, gpointer data) } } -void hooks_invoke(gchar *hooklist_name, +gboolean hooks_invoke(gchar *hooklist_name, gpointer source) { GHookList *hooklist; struct MarshalData marshal_data; - g_return_if_fail(hooklist_name != NULL); + g_return_val_if_fail(hooklist_name != NULL, FALSE); hooklist = hooks_get_hooklist(hooklist_name); - g_return_if_fail(hooklist != NULL); + g_return_val_if_fail(hooklist != NULL, FALSE); marshal_data.source = source; marshal_data.abort = FALSE; g_hook_list_marshal(hooklist, TRUE, hooks_marshal, &marshal_data); + + return marshal_data.abort; }