- There may be cases where the ddk terminates
without sending a fence release signal.
- In such a case, waiting for signaled with
tpl_gcond_wait() may result in deadlock.
- The newly added tpl_gcond_timed_wait() is used to
force release if a signal does not come within 16ms.
Change-Id: I11801bb9f8ff4450a00b12656694940e28121a69
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
need_to_cancel = wl_egl_buffer->status == DEQUEUED;
- if (wl_egl_buffer->status == WAITING_SIGNALED)
- tpl_gcond_wait(&wl_egl_buffer->cond, &wl_egl_buffer->mutex);
+ if (wl_egl_buffer->status == WAITING_SIGNALED) {
+ tpl_result_t wait_result = TPL_ERROR_NONE;
+ wait_result = tpl_cond_timed_wait(&wl_egl_buffer->cond,
+ &wl_egl_buffer->mutex,
+ 16);
+ if (wait_result == TPL_ERROR_TIME_OUT)
+ TPL_WARN("timeout occured waiting signaled. wl_egl_buffer(%p)",
+ wl_egl_buffer);
+ }
if (need_to_release) {
tsq_err = tbm_surface_queue_release(wl_egl_surface->tbm_queue,