Mercurial > ~mikael > mcabber > hg
comparison mcabber/modules/beep/beep.c @ 1795:47699a09ceb3
Rework the hook system
This hook system implementation should be more efficient and a little
more flexible.
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sat, 20 Mar 2010 14:38:17 +0100 |
parents | e4378fbab5d7 |
children | 5e2db25fdb17 |
comparison
equal
deleted
inserted
replaced
1794:58d1390f28ca | 1795:47699a09ceb3 |
---|---|
43 "Provides command /beep", | 43 "Provides command /beep", |
44 .next = NULL, | 44 .next = NULL, |
45 }; | 45 }; |
46 | 46 |
47 static guint beep_cid = 0; | 47 static guint beep_cid = 0; |
48 static guint beep_hid; | |
48 | 49 |
49 /* Event handler */ | 50 /* Event handler */ |
50 static void beep_hh (guint32 hid, hk_arg_t *args, gpointer userdata) | 51 static guint beep_hh (const gchar *hookname, hk_arg_t *args, gpointer userdata) |
51 { | 52 { |
52 /* Check if beeping is enabled */ | 53 /* Check if beeping is enabled */ |
53 if (settings_opt_get_int ("beep_enable")) | 54 if (settings_opt_get_int ("beep_enable")) |
54 /* *BEEP*! */ | 55 scr_beep (); /* *BEEP*! */ |
55 scr_beep (); | 56 return HOOK_HANDLER_RESULT_ALLOW_MORE_HOOKS; |
56 } | 57 } |
57 | 58 |
58 /* beep command handler */ | 59 /* beep command handler */ |
59 static void do_beep (char *args) | 60 static void do_beep (char *args) |
60 { | 61 { |
95 /* Add command */ | 96 /* Add command */ |
96 cmd_add ("beep", "", beep_cid, 0, do_beep, NULL); | 97 cmd_add ("beep", "", beep_cid, 0, do_beep, NULL); |
97 /* Add handler | 98 /* Add handler |
98 * We are only interested in incoming message events | 99 * We are only interested in incoming message events |
99 */ | 100 */ |
100 hk_add_handler (beep_hh, HOOK_MESSAGE_IN, NULL); | 101 beep_hid = hk_add_handler (beep_hh, HOOK_MESSAGE_IN, |
102 G_PRIORITY_DEFAULT_IDLE, NULL); | |
101 } | 103 } |
102 | 104 |
103 /* Deinitialization */ | 105 /* Deinitialization */ |
104 static void beep_uninit (void) | 106 static void beep_uninit (void) |
105 { | 107 { |
106 /* Unregister event handler */ | 108 /* Unregister event handler */ |
107 hk_del_handler (beep_hh, NULL); | 109 hk_del_handler (HOOK_MESSAGE_IN, beep_hid); |
108 /* Unregister command */ | 110 /* Unregister command */ |
109 cmd_del ("beep"); | 111 cmd_del ("beep"); |
110 /* Give back completion handle */ | 112 /* Give back completion handle */ |
111 if (beep_cid) | 113 if (beep_cid) |
112 compl_del_category (beep_cid); | 114 compl_del_category (beep_cid); |