From: Jukka Rissanen Date: Tue, 5 Jun 2012 08:24:10 +0000 (+0300) Subject: service: Add function to set the favorite flag X-Git-Tag: accepted/2.0alpha-wayland/20121110.002834~102 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c8d8aefdc7a7194e5dad7bb14d346a0f15385866;p=profile%2Fivi%2Fconnman.git service: Add function to set the favorite flag Add a function that sets favorite flag but which does not touch the ordering of service sequence. This is needed when we check provisioned config file which traverses the service sequence. If a proper provisioned service is found, then it is marked as favorite but in this case we must not do any ordering of service sequence because we are in the middle of sequence traversal. --- diff --git a/src/config.c b/src/config.c index 253c277..aba06c4 100644 --- a/src/config.c +++ b/src/config.c @@ -775,7 +775,7 @@ static void provision_service(gpointer key, gpointer value, gpointer user_data) __connman_service_set_immutable(service, TRUE); - __connman_service_set_favorite(service, TRUE); + __connman_service_set_favorite_delayed(service, TRUE, TRUE); __connman_service_set_config(service, config->config_ident, config->config_entry); diff --git a/src/connman.h b/src/connman.h index fb2be57..1d25cde 100644 --- a/src/connman.h +++ b/src/connman.h @@ -595,6 +595,9 @@ const char *__connman_service_get_phase2(struct connman_service *service); connman_bool_t __connman_service_wps_enabled(struct connman_service *service); int __connman_service_set_favorite(struct connman_service *service, connman_bool_t favorite); +int __connman_service_set_favorite_delayed(struct connman_service *service, + connman_bool_t favorite, + gboolean delay_ordering); int __connman_service_set_immutable(struct connman_service *service, connman_bool_t immutable); void __connman_service_set_userconnect(struct connman_service *service, diff --git a/src/service.c b/src/service.c index 99d441a..697f248 100644 --- a/src/service.c +++ b/src/service.c @@ -4376,14 +4376,16 @@ connman_bool_t __connman_service_wps_enabled(struct connman_service *service) } /** - * __connman_service_set_favorite: + * __connman_service_set_favorite_delayed: * @service: service structure * @favorite: favorite value + * @delay_ordering: do not order service sequence * * Change the favorite setting of service */ -int __connman_service_set_favorite(struct connman_service *service, - connman_bool_t favorite) +int __connman_service_set_favorite_delayed(struct connman_service *service, + connman_bool_t favorite, + gboolean delay_ordering) { GSequenceIter *iter; @@ -4397,20 +4399,39 @@ int __connman_service_set_favorite(struct connman_service *service, return -EALREADY; service->favorite = favorite; - service->order = __connman_service_get_order(service); + + if (delay_ordering == FALSE) + service->order = __connman_service_get_order(service); favorite_changed(service); - if (g_sequence_get_length(service_list) > 1) { - g_sequence_sort_changed(iter, service_compare, NULL); - service_schedule_changed(); - } + if (delay_ordering == FALSE) { - __connman_connection_update_gateway(); + if (g_sequence_get_length(service_list) > 1) { + g_sequence_sort_changed(iter, service_compare, NULL); + service_schedule_changed(); + } + + __connman_connection_update_gateway(); + } return 0; } +/** + * __connman_service_set_favorite: + * @service: service structure + * @favorite: favorite value + * + * Change the favorite setting of service + */ +int __connman_service_set_favorite(struct connman_service *service, + connman_bool_t favorite) +{ + return __connman_service_set_favorite_delayed(service, favorite, + FALSE); +} + int __connman_service_set_immutable(struct connman_service *service, connman_bool_t immutable) {