+ } while (XPending(loop->display) && loop->run);
+ } else if (loop->action_queue) {
+ /* only fire off one action at a time, then go back for more
+ X events, since the action might cause some X events (like
+ FocusIn :) */
+
+ do {
+ act = loop->action_queue->data;
+ if (act->data.any.client_action == OB_CLIENT_ACTION_ALWAYS &&
+ !act->data.any.c)
+ {
+ loop->action_queue =
+ g_slist_delete_link(loop->action_queue,
+ loop->action_queue);
+ action_unref(act);
+ act = NULL;
+ }
+ } while (!act && loop->action_queue && loop->run);
+
+ if (act) {
+ event_curtime = act->data.any.time;
+ act->func(&act->data);
+ event_curtime = CurrentTime;
+ loop->action_queue =
+ g_slist_delete_link(loop->action_queue,
+ loop->action_queue);
+ action_unref(act);
+ }