[gnome-disk-utility] Don't add presentables to tree store unless they are part of the pool
- From: David Zeuthen <davidz src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-disk-utility] Don't add presentables to tree store unless they are part of the pool
- Date: Mon, 18 Jan 2010 19:38:24 +0000 (UTC)
commit d79da5ca500a6fc1b48fcfef832aea9053cf1005
Author: David Zeuthen <davidz redhat com>
Date: Mon Jan 18 14:36:37 2010 -0500
Don't add presentables to tree store unless they are part of the pool
Some presentable may emit change events a short while after being
removed from the pool. Ideally we wouldn't do that but that's a bigger
change.
src/gdu-gtk/gdu-pool-tree-model.c | 24 ++++++++++++++++--------
src/gdu/gdu-pool.c | 12 ++++++++++++
src/gdu/gdu-pool.h | 2 ++
3 files changed, 30 insertions(+), 8 deletions(-)
---
diff --git a/src/gdu-gtk/gdu-pool-tree-model.c b/src/gdu-gtk/gdu-pool-tree-model.c
index b2b6097..ae76e84 100644
--- a/src/gdu-gtk/gdu-pool-tree-model.c
+++ b/src/gdu-gtk/gdu-pool-tree-model.c
@@ -543,7 +543,7 @@ add_presentable (GduPoolTreeModel *model,
}
- /*g_debug ("adding %s (%p)", gdu_presentable_get_id (presentable), presentable);*/
+ /* g_debug ("adding %s (%p)", gdu_presentable_get_id (presentable), presentable); */
gtk_tree_store_append (GTK_TREE_STORE (model),
&iter,
@@ -568,6 +568,8 @@ on_presentable_added (GduPool *pool,
{
GduPoolTreeModel *model = GDU_POOL_TREE_MODEL (user_data);
+ /* g_debug ("on_added `%s' (%p)", gdu_presentable_get_id (presentable), presentable); */
+
add_presentable (model, presentable, NULL);
}
@@ -579,7 +581,10 @@ on_presentable_removed (GduPool *pool,
GduPoolTreeModel *model = GDU_POOL_TREE_MODEL (user_data);
GtkTreeIter iter;
+ /* g_debug ("on_removed `%s' (%p)", gdu_presentable_get_id (presentable), presentable); */
+
if (gdu_pool_tree_model_get_iter_for_presentable (model, presentable, &iter)) {
+ /* g_debug ("removed row for `%s' (%p)", gdu_presentable_get_id (presentable), presentable); */
gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
}
}
@@ -592,14 +597,17 @@ on_presentable_changed (GduPool *pool,
GduPoolTreeModel *model = GDU_POOL_TREE_MODEL (user_data);
GtkTreeIter iter;
- /* will do NOP if presentable has already been added */
- add_presentable (model, presentable, NULL);
+ if (gdu_pool_has_presentable (pool, presentable)) {
+ /* g_debug ("on_changed `%s' (%p)", gdu_presentable_get_id (presentable), presentable); */
- /* update name and icon */
- if (gdu_pool_tree_model_get_iter_for_presentable (model, presentable, &iter)) {
+ /* will do NOP if presentable has already been added */
+ add_presentable (model, presentable, NULL);
- set_data_for_presentable (model,
- &iter,
- presentable);
+ /* update name and icon */
+ if (gdu_pool_tree_model_get_iter_for_presentable (model, presentable, &iter)) {
+ set_data_for_presentable (model,
+ &iter,
+ presentable);
+ }
}
}
diff --git a/src/gdu/gdu-pool.c b/src/gdu/gdu-pool.c
index d6c5900..60cd862 100644
--- a/src/gdu/gdu-pool.c
+++ b/src/gdu/gdu-pool.c
@@ -2605,6 +2605,18 @@ gdu_pool_get_presentable_by_id (GduPool *pool, const gchar *id)
return ret;
}
+gboolean
+gdu_pool_has_presentable (GduPool *pool, GduPresentable *presentable)
+{
+ gboolean ret;
+
+ ret = (g_list_find (pool->priv->presentables, presentable) != NULL);
+
+ return ret;
+}
+
+
+
GduPresentable *
gdu_pool_get_hub_by_object_path (GduPool *pool, const gchar *object_path)
{
diff --git a/src/gdu/gdu-pool.h b/src/gdu/gdu-pool.h
index b860a10..d98f027 100644
--- a/src/gdu/gdu-pool.h
+++ b/src/gdu/gdu-pool.h
@@ -102,6 +102,8 @@ GduLinuxMdDrive *gdu_pool_get_linux_md_drive_by_uuid (GduPool *pool, const gchar
GduPresentable *gdu_pool_get_presentable_by_id (GduPool *pool, const gchar *id);
+gboolean gdu_pool_has_presentable (GduPool *pool, GduPresentable *presentable);
+
GList *gdu_pool_get_devices (GduPool *pool);
GList *gdu_pool_get_presentables (GduPool *pool);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]