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

Daniel Stone daniel at fooishbar.org
Tue Jul 15 10:39:43 PDT 2014


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
> <javascript:;>>:
> > 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.

Sorry for being that bikeshed guy ...
-d


> > --Jason Ekstrand
> >
> >
> > On Mon, Jul 14, 2014 at 7:15 AM, Giulio Camuffo <giuliocamuffo at gmail.com
> <javascript:;>>
> > 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 <javascript:;>
> >> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> >
> >
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org <javascript:;>
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20140715/f07a618c/attachment.html>


More information about the wayland-devel mailing list