From: Christopher James Halse Rogers <[email protected]>
This *technically* changes the semantics of the return value of the source callbacks. Previously you could return a negative number from a source callback and it would prevent *other* source callbacks from triggering a subsequent recheck. Doing that seems like such a bad idea it's not worth supporting. Signed-off-by: Christopher James Halse Rogers <[email protected]> --- src/event-loop.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/event-loop.c b/src/event-loop.c index 6130d2a..7d4c08d 100644 --- a/src/event-loop.c +++ b/src/event-loop.c @@ -29,6 +29,7 @@ #include <signal.h> #include <stdlib.h> #include <stdint.h> +#include <stdbool.h> #include <string.h> #include <fcntl.h> #include <sys/socket.h> @@ -376,19 +377,18 @@ wl_event_loop_destroy(struct wl_event_loop *loop) free(loop); } -static int +static bool post_dispatch_check(struct wl_event_loop *loop) { struct epoll_event ep; struct wl_event_source *source, *next; - int n; + bool needs_recheck = false; ep.events = 0; - n = 0; wl_list_for_each_safe(source, next, &loop->check_list, link) - n += source->interface->dispatch(source, &ep); + needs_recheck |= source->interface->dispatch(source, &ep) != 0; - return n; + return needs_recheck; } WL_EXPORT void @@ -409,7 +409,7 @@ wl_event_loop_dispatch(struct wl_event_loop *loop, int timeout) { struct epoll_event ep[32]; struct wl_event_source *source; - int i, count, n; + int i, count; wl_event_loop_dispatch_idle(loop); @@ -427,9 +427,7 @@ wl_event_loop_dispatch(struct wl_event_loop *loop, int timeout) wl_event_loop_dispatch_idle(loop); - do { - n = post_dispatch_check(loop); - } while (n > 0); + while (post_dispatch_check(loop)); return 0; } -- 2.14.1 _______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
