From f0a71fe286d2e605f84c778520228d83e1405db4 Mon Sep 17 00:00:00 2001 From: Marcus Fritzsch Date: Tue, 12 Aug 2014 13:47:49 +0200 Subject: ilmControl: stricter checking in display_roundtrip_queue() Signed-off-by: Marcus Fritzsch --- .../ilmControl/src/ilm_control_wayland_platform.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 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 0869bd2..30b06e6 100644 --- a/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c +++ b/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c @@ -129,10 +129,11 @@ struct ilm_control_context { static void roundtrip_done(void *data, struct wl_callback *callback, uint32_t serial) { - (void) callback; (void) serial; *(int *)data = 1; + + wl_callback_destroy(callback); } static struct wl_callback_listener roundtrip_listener = {roundtrip_done}; @@ -143,6 +144,12 @@ int display_roundtrip_queue(struct wl_display *display, int done = 0; int ret = 0; struct wl_callback *callback = wl_display_sync(display); + + if (! callback) + { + return -1; + } + wl_proxy_set_queue((void *)callback, queue); wl_callback_add_listener(callback, &roundtrip_listener, &done); @@ -151,7 +158,10 @@ int display_roundtrip_queue(struct wl_display *display, ret = wl_display_dispatch_queue(display, queue); } - wl_callback_destroy(callback); + if (ret == -1 && !done) + { + wl_callback_destroy(callback); + } return ret; } -- cgit v1.2.1