From: Marcel Holtmann Date: Fri, 15 May 2009 03:49:20 +0000 (-0700) Subject: Make sure to sort connected services first always first X-Git-Tag: 0.19~9 X-Git-Url: http://git.maemo.org/git/?p=connman;a=commitdiff_plain;h=3dd391655187e588a4371f329b228df7e9745ba9;ds=sidebyside Make sure to sort connected services first always first --- 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; }