From: Boram Park Date: Thu, 24 Nov 2016 10:41:46 +0000 (+0900) Subject: fix memory leak X-Git-Tag: accepted/tizen/3.0.m2/mobile/20170104.142956~11 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c05870c98be7aa62ae8dbd81f4b64a5ffd637ec6;p=platform%2Fcore%2Fuifw%2Flibtdm.git fix memory leak Change-Id: Ia9795dc72428e976af48f789ab288abf7a0149c2 --- diff --git a/src/tdm_pp.c b/src/tdm_pp.c index 1a61d7f..93b7879 100644 --- a/src/tdm_pp.c +++ b/src/tdm_pp.c @@ -266,6 +266,11 @@ tdm_pp_destroy_internal(tdm_private_pp *private_pp) LIST_FOR_EACH_ENTRY_SAFE(b, bb, &private_pp->pending_buffer_list, link) { LIST_DEL(&b->link); + _pthread_mutex_unlock(&private_display->lock); + tdm_buffer_unref_backend(b->src); + tdm_buffer_unref_backend(b->dst); + _pthread_mutex_lock(&private_display->lock); + free(b); } } @@ -279,6 +284,7 @@ tdm_pp_destroy_internal(tdm_private_pp *private_pp) tdm_buffer_unref_backend(b->src); tdm_buffer_unref_backend(b->dst); _pthread_mutex_lock(&private_display->lock); + free(b); } } @@ -458,12 +464,17 @@ tdm_pp_commit(tdm_pp *pp) TDM_WARNING_IF_FAIL(ret == TDM_ERROR_NONE); LIST_FOR_EACH_ENTRY_SAFE(b, bb, &commit_buffer_list, commit_link) { + LIST_DEL(&b->commit_link); + if (!_tdm_pp_find_buffer(&private_pp->buffer_list, b)) continue; - LIST_DEL(&b->commit_link); - if (ret != TDM_ERROR_NONE) { + /* Not to call the user release handler when failed. + * Do we have to call this function here really? + * User better use set_done_handler to know when pp is done. Using + * buffer_release_handler is not good. + */ tdm_buffer_remove_release_handler_internal(b->src); tdm_buffer_remove_release_handler_internal(b->dst);