X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Ftdm_buffer.c;h=e437a58d33768291f3fb954f3d2e3cf6295b452c;hb=a87e1609d7c2be6fafbfba39fd930adcc0d23491;hp=5d501b05cd089c5730f4fabf1bde4fdece865842;hpb=aff08f43b31fb88160915b27b19dfb70233313f7;p=platform%2Fcore%2Fuifw%2Flibtdm.git diff --git a/src/tdm_buffer.c b/src/tdm_buffer.c index 5d501b0..e437a58 100644 --- a/src/tdm_buffer.c +++ b/src/tdm_buffer.c @@ -120,7 +120,7 @@ tdm_buffer_add_release_handler(tbm_surface_h buffer, tdm_buffer_release_handler func, void *user_data) { tdm_buffer_info *buf_info; - tdm_buffer_func_info *func_info; + tdm_buffer_func_info *func_info = NULL; TDM_RETURN_VAL_IF_FAIL(buffer != NULL, TDM_ERROR_INVALID_PARAMETER); TDM_RETURN_VAL_IF_FAIL(func != NULL, TDM_ERROR_INVALID_PARAMETER); @@ -128,6 +128,13 @@ tdm_buffer_add_release_handler(tbm_surface_h buffer, buf_info = tdm_buffer_get_info(buffer); TDM_RETURN_VAL_IF_FAIL(buf_info != NULL, TDM_ERROR_OUT_OF_MEMORY); + LIST_FOR_EACH_ENTRY(func_info, &buf_info->release_funcs, link) { + if (func_info->release_func == func && func_info->user_data == user_data) { + TDM_ERR("can't add twice"); + return TDM_ERROR_BAD_REQUEST; + } + } + func_info = calloc(1, sizeof(tdm_buffer_func_info)); TDM_RETURN_VAL_IF_FAIL(func_info != NULL, TDM_ERROR_OUT_OF_MEMORY); @@ -232,7 +239,7 @@ tdm_buffer_add_destroy_handler(tbm_surface_h buffer, tdm_buffer_destroy_handler func, void *user_data) { tdm_buffer_info *buf_info; - tdm_buffer_func_info *func_info; + tdm_buffer_func_info *func_info = NULL; TDM_RETURN_VAL_IF_FAIL(buffer != NULL, TDM_ERROR_INVALID_PARAMETER); TDM_RETURN_VAL_IF_FAIL(func != NULL, TDM_ERROR_INVALID_PARAMETER); @@ -240,6 +247,13 @@ tdm_buffer_add_destroy_handler(tbm_surface_h buffer, buf_info = tdm_buffer_get_info(buffer); TDM_RETURN_VAL_IF_FAIL(buf_info != NULL, TDM_ERROR_OUT_OF_MEMORY); + LIST_FOR_EACH_ENTRY(func_info, &buf_info->destroy_funcs, link) { + if (func_info->destroy_func == func && func_info->user_data == user_data) { + TDM_ERR("can't add twice"); + return TDM_ERROR_BAD_REQUEST; + } + } + func_info = calloc(1, sizeof(tdm_buffer_func_info)); TDM_RETURN_VAL_IF_FAIL(func_info != NULL, TDM_ERROR_OUT_OF_MEMORY);