From: jinwang.an Date: Mon, 10 Feb 2020 07:21:44 +0000 (+0900) Subject: Update usage about g_list search X-Git-Tag: accepted/tizen/unified/20200225.224305~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F95%2F224795%2F1;p=platform%2Fcore%2Fapi%2Fsystem-settings.git Update usage about g_list search Change-Id: Idcab27d34c0c7fcd0f1f9c7d4667400e24d0de15 Signed-off-by: jinwang.an --- diff --git a/src/system_settings_multi_callback.c b/src/system_settings_multi_callback.c index a006a73..7e741b8 100644 --- a/src/system_settings_multi_callback.c +++ b/src/system_settings_multi_callback.c @@ -33,34 +33,28 @@ void free_multi_callback_node(callback_node* node) return; } -GList* find_callback_node(callback_list *handle, system_settings_changed_cb ptr) +static gint _compare_cb(gconstpointer val, gconstpointer s_val) { - if (!handle) - return NULL; - - GList *itr = g_list_first(handle->list); - while (itr != NULL) { - callback_node* node = (callback_node*)itr->data; - if (node->callback == ptr) - return itr; - itr = g_list_next(itr); - } + if (NULL == val) return 1; + if (NULL == s_val) return 1; - return itr; /* itr == NULL NOT found! */ + callback_node* node = (callback_node*)val; + if (node->callback == s_val) + return 0; + return -1; } - int delete_multi_callback(callback_list *handle, system_settings_changed_cb ptr) { SETTING_TRACE_BEGIN; if (!handle || !ptr) return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; - GList* itr = find_callback_node(handle, ptr); - if (itr) { - handle->list = g_list_remove_link(handle->list, itr); - free_multi_callback_node((callback_node*)itr->data); - g_list_free(itr); + GList *found = g_list_find_custom(handle->list, ptr, _compare_cb); + if (found) { + handle->list = g_list_remove_link(handle->list, found); + free_multi_callback_node((callback_node*)found->data); + g_list_free(found); } SETTING_TRACE_END; @@ -73,8 +67,8 @@ int add_multi_callback(callback_list *handle, system_settings_changed_cb ptr, vo if (!handle || !ptr) return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; - GList* itr = find_callback_node(handle, ptr); - if (itr != NULL) + GList *found = g_list_find_custom(handle->list, ptr, _compare_cb); + if (found != NULL) return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; callback_node* node = alloc_multi_callback_node(); @@ -98,7 +92,7 @@ int invoke_callback_list(callback_list *handle, system_settings_key_e key) if (!handle) return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; - GList *itr = g_list_first(handle->list); + GList *itr = handle->list; while (itr != NULL) { callback_node* node = (callback_node*)itr->data; if (node->callback)