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

Giulio Camuffo giuliocamuffo at gmail.com
Wed Jul 16 01:13:06 PDT 2014


2014-07-15 20:39 GMT+03:00 Daniel Stone <daniel at fooishbar.org>:
> Hi,
>
>
> On Tuesday, July 15, 2014, Giulio Camuffo <giuliocamuffo at gmail.com> wrote:
>>
>> 2014-07-14 22:31 GMT+03:00 Jason Ekstrand <jason at jlekstrand.net>:
>> > 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?
>>
>> You have a point here, it makes more sense.
>
>
> TBH I'd rather steer clear of that nomenclature, since the 'queue' in an
> immediate request context implies delayed dispatch, rather than on a queue.

I didn't realize you could read it as "queue a roundtrip on a
wl_event". I think that the meaning is quite obvious once you know
that there is a wl_event_queue type in Wayland.

Giulio

>
> Sorry for being that bikeshed guy ...
> -d
>
>
>>
>> > --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
>> >
>> >
>> _______________________________________________
>> wayland-devel mailing list
>> wayland-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list