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

2014-08-19 Thread Jason Ekstrand
On Tue, Aug 19, 2014 at 3:58 AM, Pekka Paalanen  wrote:

> On Wed, 16 Jul 2014 11:13:06 +0300
> Giulio Camuffo  wrote:
>
> > 2014-07-15 20:39 GMT+03:00 Daniel Stone :
> > > Hi,
> > >
> > >
> > > On Tuesday, July 15, 2014, Giulio Camuffo 
> wrote:
> > >>
> > >> 2014-07-14 22:31 GMT+03:00 Jason Ekstrand :
> > >> > 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.
>
> Hi,
>
> hm, that's a tricky one. Yes, the name wl_event_queue_roundtrip() is
> confusing when out of context, but as the argument is a wl_event_queue,
> that name is the logical and unfortunate result.
>
> Another problem with wl_display_roundtrip_queue() is that it gets both
> wl_display and wl_event_queue as arguments. Therefore the function
> would need to check that the wl_event_queue indeed belongs to the given
> wl_display. It's just a thing one can get wrong, and it has no benefits
> that I see.
>
> wl_display_roundtrip_queue() taking only wl_event_queue as an argument
> would be strange, because the name implies a wl_display method.
>
> (Up until this point, I would have agreed with Giulio and Jason...)
>
> But, now I see, that we already have:
>
> int wl_display_dispatch_queue(struct wl_display *display,
>   struct wl_event_queue *queue);
> int wl_display_dispatch_queue_pending(struct wl_display *display,
>   struct wl_event_queue *queue);
> int wl_display_prepare_read_queue(struct wl_display *display,
>   struct wl_event_queue *queue);
>
> So there is precendent, that redundant arguments are ok, and
> wl_display_roundtrip_queue() would indeed follow the existing scheme.
>
> Btw. I do not see anywhere, where the libwayland-client code would be
> checking that the wl_display and the wl_event_queue would actually be
> related. Would be a good thing to add more checks to the public API
> functions for that.
>
> I think I would go with wl_display_roundtrip_queue() here. Would you
> agree?
>

Yeah, you've convinced me.  I don't like the name (and, by extension, don't
like the others) but it goes better with the current API.  Let's go with
that.
--Jason


>
>
> Thanks,
> pq
>
> > >> > On Mon, Jul 14, 2014 at 7:15 AM, Giulio Camuffo
> > >> > 
> > >> > 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);
> > >> >>
> > >> 

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

2014-08-19 Thread Pekka Paalanen
On Wed, 16 Jul 2014 11:13:06 +0300
Giulio Camuffo  wrote:

> 2014-07-15 20:39 GMT+03:00 Daniel Stone :
> > Hi,
> >
> >
> > On Tuesday, July 15, 2014, Giulio Camuffo  wrote:
> >>
> >> 2014-07-14 22:31 GMT+03:00 Jason Ekstrand :
> >> > 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.

Hi,

hm, that's a tricky one. Yes, the name wl_event_queue_roundtrip() is
confusing when out of context, but as the argument is a wl_event_queue,
that name is the logical and unfortunate result.

Another problem with wl_display_roundtrip_queue() is that it gets both
wl_display and wl_event_queue as arguments. Therefore the function
would need to check that the wl_event_queue indeed belongs to the given
wl_display. It's just a thing one can get wrong, and it has no benefits
that I see.

wl_display_roundtrip_queue() taking only wl_event_queue as an argument
would be strange, because the name implies a wl_display method.

(Up until this point, I would have agreed with Giulio and Jason...)

But, now I see, that we already have:

int wl_display_dispatch_queue(struct wl_display *display,
  struct wl_event_queue *queue);
int wl_display_dispatch_queue_pending(struct wl_display *display,
  struct wl_event_queue *queue);
int wl_display_prepare_read_queue(struct wl_display *display,
  struct wl_event_queue *queue);

So there is precendent, that redundant arguments are ok, and
wl_display_roundtrip_queue() would indeed follow the existing scheme.

Btw. I do not see anywhere, where the libwayland-client code would be
checking that the wl_display and the wl_event_queue would actually be
related. Would be a good thing to add more checks to the public API
functions for that.

I think I would go with wl_display_roundtrip_queue() here. Would you
agree?


Thanks,
pq

> >> > On Mon, Jul 14, 2014 at 7:15 AM, Giulio Camuffo
> >> > 
> >> > 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
> >> >> + *
> >> >> + * Bloc

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

2014-07-16 Thread Giulio Camuffo
2014-07-15 20:39 GMT+03:00 Daniel Stone :
> Hi,
>
>
> On Tuesday, July 15, 2014, Giulio Camuffo  wrote:
>>
>> 2014-07-14 22:31 GMT+03:00 Jason Ekstrand :
>> > 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
>> > 
>> > 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@lists.freedesktop.org
>> >> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
>> >
>> >
>> ___
>> wayland-devel mailing list
>> wayland-devel@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinf

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

2014-07-15 Thread Daniel Stone
Hi,

On Tuesday, July 15, 2014, Giulio Camuffo  wrote:

> 2014-07-14 22:31 GMT+03:00 Jason Ekstrand  >:
> > 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  >
> > 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@lists.freedesktop.org 
> >> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> >
> >
> ___
> wayland-devel mailing list
> wayland-devel@lists.freedesktop.org 
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
>
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


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

2014-07-15 Thread Jason Ekstrand
On Tue, Jul 15, 2014 at 10:39 AM, Daniel Stone  wrote:

> Hi,
>
>
> On Tuesday, July 15, 2014, Giulio Camuffo  wrote:
>
>> 2014-07-14 22:31 GMT+03:00 Jason Ekstrand :
>> > 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 ...


It's not my fault it's named wl_even_queue and therefore tne natural name
sounds like you're queueing a roundtrip on a wl_event object...  That said,
you do have a point and it is a bad name.  I just don't know what else to
call it.
--Jasn


> -d
>
>
>
>> > --Jason Ekstrand
>> >
>> >
>> > On Mon, Jul 14, 2014 at 7:15 AM, Giulio Camuffo <
>> giuliocamu...@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@lists.freedesktop.org
>> >> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
>> >
>> >
>> ___
>> wayland-devel mailing list
>> wayland-devel@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
>>
>
___
wayland-devel

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

2014-07-15 Thread Daniel Stone
Hi,

On Tuesday, July 15, 2014, Giulio Camuffo  wrote:

> 2014-07-14 22:31 GMT+03:00 Jason Ekstrand  >:
> > 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  >
> > 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@lists.freedesktop.org 
> >> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> >
> >
> ___
> wayland-devel mailing list
> wayland-devel@lists.freedesktop.org 
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
>
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


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

2014-07-14 Thread Giulio Camuffo
wl_display_roundtrip() works on the default queue. Add a parallel
wl_display_roundtrip_queue().
---
 src/wayland-client.c | 21 +++--
 src/wayland-client.h |  2 ++
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/src/wayland-client.c b/src/wayland-client.c
index e8aab7e..35fc2b1 100644
--- a/src/wayland-client.c
+++ b/src/wayland-client.c
@@ -837,12 +837,12 @@ static const struct wl_callback_listener sync_listener = {
  * \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,6 +851,7 @@ 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);
@@ -861,6 +862,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@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel