[gnome-software] Add functionality to get the largest historical size of a GsAppList
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] Add functionality to get the largest historical size of a GsAppList
- Date: Wed, 19 Apr 2017 21:22:31 +0000 (UTC)
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]