diff options
author | Marcus Fritzsch <marcus.fritzsch@xse.de> | 2014-08-12 13:47:49 +0200 |
---|---|---|
committer | Nobuhiko Tanibata <NOBUHIKO_TANIBATA@denso.co.jp> | 2014-09-01 15:55:44 +0900 |
commit | f0a71fe286d2e605f84c778520228d83e1405db4 (patch) | |
tree | 6167a6ff78bbd1a898ad70ee93634c93c5b5be23 | |
parent | 0926070abc30fbeaeae5a90cca7ac061ed9cfdf3 (diff) | |
download | wayland-ivi-extension-f0a71fe286d2e605f84c778520228d83e1405db4.tar.gz |
ilmControl: stricter checking in display_roundtrip_queue()
Signed-off-by: Marcus Fritzsch <marcus.fritzsch@xse.de>
-rw-r--r-- | ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c | 14 |
1 files 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; } |