diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/config.c | 2 | ||||
-rw-r--r-- | src/connman.h | 3 | ||||
-rw-r--r-- | src/service.c | 39 |
3 files changed, 34 insertions, 10 deletions
diff --git a/src/config.c b/src/config.c index 253c277e..aba06c4e 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 fb2be57c..1d25cde3 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 99d441a5..697f2488 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) { |