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);