From: Changyeon Lee Date: Fri, 8 Jan 2021 04:17:46 +0000 (+0900) Subject: surface: clean up tbm_surface_internal_set_debug_data X-Git-Tag: accepted/tizen/unified/20210115.125753~2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Flibtbm.git;a=commitdiff_plain;h=31e89e1345ad9c4d8115b6423507a9cdea88afca surface: clean up tbm_surface_internal_set_debug_data Change-Id: I08b2994f273f6ac3413d4a8bcb2216bc884f0442 --- diff --git a/src/tbm_surface_internal.c b/src/tbm_surface_internal.c index 10ebe79..872fb5c 100644 --- a/src/tbm_surface_internal.c +++ b/src/tbm_surface_internal.c @@ -1547,11 +1547,44 @@ _tbm_surface_internal_debug_data_create(char *key, char *value) return debug_data; } +static void +_tbm_surface_internal_debug_data_value_update(tbm_surface_debug_data *debug_data, char *value) +{ + if (!debug_data->value && !value) + return; + + if (debug_data->value && value && !strncmp(debug_data->value, value, strlen(debug_data->value))) + return; + + if (debug_data->value) + free(debug_data->value); + + if (value) + debug_data->value = strdup(value); + else + debug_data->value = NULL; +} + +static tbm_surface_debug_data * +_tbm_surface_internal_debug_data_find(struct list_head *list, char *key) +{ + tbm_surface_debug_data *debug_data = NULL; + + if (LIST_IS_EMPTY(list)) + return NULL; + + LIST_FOR_EACH_ENTRY(debug_data, list, item_link) { + if (!strncmp(debug_data->key, key, strlen(debug_data->key))) + return debug_data; + } + + return NULL; +} + int tbm_surface_internal_set_debug_data(tbm_surface_h surface, char *key, char *value) { tbm_surface_debug_data *debug_data = NULL; - tbm_surface_debug_data *old_data = NULL, *tmp = NULL; tbm_bufmgr bufmgr = NULL; _tbm_surface_mutex_lock(); @@ -1564,53 +1597,30 @@ tbm_surface_internal_set_debug_data(tbm_surface_h surface, char *key, char *valu TBM_SURFACE_RETURN_VAL_IF_FAIL(bufmgr, 0); - if (!LIST_IS_EMPTY(&surface->debug_data_list)) { - LIST_FOR_EACH_ENTRY(old_data, &surface->debug_data_list, item_link) { - if (old_data) { - if (!strcmp(old_data->key, key)) { - if (old_data->value && value && !strncmp(old_data->value, value, strlen(old_data->value))) { - TBM_TRACE_SURFACE_INTERNAL("tbm_surface(%p) Already exist key(%s) and value(%s)!\n", surface, key, value); - goto add_debug_key_list; - } - - if (old_data->value) - free(old_data->value); - - if (value) - old_data->value = strdup(value); - else - old_data->value = NULL; - - goto add_debug_key_list; - } - } + debug_data = _tbm_surface_internal_debug_data_find(&surface->debug_data_list, key); + if (debug_data) { + _tbm_surface_internal_debug_data_value_update(debug_data, value); + } else { + debug_data = _tbm_surface_internal_debug_data_create(key, value); + if (!debug_data) { + TBM_ERR("error: tbm_surface(%p) key(%s) value(%s)\n", surface, key, value); + _tbm_surface_mutex_unlock(); + return 0; } + + LIST_ADD(&debug_data->item_link, &surface->debug_data_list); } - debug_data = _tbm_surface_internal_debug_data_create(key, value); + /* add new debug key to list */ + debug_data = _tbm_surface_internal_debug_data_find(&bufmgr->debug_key_list, key); if (!debug_data) { - TBM_ERR("error: tbm_surface(%p) key(%s) value(%s)\n", surface, key, value); - _tbm_surface_mutex_unlock(); - return 0; + debug_data = _tbm_surface_internal_debug_data_create(key, NULL); + if (debug_data) + LIST_ADDTAIL(&debug_data->item_link, &bufmgr->debug_key_list); } TBM_TRACE_SURFACE_INTERNAL("tbm_surface(%p) key(%s) value(%s)\n", surface, key, value); - LIST_ADD(&debug_data->item_link, &surface->debug_data_list); - -add_debug_key_list: - if (!LIST_IS_EMPTY(&bufmgr->debug_key_list)) { - LIST_FOR_EACH_ENTRY_SAFE(old_data, tmp, &bufmgr->debug_key_list, item_link) { - if (!strcmp(old_data->key, key)) { - _tbm_surface_mutex_unlock(); - return 1; - } - } - } - - debug_data = _tbm_surface_internal_debug_data_create(key, NULL); - LIST_ADDTAIL(&debug_data->item_link, &bufmgr->debug_key_list); - _tbm_surface_mutex_unlock(); return 1;