all repos — openbox @ c8565d21d4a5e45bbe67ff7cf268582c0acad72f

openbox fork - make it a bit more like ryudo

provide a callback for when there are no more X events to process
Dana Jansens danakj@orodu.net
commit

c8565d21d4a5e45bbe67ff7cf268582c0acad72f

parent

c22a6b32ab23a4193863882e14fc6ff77ed3d247

2 files changed, 11 insertions(+), 0 deletions(-)

jump to
M openbox/mainloop.copenbox/mainloop.c

@@ -121,6 +121,7 @@ {

ObMainLoop *loop; gpointer data; ObMainLoopXHandler func; + ObMainLoopXDoneHandler done_func; GDestroyNotify destroy; };

@@ -340,6 +341,12 @@ }

} else { /* this only runs if there were no x events received */ + for (it = loop->x_handlers; it; it = g_slist_next(it)) { + ObMainLoopXHandlerType *h = it->data; + if (h->done_func) + h->done_func(h->data); + } + timer_dispatch(loop, (GTimeVal**)&wait); selset = loop->fd_set;

@@ -374,6 +381,7 @@ /*** XEVENT WATCHERS ***/

void ob_main_loop_x_add(ObMainLoop *loop, ObMainLoopXHandler handler, + ObMainLoopXDoneHandler done_handler, gpointer data, GDestroyNotify notify) {

@@ -382,6 +390,7 @@

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);
M openbox/mainloop.hopenbox/mainloop.h

@@ -28,9 +28,11 @@ ObMainLoop *ob_main_loop_new(Display *display);

void ob_main_loop_destroy(ObMainLoop *loop); typedef void (*ObMainLoopXHandler) (const XEvent *e, gpointer data); +typedef void (*ObMainLoopXDoneHandler) (gpointer data); void ob_main_loop_x_add(ObMainLoop *loop, ObMainLoopXHandler handler, + ObMainLoopXDoneHandler done_handler, gpointer data, GDestroyNotify notify); void ob_main_loop_x_remove(ObMainLoop *loop,