summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Fritzsch <marcus.fritzsch@xse.de>2014-07-28 09:58:52 +0200
committerNobuhiko Tanibata <NOBUHIKO_TANIBATA@denso.co.jp>2014-08-12 22:15:12 +0900
commitaeb980a31890466bb1e2f316a9082ac86272c038 (patch)
treed5c35137c5903e2404a932dcbb82616bb6002a5e
parent245733a685ec7c96af5d6106b468ec6c4fc5e1c4 (diff)
downloadwayland-ivi-extension-aeb980a31890466bb1e2f316a9082ac86272c038.tar.gz
ilmControl: Added display_roundtrip_queue()
Signed-off-by: Marcus Fritzsch <marcus.fritzsch@xse.de>
-rw-r--r--ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c b/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c
index 07918b0..dcdcbbc 100644
--- a/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c
+++ b/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c
@@ -359,6 +359,36 @@ struct ilm_control_context {
uint32_t internal_id_surface;
};
+static void roundtrip_done(void *data, struct wl_callback *callback,
+ uint32_t serial)
+{
+ (void) callback;
+ (void) serial;
+
+ *(int *)data = 1;
+}
+
+static struct wl_callback_listener roundtrip_listener = {roundtrip_done};
+
+int display_roundtrip_queue(struct wl_display *display,
+ struct wl_event_queue *queue)
+{
+ int done = 0;
+ int ret = 0;
+ struct wl_callback *callback = wl_display_sync(display);
+ wl_proxy_set_queue((void *)callback, queue);
+ wl_callback_add_listener(callback, &roundtrip_listener, &done);
+
+ while (ret != -1 && !done)
+ {
+ ret = wl_display_dispatch_queue(display, queue);
+ }
+
+ wl_callback_destroy(callback);
+
+ return ret;
+}
+
static int create_controller_layer(struct wayland_context *ctx, t_ilm_uint width, t_ilm_uint height, t_ilm_layer layerid);
static int32_t