diff options
| author | John Smith <john.smith7545@yahoo.com> | 2012-06-13 02:25:03 +0000 |
|---|---|---|
| committer | John Smith <removethis.john.q.public@bigmail.com> | 2012-06-13 02:25:03 +0000 |
| commit | 9237d307a14e6a623db9451a8b132a8fcd14e2ef (patch) | |
| tree | 47b6da1c4852196fbc24f542c616ce5a0f7e0118 | |
| parent | fix memleak (diff) | |
| download | inkscape-9237d307a14e6a623db9451a8b132a8fcd14e2ef.tar.gz inkscape-9237d307a14e6a623db9451a8b132a8fcd14e2ef.zip | |
Fix for 1011726 : Performance regression with XML Editor - Improve model unload time
(bzr r11495)
| -rw-r--r-- | src/widgets/sp-xmlview-tree.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/widgets/sp-xmlview-tree.cpp b/src/widgets/sp-xmlview-tree.cpp index 0618296f5..11e6717c1 100644 --- a/src/widgets/sp-xmlview-tree.cpp +++ b/src/widgets/sp-xmlview-tree.cpp @@ -666,7 +666,17 @@ sp_xmlview_tree_set_repr (SPXMLViewTree * tree, Inkscape::XML::Node * repr) { if ( tree->repr == repr ) return; if (tree->repr) { - gtk_tree_store_clear(tree->store); + /* + * Would like to simple call gtk_tree_store_clear here, + * but it is extremely slow on large data sets. + * Instead just unref the old and create a new store. + */ + //gtk_tree_store_clear(tree->store); + gtk_tree_view_set_model(GTK_TREE_VIEW(tree), NULL); + g_object_unref(tree->store); + tree->store = gtk_tree_store_new (STORE_N_COLS, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_POINTER); + gtk_tree_view_set_model (GTK_TREE_VIEW(tree), GTK_TREE_MODEL(tree->store)); + Inkscape::GC::release(tree->repr); } tree->repr = repr; |
