[gnome-todo] eds/provider-eds: Use source UID as hash key



commit fd61df5517bd4ca436b45c3462b12a534281e6be
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Sun Apr 26 15:53:21 2020 -0300

    eds/provider-eds: Use source UID as hash key

 plugins/eds/gtd-provider-eds.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)
---
diff --git a/plugins/eds/gtd-provider-eds.c b/plugins/eds/gtd-provider-eds.c
index 302ef3b..229f0b9 100644
--- a/plugins/eds/gtd-provider-eds.c
+++ b/plugins/eds/gtd-provider-eds.c
@@ -1,6 +1,6 @@
 /* gtd-provider-eds.c
  *
- * Copyright (C) 2015 Georges Basile Stavracas Neto <georges stavracas gmail com>
+ * Copyright (C) 2015-2020 Georges Basile Stavracas Neto <georges stavracas gmail com>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -136,7 +136,7 @@ on_task_list_eds_loaded_cb (GObject      *source_object,
 
   source = gtd_task_list_eds_get_source (list);
 
-  g_hash_table_add (priv->task_lists, list);
+  g_hash_table_insert (priv->task_lists, e_source_dup_uid (source), g_object_ref (list));
   g_object_set_data (G_OBJECT (source), "task-list", list);
 
   /* Check if the current list is the default one */
@@ -229,11 +229,9 @@ on_source_removed_cb (GtdProviderEds *provider,
   priv = gtd_provider_eds_get_instance_private (provider);
   list = g_object_get_data (G_OBJECT (source), "task-list");
 
-  if (!g_hash_table_contains (priv->task_lists, list))
+  if (!g_hash_table_remove (priv->task_lists, gtd_object_get_uid (GTD_OBJECT (list))))
     GTD_RETURN ();
 
-  g_hash_table_remove (priv->task_lists, list);
-
   /*
    * Since all subclasses will have this signal given that they
    * are all GtdProvider implementations, it's not that bad
@@ -521,7 +519,7 @@ gtd_provider_eds_refresh (GtdProvider *provider)
   collections = g_hash_table_new (g_direct_hash, g_direct_equal);
 
   g_hash_table_iter_init (&iter, priv->task_lists);
-  while (g_hash_table_iter_next (&iter, (gpointer*) &list, NULL))
+  while (g_hash_table_iter_next (&iter, NULL, (gpointer*) &list))
     {
       g_autoptr (ESource) collection = NULL;
       ESource *source;
@@ -763,7 +761,7 @@ gtd_provider_eds_get_task_lists (GtdProvider *provider)
 {
   GtdProviderEdsPrivate *priv = gtd_provider_eds_get_instance_private (GTD_PROVIDER_EDS (provider));
 
-  return g_hash_table_get_keys (priv->task_lists);
+  return g_hash_table_get_values (priv->task_lists);
 }
 
 static GtdTaskList*
@@ -998,7 +996,7 @@ gtd_provider_eds_init (GtdProviderEds *self)
   GtdProviderEdsPrivate *priv = gtd_provider_eds_get_instance_private (self);
 
   priv->cancellable = g_cancellable_new ();
-  priv->task_lists = g_hash_table_new (g_direct_hash, g_direct_equal);
+  priv->task_lists = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
 }
 
 GtdProviderEds*


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