diff options
author | Jukka Rissanen <jukka.rissanen@linux.intel.com> | 2012-06-05 11:24:10 +0300 |
---|---|---|
committer | Patrik Flykt <patrik.flykt@linux.intel.com> | 2012-06-11 13:03:21 +0300 |
commit | c8d8aefdc7a7194e5dad7bb14d346a0f15385866 (patch) | |
tree | 6119a52d987d561d4269d59c8640ed6c7ec1f3c2 /src | |
parent | a43818bdc307dbc80f306562ba43df17d38a98e3 (diff) | |
download | connman-c8d8aefdc7a7194e5dad7bb14d346a0f15385866.tar.gz connman-c8d8aefdc7a7194e5dad7bb14d346a0f15385866.tar.bz2 connman-c8d8aefdc7a7194e5dad7bb14d346a0f15385866.zip |
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.
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) { |