summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2016-08-11 14:03:45 +0200
committerAleksander Morgado <aleksander@aleksander.es>2016-10-12 13:24:09 +0200
commit292914cf65df5e5f87d95fb948a113b56635d1be (patch)
treeab019d9fc25757f19d51da8ee5e886f048cd10ff
parentca1b9cb686bcf634701d4a6421d60e4e82b6784c (diff)
downloadModemManager-292914cf65df5e5f87d95fb948a113b56635d1be.tar.gz
iface-modem: always sort supported and current bands before exposing them
-rw-r--r--libmm-glib/mm-common-helpers.c6
-rw-r--r--libmm-glib/mm-common-helpers.h3
-rw-r--r--src/mm-iface-modem.c7
3 files changed, 14 insertions, 2 deletions
diff --git a/libmm-glib/mm-common-helpers.c b/libmm-glib/mm-common-helpers.c
index 3a5883b2a..7bd845b93 100644
--- a/libmm-glib/mm-common-helpers.c
+++ b/libmm-glib/mm-common-helpers.c
@@ -655,6 +655,12 @@ mm_common_bands_garray_cmp (GArray *a, GArray *b)
return !different;
}
+void
+mm_common_bands_garray_sort (GArray *array)
+{
+ g_array_sort (array, (GCompareFunc) cmp_band);
+}
+
GArray *
mm_common_mode_combinations_variant_to_garray (GVariant *variant)
{
diff --git a/libmm-glib/mm-common-helpers.h b/libmm-glib/mm-common-helpers.h
index ab5777d1e..772068e99 100644
--- a/libmm-glib/mm-common-helpers.h
+++ b/libmm-glib/mm-common-helpers.h
@@ -100,7 +100,8 @@ GVariant *mm_common_bands_garray_to_variant (GArray *array);
GVariant *mm_common_build_bands_any (void);
GVariant *mm_common_build_bands_unknown (void);
-gboolean mm_common_bands_garray_cmp (GArray *a, GArray *b);
+gboolean mm_common_bands_garray_cmp (GArray *a, GArray *b);
+void mm_common_bands_garray_sort (GArray *array);
GArray *mm_common_mode_combinations_variant_to_garray (GVariant *variant);
MMModemModeCombination *mm_common_mode_combinations_variant_to_array (GVariant *variant,
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c
index 4619cd66e..046b3455c 100644
--- a/src/mm-iface-modem.c
+++ b/src/mm-iface-modem.c
@@ -2188,12 +2188,15 @@ set_current_bands_ready (MMIfaceModem *self,
supported_bands = (mm_common_bands_variant_to_garray (
mm_gdbus_modem_get_supported_bands (ctx->skeleton)));
+ mm_common_bands_garray_sort (supported_bands);
mm_gdbus_modem_set_current_bands (ctx->skeleton,
mm_common_bands_garray_to_variant (supported_bands));
g_array_unref (supported_bands);
- } else
+ } else {
+ mm_common_bands_garray_sort (ctx->bands_array);
mm_gdbus_modem_set_current_bands (ctx->skeleton,
mm_common_bands_garray_to_variant (ctx->bands_array));
+ }
g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
}
@@ -3992,6 +3995,7 @@ load_supported_bands_ready (MMIfaceModem *self,
bands_array = MM_IFACE_MODEM_GET_INTERFACE (self)->load_supported_bands_finish (self, res, &error);
if (bands_array) {
+ mm_common_bands_garray_sort (bands_array);
mm_gdbus_modem_set_supported_bands (ctx->skeleton,
mm_common_bands_garray_to_variant (bands_array));
g_array_unref (bands_array);
@@ -4193,6 +4197,7 @@ load_current_bands_ready (MMIfaceModem *self,
g_array_unref (supported_bands);
if (filtered_bands) {
+ mm_common_bands_garray_sort (filtered_bands);
mm_gdbus_modem_set_current_bands (ctx->skeleton,
mm_common_bands_garray_to_variant (filtered_bands));
g_array_unref (filtered_bands);