summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2015-03-04 10:21:51 +0000
committerRichard Hughes <richard@hughsie.com>2015-03-04 10:21:51 +0000
commite23ea1641a6e1dea9c61a4da3a7862d31cf5c3e0 (patch)
tree6ead42d18e632730f0b46d3b21d43b092b290f37
parent6a75be8747ae649b21a8bab5b949fce44683581b (diff)
downloadappstream-glib-e23ea1641a6e1dea9c61a4da3a7862d31cf5c3e0.tar.gz
Sort releases in newest-to-oldest order
-rw-r--r--libappstream-glib/as-app.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/libappstream-glib/as-app.c b/libappstream-glib/as-app.c
index 31d4efa..6bc9d74 100644
--- a/libappstream-glib/as-app.c
+++ b/libappstream-glib/as-app.c
@@ -2890,6 +2890,18 @@ as_app_ptr_array_sort_cb (gconstpointer a, gconstpointer b)
}
/**
+ * as_app_releases_sort_cb:
+ **/
+static gint
+as_app_releases_sort_cb (gconstpointer a, gconstpointer b)
+{
+ AsRelease **rel1 = (AsRelease **) a;
+ AsRelease **rel2 = (AsRelease **) b;
+ return g_strcmp0 (as_release_get_version (*rel2),
+ as_release_get_version (*rel1));
+}
+
+/**
* as_app_list_sort_cb:
**/
static gint
@@ -3212,6 +3224,7 @@ as_app_node_insert (AsApp *app, GNode *parent, AsNodeContext *ctx)
/* <releases> */
if (priv->releases->len > 0 && api_version >= 0.6) {
+ g_ptr_array_sort (priv->releases, as_app_releases_sort_cb);
node_tmp = as_node_insert (node_app, "releases", NULL, 0, NULL);
for (i = 0; i < priv->releases->len && i < 3; i++) {
rel = g_ptr_array_index (priv->releases, i);