summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config.c2
-rw-r--r--src/connman.h3
-rw-r--r--src/service.c39
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)
{