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 giuliocamu...@gmail.com wrote:

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

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
   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)
   +{
   +   

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 ppaala...@gmail.com wrote:

 On Wed, 16 Jul 2014 11:13:06 +0300
 Giulio Camuffo giuliocamu...@gmail.com wrote:

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

 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
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 

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 dan...@fooishbar.org:
 Hi,


 On Tuesday, July 15, 2014, Giulio Camuffo giuliocamu...@gmail.com wrote:

 2014-07-14 22:31 GMT+03:00 Jason Ekstrand ja...@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
  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 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 Daniel Stone
Hi,

On Tuesday, July 15, 2014, Giulio Camuffo giuliocamu...@gmail.com wrote:

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

 Hi,


 On Tuesday, July 15, 2014, Giulio Camuffo giuliocamu...@gmail.com wrote:

 2014-07-14 22:31 GMT+03:00 Jason Ekstrand ja...@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.

 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 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 Daniel Stone
Hi,

On Tuesday, July 15, 2014, Giulio Camuffo giuliocamu...@gmail.com wrote:

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