[gnome-software] Add functionality to get the largest historical size of a GsAppList



commit 805c375554e86b398d7996b55544038835ba3a7e
Author: Richard Hughes <richard hughsie com>
Date:   Wed Apr 19 20:02:07 2017 +0100

    Add functionality to get the largest historical size of a GsAppList

 lib/gs-app-list-private.h |    1 +
 lib/gs-app-list.c         |   22 ++++++++++++++++++++++
 lib/gs-self-test.c        |    3 +++
 3 files changed, 26 insertions(+), 0 deletions(-)
---
diff --git a/lib/gs-app-list-private.h b/lib/gs-app-list-private.h
index e032f13..2a477b1 100644
--- a/lib/gs-app-list-private.h
+++ b/lib/gs-app-list-private.h
@@ -47,6 +47,7 @@ typedef gboolean (*GsAppListSortFunc)         (GsApp          *app1,
                                                 gpointer        user_data);
 
 GsAppList      *gs_app_list_copy               (GsAppList      *list);
+guint           gs_app_list_get_size_peak      (GsAppList      *list);
 void            gs_app_list_filter             (GsAppList      *list,
                                                 GsAppListFilterFunc func,
                                                 gpointer        user_data);
diff --git a/lib/gs-app-list.c b/lib/gs-app-list.c
index 97197e6..f3d5fa7 100644
--- a/lib/gs-app-list.c
+++ b/lib/gs-app-list.c
@@ -42,11 +42,29 @@ struct _GsAppList
        GPtrArray               *array;
        GHashTable              *hash_by_id;            /* app-id : app */
        GMutex                   mutex;
+       guint                    size_peak;
+       GsAppListFlags           flags;
 };
 
 G_DEFINE_TYPE (GsAppList, gs_app_list, G_TYPE_OBJECT)
 
 /**
+ * gs_app_list_get_size_peak:
+ * @list: A #GsAppList
+ *
+ * Returns the largest size the list has ever been.
+ *
+ * Returns: integer
+ *
+ * Since: 3.24
+ **/
+guint
+gs_app_list_get_size_peak (GsAppList *list)
+{
+       return list->size_peak;
+}
+
+/**
  * gs_app_list_lookup:
  * @list: A #GsAppList
  * @unique_id: A unique_id
@@ -118,6 +136,10 @@ gs_app_list_add_safe (GsAppList *list, GsApp *app)
        /* just use the ref */
        g_ptr_array_add (list->array, g_object_ref (app));
        g_hash_table_insert (list->hash_by_id, g_strdup (id), g_object_ref (app));
+
+       /* update the historical max */
+       if (list->array->len > list->size_peak)
+               list->size_peak = list->array->len;
 }
 
 /**
diff --git a/lib/gs-self-test.c b/lib/gs-self-test.c
index 61066d8..3b91429 100644
--- a/lib/gs-self-test.c
+++ b/lib/gs-self-test.c
@@ -340,14 +340,17 @@ gs_plugin_func (void)
        app = gs_app_new ("c");
        gs_app_list_add (list, app);
        g_object_unref (app);
+       g_assert_cmpint (gs_app_list_get_size_peak (list), ==, 3);
        gs_app_list_truncate (list, 3);
        g_assert_cmpint (gs_app_list_length (list), ==, 3);
+       g_assert_cmpint (gs_app_list_get_size_peak (list), ==, 3);
        gs_app_list_truncate (list, 2);
        g_assert_cmpint (gs_app_list_length (list), ==, 2);
        gs_app_list_truncate (list, 1);
        g_assert_cmpint (gs_app_list_length (list), ==, 1);
        gs_app_list_truncate (list, 0);
        g_assert_cmpint (gs_app_list_length (list), ==, 0);
+       g_assert_cmpint (gs_app_list_get_size_peak (list), ==, 3);
        g_object_unref (list);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]