static OMX_ERRORTYPE _ctx_wait (cc_ctx_t * app_ctx, OMX_U32 a_millis, OMX_BOOL * ap_has_timedout) { int retcode; check_common_context_t *p_ctx = NULL; assert (app_ctx); p_ctx = * app_ctx; TIZ_LOG (TIZ_TRACE, "a_millis [%u]", a_millis); * ap_has_timedout = OMX_FALSE; if (tiz_mutex_lock (&p_ctx->mutex)) { return OMX_ErrorBadParameter; } if (0 == a_millis) { if (!p_ctx->signaled) { * ap_has_timedout = OMX_TRUE; } } else if (INFINITE_WAIT == a_millis) { while (!p_ctx->signaled) { tiz_cond_wait (&p_ctx->cond, &p_ctx->mutex); } } else { while (!p_ctx->signaled) { retcode = tiz_cond_timedwait (&p_ctx->cond, &p_ctx->mutex, a_millis); /* TODO: Change this to OMX_ErrorTimeout */ if (retcode == OMX_ErrorUndefined && !p_ctx->signaled) { * ap_has_timedout = OMX_TRUE; break; } } } tiz_mutex_unlock (&p_ctx->mutex); return OMX_ErrorNone; }
static OMX_ERRORTYPE _ctx_wait (cc_ctx_t * app_ctx, OMX_EVENTTYPE event, OMX_U32 a_millis, OMX_BOOL * ap_has_timedout) { OMX_ERRORTYPE retcode = OMX_ErrorNone; check_common_context_t *p_ctx = NULL; assert (app_ctx); assert (-1 != event2signal(event)); p_ctx = * app_ctx; * ap_has_timedout = OMX_FALSE; if (tiz_mutex_lock (&p_ctx->mutex)) { return OMX_ErrorBadParameter; } TIZ_LOG (TIZ_PRIORITY_TRACE, "Waiting for [%s] a_millis [%u] signaled [%s]", ctx2cname(p_ctx), a_millis, p_ctx->signaled[event2signal(event)] ? "OMX_TRUE" : "OMX_FALSE"); if (0 == a_millis) { if (!p_ctx->signaled[event2signal(event)]) { * ap_has_timedout = OMX_TRUE; } } else if (INFINITE_WAIT == a_millis) { while (!p_ctx->signaled[event2signal(event)]) { tiz_cond_wait (&p_ctx->cond, &p_ctx->mutex); } } else { while (!p_ctx->signaled[event2signal(event)]) { retcode = tiz_cond_timedwait (&p_ctx->cond, &p_ctx->mutex, a_millis); /* TODO: Change this to OMX_ErrorTimeout */ if (retcode == OMX_ErrorUndefined && !p_ctx->signaled[event2signal(event)]) { TIZ_LOG (TIZ_PRIORITY_TRACE, "Waiting for [%s] - " "timeout occurred", ctx2cname(p_ctx)); * ap_has_timedout = OMX_TRUE; break; } } } tiz_mutex_unlock (&p_ctx->mutex); return OMX_ErrorNone; }