From: Jukka Rissanen Date: Tue, 5 Jun 2012 08:24:12 +0000 (+0300) Subject: service: Sort service sequence after checking provisioned services X-Git-Tag: 1.2~65 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;ds=sidebyside;h=390b1719b848c07bcad9ab31365b5fad1ad3f21c;p=platform%2Fupstream%2Fconnman.git service: Sort service sequence after checking provisioned services --- diff --git a/src/config.c b/src/config.c index aba06c4..e04a88f 100644 --- a/src/config.c +++ b/src/config.c @@ -828,6 +828,8 @@ static void provision_service(gpointer key, gpointer value, gpointer user_data) if (config->passphrase != NULL) __connman_service_set_string(service, "Passphrase", config->passphrase); + + __connman_service_mark_dirty(); } int __connman_config_provision_service(struct connman_service *service) diff --git a/src/service.c b/src/service.c index 5e1b51a..c118278 100644 --- a/src/service.c +++ b/src/service.c @@ -5506,6 +5506,21 @@ static void provision_changed(gpointer value, gpointer user_data) void __connman_service_provision_changed(const char *ident) { g_sequence_foreach(service_list, provision_changed, (void *)ident); + + /* + * Because the provision_changed() might have set some services + * as favorite, we must sort the sequence now. + */ + if (services_dirty == TRUE) { + services_dirty = FALSE; + + if (g_sequence_get_length(service_list) > 1) { + g_sequence_sort(service_list, service_compare, NULL); + service_schedule_changed(); + } + + __connman_connection_update_gateway(); + } } void __connman_service_set_config(struct connman_service *service,