X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fmainloop.c;h=36bba6278c8183c6e06e7f50d1b9016e4e9b2003;hb=7a6a516b8e3d8ad6b15379eabf6652a6f43eab27;hp=62261dde0af6e52dd2b215aea6a12f8c659e8cd2;hpb=939fbcfd31e07a6e0f1cdbfcef9b04f63e6af700;p=chaz%2Fopenbox diff --git a/openbox/mainloop.c b/openbox/mainloop.c index 62261dde..36bba627 100644 --- a/openbox/mainloop.c +++ b/openbox/mainloop.c @@ -2,7 +2,7 @@ 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 @@ -282,7 +282,7 @@ void ob_main_loop_run(ObMainLoop *loop) 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) { @@ -314,7 +314,7 @@ void ob_main_loop_run(ObMainLoop *loop) 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 @@ -331,7 +331,7 @@ void ob_main_loop_run(ObMainLoop *loop) 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; @@ -365,7 +365,7 @@ void ob_main_loop_run(ObMainLoop *loop) } } - client_remove_destructor(ob_main_loop_client_destroy); + client_remove_destroy_notify(ob_main_loop_client_destroy); loop->running = FALSE; }