[PATCH wayland v3] client: add a public function to make a roundtrip on a custom queue

Jason Ekstrand jason at jlekstrand.net
Mon Jul 14 12:31:05 PDT 2014


Guilio,
Would it be better to name it wl_event_queue_roundtrip and just have it
take the wl_event_queue?  I guess it is sort-of a wl_display operation, but
you could argue it either way.  Thoughts?
--Jason Ekstrand


On Mon, Jul 14, 2014 at 7:15 AM, Giulio Camuffo <giuliocamuffo at gmail.com>
wrote:

> wl_display_roundtrip() works on the default queue. Add a parallel
> wl_display_roundtrip_queue().
> ---
>
> v3: fixed dispatch call in place of dispatch_queue
>     documented the queue parameter
>  src/wayland-client.c | 24 +++++++++++++++++++++---
>  src/wayland-client.h |  2 ++
>  2 files changed, 23 insertions(+), 3 deletions(-)
>
> diff --git a/src/wayland-client.c b/src/wayland-client.c
> index e8aab7e..d2c1b5c 100644
> --- a/src/wayland-client.c
> +++ b/src/wayland-client.c
> @@ -834,15 +834,16 @@ static const struct wl_callback_listener
> sync_listener = {
>  /** Block until all pending request are processed by the server
>   *
>   * \param display The display context object
> + * \param queue The queue on which to run the roundtrip
>   * \return The number of dispatched events on success or -1 on failure
>   *
>   * Blocks until the server process all currently issued requests and
> - * sends out pending events on all event queues.
> + * sends out pending events on the event queue.
>   *
>   * \memberof wl_display
>   */
>  WL_EXPORT int
> -wl_display_roundtrip(struct wl_display *display)
> +wl_display_roundtrip_queue(struct wl_display *display, struct
> wl_event_queue *queue)
>  {
>         struct wl_callback *callback;
>         int done, ret = 0;
> @@ -851,9 +852,10 @@ wl_display_roundtrip(struct wl_display *display)
>         callback = wl_display_sync(display);
>         if (callback == NULL)
>                 return -1;
> +       wl_proxy_set_queue(callback, queue);
>         wl_callback_add_listener(callback, &sync_listener, &done);
>         while (!done && ret >= 0)
> -               ret = wl_display_dispatch(display);
> +               ret = wl_display_dispatch_queue(display, queue);
>
>         if (ret == -1 && !done)
>                 wl_callback_destroy(callback);
> @@ -861,6 +863,22 @@ wl_display_roundtrip(struct wl_display *display)
>         return ret;
>  }
>
> +/** Block until all pending request are processed by the server
> + *
> + * \param display The display context object
> + * \return The number of dispatched events on success or -1 on failure
> + *
> + * Blocks until the server process all currently issued requests and
> + * sends out pending events on the default event queue.
> + *
> + * \memberof wl_display
> + */
> +WL_EXPORT int
> +wl_display_roundtrip(struct wl_display *display)
> +{
> +       wl_display_roundtrip_queue(display, &display->default_queue);
> +}
> +
>  static int
>  create_proxies(struct wl_proxy *sender, struct wl_closure *closure)
>  {
> diff --git a/src/wayland-client.h b/src/wayland-client.h
> index 2a32785..4377207 100644
> --- a/src/wayland-client.h
> +++ b/src/wayland-client.h
> @@ -163,6 +163,8 @@ int wl_display_dispatch_pending(struct wl_display
> *display);
>  int wl_display_get_error(struct wl_display *display);
>
>  int wl_display_flush(struct wl_display *display);
> +int wl_display_roundtrip_queue(struct wl_display *display,
> +                               struct wl_event_queue *queue);
>  int wl_display_roundtrip(struct wl_display *display);
>  struct wl_event_queue *wl_display_create_queue(struct wl_display
> *display);
>
> --
> 2.0.1
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20140714/7d2c08d3/attachment.html>


More information about the wayland-devel mailing list