summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJukka Rissanen <jukka.rissanen@linux.intel.com>2012-06-05 11:24:12 +0300
committerPatrik Flykt <patrik.flykt@linux.intel.com>2012-06-11 13:03:28 +0300
commit390b1719b848c07bcad9ab31365b5fad1ad3f21c (patch)
tree55bb953199a0245f2fcb4ee0d1faecd1d8f8d24f /src
parentc329f0f22773df936ef31c539d8fd32c3a973659 (diff)
downloadconnman-390b1719b848c07bcad9ab31365b5fad1ad3f21c.tar.gz
connman-390b1719b848c07bcad9ab31365b5fad1ad3f21c.tar.bz2
connman-390b1719b848c07bcad9ab31365b5fad1ad3f21c.zip
service: Sort service sequence after checking provisioned services
Diffstat (limited to 'src')
-rw-r--r--src/config.c2
-rw-r--r--src/service.c15
2 files changed, 17 insertions, 0 deletions
diff --git a/src/config.c b/src/config.c
index aba06c4e..e04a88f0 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 5e1b51aa..c1182787 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,