2 #include "extensions.h"
8 void dispatch_startup()
19 funcs = g_new(GSList*, i);
21 for (i = 0, j = 1; j < EVENT_RANGE; ++i, j <<= 1)
25 void dispatch_shutdown()
30 for (i = 0, j = 1; j < EVENT_RANGE; ++i, j <<= 1) {
31 g_slist_free(funcs[i]);
38 void dispatch_register(EventHandler h, EventMask mask)
44 for (i = 0, j = 1; j < EVENT_RANGE; ++i, j <<= 1)
46 funcs[i] = g_slist_append(funcs[i], h);
47 mask ^= j; /* remove from the mask */
49 g_assert(j >= EVENT_RANGE); /* an invalid event is in the mask */
53 void dispatch_x(XEvent *xe, Client *c)
62 e = Event_X_EnterNotify;
65 e = Event_X_LeaveNotify;
71 e = Event_X_KeyRelease;
74 e = Event_X_ButtonPress;
77 e = Event_X_ButtonRelease;
80 e = Event_X_MotionNotify;
84 if (xe->type == extensions_xkb_event_basep) {
85 switch (((XkbAnyEvent*)&e)->xkb_type) {
96 obe.data.x.client = c;
104 for (it = funcs[i]; it != NULL; it = it->next)
105 ((EventHandler)it->data)(&obe);
108 void dispatch_client(EventType e, Client *c)
123 for (it = funcs[i]; it != NULL; it = it->next)
124 ((EventHandler)it->data)(&obe);
127 void dispatch_ob(EventType e)
141 for (it = funcs[i]; it != NULL; it = it->next)
142 ((EventHandler)it->data)(&obe);
145 void dispatch_signal(int signal)
148 EventType e = Event_Signal;
153 obe.data.signal = signal;
161 for (it = funcs[i]; it != NULL; it = it->next)
162 ((EventHandler)it->data)(&obe);