7 void dispatch_startup()
18 funcs = g_new(GSList*, i);
20 for (i = 0, j = 1; j < EVENT_RANGE; ++i, j <<= 1)
24 void dispatch_shutdown()
29 for (i = 0, j = 1; j < EVENT_RANGE; ++i, j <<= 1)
30 g_slist_free(funcs[i]);
35 void dispatch_register(EventHandler h, EventMask mask)
41 for (i = 0, j = 1; j < EVENT_RANGE; ++i, j <<= 1)
43 funcs[i] = g_slist_append(funcs[i], h);
44 mask ^= j; /* remove from the mask */
46 g_assert(j >= EVENT_RANGE); /* an invalid event is in the mask */
50 void dispatch_x(XEvent *xe)
59 e = Event_X_EnterNotify;
62 e = Event_X_LeaveNotify;
68 e = Event_X_KeyRelease;
71 e = Event_X_ButtonPress;
74 e = Event_X_ButtonRelease;
77 e = Event_X_MotionNotify;
92 for (it = funcs[i]; it != NULL; it = it->next)
93 ((EventHandler)it->data)(&obe);
96 void dispatch_client(EventType e, Client *c)
111 for (it = funcs[i]; it != NULL; it = it->next)
112 ((EventHandler)it->data)(&obe);
115 void dispatch_ob(EventType e)
129 for (it = funcs[i]; it != NULL; it = it->next)
130 ((EventHandler)it->data)(&obe);
133 void dispatch_signal(int signal)
136 EventType e = Event_Signal;
141 obe.data.signal = signal;
149 for (it = funcs[i]; it != NULL; it = it->next)
150 ((EventHandler)it->data)(&obe);