diff options
author | Marcus Fritzsch <marcus.fritzsch@xse.de> | 2014-07-22 11:06:07 +0200 |
---|---|---|
committer | Nobuhiko Tanibata <NOBUHIKO_TANIBATA@denso.co.jp> | 2014-08-12 22:15:14 +0900 |
commit | b1663ee3809dbcda2f287a876b1c3f9c62944ae0 (patch) | |
tree | 4b805e33a4e74d3488e89902c2e7a7c5cb6f43d8 | |
parent | 5a8fb80fbf1bb42e320eb6a4d8b07be1b7ed26fa (diff) | |
download | wayland-ivi-extension-b1663ee3809dbcda2f287a876b1c3f9c62944ae0.tar.gz |
ilmControl: cancel read even on thread cancellation
Signed-off-by: Marcus Fritzsch <marcus.fritzsch@xse.de>
-rw-r--r-- | ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c | 13 |
1 files changed, 12 insertions, 1 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 29aa85a..2dd05ff 100644 --- a/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c +++ b/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c @@ -1270,6 +1270,11 @@ wayland_init(t_ilm_nativedisplay nativedisplay) return init_control() == 0 ? ILM_SUCCESS : ILM_FAILED; } +static void cancel_read(void *d) +{ + wl_display_cancel_read(d); +} + static void* control_thread(void *p_ret) { @@ -1307,7 +1312,13 @@ control_thread(void *p_ret) pfd.events = POLLIN; pfd.revents = 0; - if (poll(&pfd, 1, -1) != -1 && (pfd.revents & POLLIN)) + int pollret = -1; + + pthread_cleanup_push(cancel_read, wl->display); + pollret = poll(&pfd, 1, -1); + pthread_cleanup_pop(0); + + if (pollret != -1 && (pfd.revents & POLLIN)) { wl_display_read_events(wl->display); |