mainloop.c for the Openbox window manager
Copyright (c) 2006 Mikael Magnusson
- Copyright (c) 2003 Ben Jansens
+ Copyright (c) 2003-2007 Dana Jansens
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
loop->run = TRUE;
loop->running = TRUE;
- client_add_destructor(ob_main_loop_client_destroy, loop);
+ client_add_destroy_notify(ob_main_loop_client_destroy, loop);
while (loop->run) {
if (loop->signal_fired) {
ObMainLoopXHandlerType *h = it->data;
h->func(&e, h->data);
}
- } while (XPending(loop->display));
+ } 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
action_unref(act);
act = NULL;
}
- } while (!act && loop->action_queue);
+ } while (!act && loop->action_queue && loop->run);
if (act) {
event_curtime = act->data.any.time;
}
}
- client_remove_destructor(ob_main_loop_client_destroy);
+ client_remove_destroy_notify(ob_main_loop_client_destroy);
loop->running = FALSE;
}