msm: vidc: prevent vcd_stop to wait for long

Video decoder release calls vid_dec_close_client which calls vcd_stop.
If vcd_stop notification fails, then there is a long wait. This patch
is limiting the same

Change-Id: Ibdf33e3882826429bf8c49a5888b8c9908e2e62d
Signed-off-by: Rahul Sharma <sharah@codeaurora.org>
This commit is contained in:
Rahul Sharma 2016-11-14 11:41:26 +05:30 committed by Artem Borisov
parent 53010ac515
commit 5e597b465b

View file

@ -2595,6 +2595,7 @@ static u32 vid_dec_close_client(struct video_client_ctx *client_ctx)
{ {
struct vid_dec_msg *vdec_msg; struct vid_dec_msg *vdec_msg;
u32 vcd_status; u32 vcd_status;
int rc;
DBG("msm_vidc_dec: Inside %s()", __func__); DBG("msm_vidc_dec: Inside %s()", __func__);
if (!client_ctx || (!client_ctx->vcd_handle)) { if (!client_ctx || (!client_ctx->vcd_handle)) {
@ -2608,8 +2609,16 @@ static u32 vid_dec_close_client(struct video_client_ctx *client_ctx)
client_ctx->stop_sync_cb = true; client_ctx->stop_sync_cb = true;
vcd_status = vcd_stop(client_ctx->vcd_handle); vcd_status = vcd_stop(client_ctx->vcd_handle);
DBG("\n Stuck at the stop call"); DBG("\n Stuck at the stop call");
if (!vcd_status) if (!vcd_status) {
wait_for_completion(&client_ctx->event); rc = wait_for_completion_timeout(&client_ctx->event,
msecs_to_jiffies(500));
if (!rc)
ERR("%s:ERROR vcd_stop time out rc = %d\n",
__func__, rc);
if (client_ctx->event_status)
ERR("%s:ERROR vcd_stop event_status failure\n",
__func__);
}
DBG("\n Came out of wait event"); DBG("\n Came out of wait event");
} }
mutex_lock(&client_ctx->msg_queue_lock); mutex_lock(&client_ctx->msg_queue_lock);