[gnome-software/wip/ubuntu-3-20: 40/57] De-dup based on source
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/wip/ubuntu-3-20: 40/57] De-dup based on source
- Date: Thu, 5 Oct 2017 04:13:46 +0000 (UTC)
commit 3f06cb747cb72b36ab5f4b337b1d792a072a649c
Author: Robert Ancell <robert ancell canonical com>
Date: Wed Feb 17 11:31:07 2016 -0800
De-dup based on source
src/gs-plugin.c | 13 ++++++++++---
1 files changed, 10 insertions(+), 3 deletions(-)
---
diff --git a/src/gs-plugin.c b/src/gs-plugin.c
index c85b15d..5bbc805 100644
--- a/src/gs-plugin.c
+++ b/src/gs-plugin.c
@@ -232,26 +232,33 @@ gs_plugin_list_filter_duplicates (GList **list)
GList *l;
GList *new = NULL;
GsApp *app;
- GsApp *found;
- const gchar *id;
+ GsApp *found, *found_source;
+ const gchar *id, *source;
g_autoptr(GHashTable) hash = NULL;
+ g_autoptr(GHashTable) source_hash = NULL;
g_return_if_fail (list != NULL);
/* create a new list with just the unique items */
hash = g_hash_table_new (g_str_hash, g_str_equal);
+ source_hash = g_hash_table_new (g_str_hash, g_str_equal);
for (l = *list; l != NULL; l = l->next) {
app = GS_APP (l->data);
id = gs_app_get_id (app);
+ source = gs_app_get_source_default (app);
if (id == NULL) {
gs_plugin_add_app (&new, app);
continue;
}
found = g_hash_table_lookup (hash, id);
- if (found == NULL) {
+ found_source = source != NULL ? g_hash_table_lookup (source_hash, source) : NULL;
+ if (found == NULL && found_source == NULL) {
gs_plugin_add_app (&new, app);
g_hash_table_insert (hash, (gpointer) id,
GUINT_TO_POINTER (1));
+ if (source != NULL)
+ g_hash_table_insert (source_hash, (gpointer) source,
+ GUINT_TO_POINTER (1));
continue;
}
g_debug ("ignoring duplicate %s", id);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]