From 3dd391655187e588a4371f329b228df7e9745ba9 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 14 May 2009 20:49:20 -0700 Subject: [PATCH] Make sure to sort connected services first always first --- src/service.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/service.c b/src/service.c index c194c55..951c9d6 100644 --- a/src/service.c +++ b/src/service.c @@ -592,6 +592,13 @@ static gint service_compare(gconstpointer a, gconstpointer b, struct connman_service *service_a = (void *) a; struct connman_service *service_b = (void *) b; + if (service_a->state != service_b->state) { + if (service_a->state == CONNMAN_SERVICE_STATE_READY) + return -1; + if (service_b->state == CONNMAN_SERVICE_STATE_READY) + return 1; + } + if (service_a->order > service_b->order) return -1; @@ -669,6 +676,8 @@ int __connman_service_set_carrier(struct connman_service *service, int __connman_service_indicate_state(struct connman_service *service, enum connman_service_state state) { + GSequenceIter *iter; + DBG("service %p state %d", service, state); if (service == NULL) @@ -728,6 +737,12 @@ int __connman_service_indicate_state(struct connman_service *service, state_changed(service); } + iter = g_hash_table_lookup(service_hash, service->identifier); + if (iter != NULL) + g_sequence_sort_changed(iter, service_compare, NULL); + + __connman_profile_changed(); + return 0; } -- 1.7.9.5