<div dir="ltr"><div><div><div><div><div>Hello,<br></div>I wonder if there isn't a problem when some client application uses this function from a child thread. If I remember, only the main thread must use the main queue. If you give an API to use it, developers will want to use it, and may not understand the usage.<br>
</div>I read your patch about EGL_WL_create_wayland_buffer_from_image , it's simpler to use directly &display->queue , isn't it ?<br><br></div>Or it may be inserted inside wayland_private.h , and to use this file inside mesa eglwayland. (The architecture is complex, with eglwayland outside wayland).<br>
</div>Regards,<br></div>Marc.<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/9/10 Neil Roberts <span dir="ltr"><<a href="mailto:neil@linux.intel.com" target="_blank">neil@linux.intel.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Adds a function called wl_display_get_main_queue which just returns a<br>
pointer to the default event queue. This will be useful in order to<br>
implement the EGL_WL_create_wayland_buffer_from_image extension. The<br>
buffers created within Mesa's Wayland platform are created using the<br>
the wl_drm object as a proxy factory which means they will be set to<br>
use Mesa's internal event queue. However, these buffers will be owned<br>
by the client application so they ideally need to use the default<br>
event loop. This function provides a way to set the proxy's event<br>
queue back to the default.<br>
---<br>
 src/wayland-client.c | 14 ++++++++++++++<br>
 src/wayland-client.h |  1 +<br>
 2 files changed, 15 insertions(+)<br>
<br>
diff --git a/src/wayland-client.c b/src/wayland-client.c<br>
index 04d988b..48f06c7 100644<br>
--- a/src/wayland-client.c<br>
+++ b/src/wayland-client.c<br>
@@ -194,6 +194,20 @@ wl_display_create_queue(struct wl_display *display)<br>
        return queue;<br>
 }<br>
<br>
+/** Get the main event queue for this display<br>
+ *<br>
+ * \param display The display context object<br>
+ * \return A pointer to the main default event queue used with this<br>
+ * display.<br>
+ *<br>
+ * \memberof wl_display<br>
+ */<br>
+WL_EXPORT struct wl_event_queue *<br>
+wl_display_get_main_queue(struct wl_display *display)<br>
+{<br>
+       return &display->queue;<br>
+}<br>
+<br>
 /** Create a proxy object with a given interface<br>
  *<br>
  * \param factory Factory proxy object<br>
diff --git a/src/wayland-client.h b/src/wayland-client.h<br>
index cf92174..8cf6847 100644<br>
--- a/src/wayland-client.h<br>
+++ b/src/wayland-client.h<br>
@@ -157,6 +157,7 @@ int wl_display_get_error(struct wl_display *display);<br>
 int wl_display_flush(struct wl_display *display);<br>
 int wl_display_roundtrip(struct wl_display *display);<br>
 struct wl_event_queue *wl_display_create_queue(struct wl_display *display);<br>
+struct wl_event_queue *wl_display_get_main_queue(struct wl_display *display);<br>
<br>
 int wl_display_prepare_read_queue(struct wl_display *display,<br>
                                  struct wl_event_queue *queue);<br>
<span class="HOEnZb"><font color="#888888">--<br>
1.8.3.1<br>
<br>
_______________________________________________<br>
wayland-devel mailing list<br>
<a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/wayland-devel</a><br>
</font></span></blockquote></div><br></div>