[bijiben] Manager::EmptyBin : use g_list_foreach
- From: Pierre-Yves Luyten <pyluyten src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [bijiben] Manager::EmptyBin : use g_list_foreach
- Date: Thu, 6 Mar 2014 21:14:42 +0000 (UTC)
commit 9e63f37c98327a79f8227962fd8d096c53363bc4
Author: Pierre-Yves Luyten <py luyten fr>
Date: Thu Mar 6 21:48:58 2014 +0100
Manager::EmptyBin : use g_list_foreach
and update hash table on-the-fly
src/libbiji/biji-manager.c | 35 +++++++++++++++++++++++++++--------
1 files changed, 27 insertions(+), 8 deletions(-)
---
diff --git a/src/libbiji/biji-manager.c b/src/libbiji/biji-manager.c
index 4630742..6ad010b 100644
--- a/src/libbiji/biji-manager.c
+++ b/src/libbiji/biji-manager.c
@@ -291,6 +291,23 @@ biji_manager_notify_changed (BijiManager *manager,
static void
on_item_deleted_cb (BijiItem *item, BijiManager *manager)
{
+ BijiItem *to_delete;
+ const gchar *path;
+ gboolean retval;
+
+
+ to_delete = NULL;
+ retval = FALSE;
+ path = biji_item_get_uuid (item);
+ to_delete = g_hash_table_lookup (manager->priv->archives, path);
+
+ if (to_delete != NULL)
+ retval = TRUE;
+
+ if (!retval)
+ return;
+
+ g_hash_table_remove (manager->priv->archives, path);
biji_manager_notify_changed (manager,
BIJI_ARCHIVED_ITEMS,
BIJI_MANAGER_ITEM_DELETED,
@@ -668,21 +685,23 @@ biji_manager_load_archives (BijiManager *manager)
static void
-_delete_item (gpointer key,
- gpointer value,
+_delete_item (gpointer data,
gpointer user_data)
{
- BijiItem *i;
-
- i = BIJI_ITEM (value);
- biji_item_delete (i);
+ biji_item_delete (BIJI_ITEM (data));
}
+/* Do not g_list_free_full here.
+ * We only unref items where deletion works */
void
-biji_manager_empty_bin (BijiManager *manager)
+biji_manager_empty_bin (BijiManager *self)
{
- g_hash_table_foreach (manager->priv->archives, _delete_item, NULL);
+ GList *items;
+
+ items = g_hash_table_get_values (self->priv->archives);
+ g_list_foreach (items, _delete_item, NULL);
+ g_list_free (items);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]