summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHannu Mallat <hannu.mallat@jollamobile.com>2014-05-22 08:11:19 +0300
committerPatrik Flykt <patrik.flykt@linux.intel.com>2014-05-23 15:57:13 +0300
commitef79829f319185d05bcabac9d32b058ee8b01e28 (patch)
tree57a12b73df98c8b53a5b7d940e4f16b36d9c27f1
parentab87d87dad1f975d61eec281a68c406edb03aeac (diff)
downloadconnman-ef79829f319185d05bcabac9d32b058ee8b01e28.tar.gz
service: Helper function for sorting services
Create a helper function to sort service list in order to shorten the code slightly and to ensure NULL pointer check is always done before using the list pointer.
-rw-r--r--src/service.c41
1 files changed, 14 insertions, 27 deletions
diff --git a/src/service.c b/src/service.c
index 6a70777a..d586147a 100644
--- a/src/service.c
+++ b/src/service.c
@@ -4729,6 +4729,14 @@ static gint service_compare(gconstpointer a, gconstpointer b)
return g_strcmp0(service_a->name, service_b->name);
}
+static void service_list_sort(void)
+{
+ if (service_list && service_list->next) {
+ service_list = g_list_sort(service_list, service_compare);
+ service_schedule_changed();
+ }
+}
+
/**
* connman_service_get_type:
* @service: service structure
@@ -4896,11 +4904,7 @@ int __connman_service_set_favorite_delayed(struct connman_service *service,
if (!delay_ordering) {
- if (service_list->next) {
- service_list = g_list_sort(service_list,
- service_compare);
- service_schedule_changed();
- }
+ service_list_sort();
__connman_connection_update_gateway();
}
@@ -5449,10 +5453,7 @@ static int service_indicate_state(struct connman_service *service)
} else
set_error(service, CONNMAN_SERVICE_ERROR_UNKNOWN);
- if (service_list->next) {
- service_list = g_list_sort(service_list, service_compare);
- service_schedule_changed();
- }
+ service_list_sort();
__connman_connection_update_gateway();
@@ -6159,11 +6160,7 @@ int __connman_service_provision_changed(const char *ident)
if (services_dirty) {
services_dirty = false;
- if (service_list->next) {
- service_list = g_list_sort(service_list,
- service_compare);
- service_schedule_changed();
- }
+ service_list_sort();
__connman_connection_update_gateway();
}
@@ -6237,10 +6234,7 @@ static int service_register(struct connman_service *service)
service_methods, service_signals,
NULL, service, NULL);
- if (service_list->next) {
- service_list = g_list_sort(service_list, service_compare);
- service_schedule_changed();
- }
+ service_list_sort();
__connman_connection_update_gateway();
@@ -6669,10 +6663,7 @@ static void update_from_network(struct connman_service *service,
if (!service->network)
service->network = connman_network_ref(network);
- if (service_list->next) {
- service_list = g_list_sort(service_list, service_compare);
- service_schedule_changed();
- }
+ service_list_sort();
}
/**
@@ -6834,11 +6825,7 @@ roaming:
sorting:
if (need_sort) {
- if (service_list->next) {
- service_list = g_list_sort(service_list,
- service_compare);
- service_schedule_changed();
- }
+ service_list_sort();
}
}