summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJukka Rissanen <jukka.rissanen@linux.intel.com>2012-06-05 11:24:10 +0300
committerPatrik Flykt <patrik.flykt@linux.intel.com>2012-06-11 13:03:21 +0300
commitc8d8aefdc7a7194e5dad7bb14d346a0f15385866 (patch)
tree6119a52d987d561d4269d59c8640ed6c7ec1f3c2 /src
parenta43818bdc307dbc80f306562ba43df17d38a98e3 (diff)
downloadconnman-c8d8aefdc7a7194e5dad7bb14d346a0f15385866.tar.gz
connman-c8d8aefdc7a7194e5dad7bb14d346a0f15385866.tar.bz2
connman-c8d8aefdc7a7194e5dad7bb14d346a0f15385866.zip
service: Add function to set the favorite flag
Add a function that sets favorite flag but which does not touch the ordering of service sequence. This is needed when we check provisioned config file which traverses the service sequence. If a proper provisioned service is found, then it is marked as favorite but in this case we must not do any ordering of service sequence because we are in the middle of sequence traversal.
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)
{