[gimp] Keep the item hash table around permanently
- From: Michael Natterer <mitch src gnome org>
- To: svn-commits-list gnome org
- Subject: [gimp] Keep the item hash table around permanently
- Date: Tue, 28 Jul 2009 13:05:04 +0000 (UTC)
commit 1b759561ce58c5bab3002cf6cbf67a01baada984
Author: Michael Natterer <mitch gimp org>
Date: Tue Jul 28 15:01:57 2009 +0200
Keep the item hash table around permanently
GHashTable has g_hash_table_remove_all() since GLib 2.12, so there is
no need any longer to clear the hash table by destroyung it. Instead,
keep the hash around during the view's entire lifetime and remove all
re-creation code and all checks for its existence.
app/widgets/gimpcontainerview.c | 52 +++++++-------------------------------
1 files changed, 10 insertions(+), 42 deletions(-)
---
diff --git a/app/widgets/gimpcontainerview.c b/app/widgets/gimpcontainerview.c
index a622ccc..bc00884 100644
--- a/app/widgets/gimpcontainerview.c
+++ b/app/widgets/gimpcontainerview.c
@@ -283,6 +283,11 @@ gimp_container_view_get_private (GimpContainerView *view)
private->view_border_width = 1;
+ private->item_hash = g_hash_table_new_full (g_direct_hash,
+ g_direct_equal,
+ NULL,
+ view_iface->insert_data_free);
+
g_object_set_qdata_full ((GObject *) view, private_key, private,
(GDestroyNotify) gimp_container_view_private_finalize);
@@ -710,10 +715,7 @@ gimp_container_view_select_item (GimpContainerView *view,
private = GIMP_CONTAINER_VIEW_GET_PRIVATE (view);
- if (private->item_hash)
- insert_data = g_hash_table_lookup (private->item_hash, viewable);
- else
- insert_data = NULL;
+ insert_data = g_hash_table_lookup (private->item_hash, viewable);
g_signal_emit (view, view_signals[SELECT_ITEM], 0,
viewable, insert_data, &success);
@@ -733,10 +735,7 @@ gimp_container_view_activate_item (GimpContainerView *view,
private = GIMP_CONTAINER_VIEW_GET_PRIVATE (view);
- if (private->item_hash)
- insert_data = g_hash_table_lookup (private->item_hash, viewable);
- else
- insert_data = NULL;
+ insert_data = g_hash_table_lookup (private->item_hash, viewable);
g_signal_emit (view, view_signals[ACTIVATE_ITEM], 0,
viewable, insert_data);
@@ -754,10 +753,7 @@ gimp_container_view_context_item (GimpContainerView *view,
private = GIMP_CONTAINER_VIEW_GET_PRIVATE (view);
- if (private->item_hash)
- insert_data = g_hash_table_lookup (private->item_hash, viewable);
- else
- insert_data = NULL;
+ insert_data = g_hash_table_lookup (private->item_hash, viewable);
g_signal_emit (view, view_signals[CONTEXT_ITEM], 0,
viewable, insert_data);
@@ -778,10 +774,7 @@ gimp_container_view_lookup (GimpContainerView *view,
private = GIMP_CONTAINER_VIEW_GET_PRIVATE (view);
- if (private->item_hash)
- return g_hash_table_lookup (private->item_hash, viewable);
-
- return NULL;
+ return g_hash_table_lookup (private->item_hash, viewable);
}
gboolean
@@ -953,11 +946,7 @@ gimp_container_view_real_clear_items (GimpContainerView *view)
{
GimpContainerViewPrivate *private = GIMP_CONTAINER_VIEW_GET_PRIVATE (view);
- if (private->item_hash)
- {
- g_hash_table_destroy (private->item_hash);
- private->item_hash = NULL;
- }
+ g_hash_table_remove_all (private->item_hash);
}
static void
@@ -973,12 +962,6 @@ gimp_container_view_add_foreach (GimpViewable *viewable,
insert_data = view_iface->insert_item (view, viewable, -1);
- if (! private->item_hash)
- private->item_hash = g_hash_table_new_full (g_direct_hash,
- g_direct_equal,
- NULL,
- view_iface->insert_data_free);
-
g_hash_table_insert (private->item_hash, viewable, insert_data);
}
@@ -1003,12 +986,6 @@ gimp_container_view_add (GimpContainerView *view,
insert_data = view_iface->insert_item (view, viewable, index);
- if (! private->item_hash)
- private->item_hash = g_hash_table_new_full (g_direct_hash,
- g_direct_equal,
- NULL,
- view_iface->insert_data_free);
-
g_hash_table_insert (private->item_hash, viewable, insert_data);
}
@@ -1023,9 +1000,6 @@ gimp_container_view_remove (GimpContainerView *view,
if (gimp_container_frozen (container))
return;
- if (! private->item_hash)
- return;
-
insert_data = g_hash_table_lookup (private->item_hash, viewable);
if (insert_data)
@@ -1050,9 +1024,6 @@ gimp_container_view_reorder (GimpContainerView *view,
if (gimp_container_frozen (container))
return;
- if (! private->item_hash)
- return;
-
insert_data = g_hash_table_lookup (private->item_hash, viewable);
if (insert_data)
@@ -1106,9 +1077,6 @@ gimp_container_view_name_changed (GimpViewable *viewable,
GimpContainerViewPrivate *private = GIMP_CONTAINER_VIEW_GET_PRIVATE (view);
gpointer insert_data;
- if (! private->item_hash)
- return;
-
insert_data = g_hash_table_lookup (private->item_hash, viewable);
if (insert_data)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]