On Tue, Sep 11, 2012 at 04:09:34PM +0200, David Herrmann wrote:
> When integrating the wayland event-loop into another event-loop, we
> currently have no chance of checking whether there are pending idle
> sources that have to be called. This patch exports the
> "dispatch_idle_sources()" call so other event loops can call this before
> going to sleep. This is what wl_event_loop_dispatch() currently does so we
> simply allow external event-loops to do the same now.
> 
> To avoid breaking existing applications, we keep the call to
> dispatch_idle_sources() in wl_event_loop_dispatch() for now. However, if
> we want we can remove this later and require every application to call
> this manually. This needs to be discussed, but the overhead is negligible
> so we will probably leave it as it is.
> 
> This finally allows to fully integrate the wayland-server API into
> existing event-loops without any nasty workarounds.

Committed, thanks for making this work.

Kristian


> Signed-off-by: David Herrmann <dh.herrm...@googlemail.com>
> ---
>  src/event-loop.c     | 6 +++---
>  src/wayland-server.h | 1 +
>  2 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/src/event-loop.c b/src/event-loop.c
> index df4b8b8..9339226 100644
> --- a/src/event-loop.c
> +++ b/src/event-loop.c
> @@ -378,8 +378,8 @@ post_dispatch_check(struct wl_event_loop *loop)
>       return n;
>  }
>  
> -static void
> -dispatch_idle_sources(struct wl_event_loop *loop)
> +WL_EXPORT void
> +wl_event_loop_dispatch_idle(struct wl_event_loop *loop)
>  {
>       struct wl_event_source_idle *source;
>  
> @@ -398,7 +398,7 @@ wl_event_loop_dispatch(struct wl_event_loop *loop, int 
> timeout)
>       struct wl_event_source *source;
>       int i, count, n;
>  
> -     dispatch_idle_sources(loop);
> +     wl_event_loop_dispatch_idle(loop);
>  
>       count = epoll_wait(loop->epoll_fd, ep, ARRAY_LENGTH(ep), timeout);
>       if (count < 0)
> diff --git a/src/wayland-server.h b/src/wayland-server.h
> index 3c56729..45cc61c 100644
> --- a/src/wayland-server.h
> +++ b/src/wayland-server.h
> @@ -67,6 +67,7 @@ void wl_event_source_check(struct wl_event_source *source);
>  
>  
>  int wl_event_loop_dispatch(struct wl_event_loop *loop, int timeout);
> +void wl_event_loop_dispatch_idle(struct wl_event_loop *loop);
>  struct wl_event_source *wl_event_loop_add_idle(struct wl_event_loop *loop,
>                                              wl_event_loop_idle_func_t func,
>                                              void *data);
> -- 
> 1.7.12
> 
_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to