X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fmainloop.c;h=a50a48fb97cf755913831078c3fbf4cfdc196270;hb=4ccc4c5ed7d5cffc4bf733191f7bc30fbbf069c8;hp=9ee2075784fa5c8420cad8224141fdc067419574;hpb=0d5d92426f9a58eaa5be8b0694c742a53a5577de;p=chaz%2Fopenbox diff --git a/openbox/mainloop.c b/openbox/mainloop.c index 9ee20757..a50a48fb 100644 --- a/openbox/mainloop.c +++ b/openbox/mainloop.c @@ -1,4 +1,5 @@ #include "mainloop.h" +#include "focus.h" #include #include @@ -99,6 +100,7 @@ struct _ObMainLoopXHandlerType ObMainLoop *loop; gpointer data; ObMainLoopXHandler func; + ObMainLoopXDoneHandler done_func; GDestroyNotify destroy; }; @@ -263,6 +265,12 @@ void ob_main_loop_run(ObMainLoop *loop) h->func(&e, h->data); } } while (XPending(loop->display)); + + for (it = loop->x_handlers; it; it = g_slist_next(it)) { + ObMainLoopXHandlerType *h = it->data; + if (h->done_func) + h->done_func(h->data); + } } else { /* this only runs if there were no x events received */ @@ -297,6 +305,7 @@ void ob_main_loop_exit(ObMainLoop *loop) void ob_main_loop_x_add(ObMainLoop *loop, ObMainLoopXHandler handler, + ObMainLoopXDoneHandler done_handler, gpointer data, GDestroyNotify notify) { @@ -305,6 +314,7 @@ void ob_main_loop_x_add(ObMainLoop *loop, h = g_new(ObMainLoopXHandlerType, 1); h->loop = loop; h->func = handler; + h->done_func = done_handler; h->data = data; h->destroy = notify; loop->x_handlers = g_slist_prepend(loop->x_handlers, h);