From: Boram Park Date: Mon, 26 Feb 2018 00:16:53 +0000 (+0900) Subject: client: fix deadlock issue X-Git-Tag: submit/tizen/20180227.014049~27 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F53%2F171053%2F2;p=platform%2Fcore%2Fuifw%2Flibtdm.git client: fix deadlock issue tdmp_vblank shouldn't be protected by mutex. Change-Id: I9bf718402774d3109b0482c2e8f80c4baeee8c54 --- diff --git a/client/tdm_client.c b/client/tdm_client.c index 9d00023..41a5fe2 100644 --- a/client/tdm_client.c +++ b/client/tdm_client.c @@ -487,8 +487,11 @@ tdm_client_destroy(tdm_client *client) pthread_mutex_lock(&private_client->lock); - if (private_client->temp_vblank) + if (private_client->temp_vblank) { + pthread_mutex_unlock(&private_client->lock); tdm_client_vblank_destroy(private_client->temp_vblank); + pthread_mutex_lock(&private_client->lock); + } LIST_FOR_EACH_ENTRY_SAFE(o, oo, &private_client->output_list, link) { _tdm_client_output_destroy(o); @@ -578,20 +581,12 @@ _tdm_client_vblank_handler_temp(tdm_client_vblank *vblank, tdm_error error, unsi unsigned int tv_sec, unsigned int tv_usec, void *user_data) { tdm_client_vblank_temp *vblank_temp = user_data; - tdm_private_client_vblank *private_vblank; - tdm_private_client *private_client; TDM_RETURN_IF_FAIL(vblank_temp != NULL); TDM_RETURN_IF_FAIL(vblank != NULL); - private_vblank = vblank; - private_client = private_vblank->private_output->private_client; - - if (vblank_temp->func) { - pthread_mutex_unlock(&private_client->lock); + if (vblank_temp->func) vblank_temp->func(sequence, tv_sec, tv_usec, vblank_temp->user_data); - pthread_mutex_lock(&private_client->lock); - } free(vblank_temp); }