[Xfce4-commits] r23246 - xarchiver/branches/xarchiver-psybsd/src
Stephan Arts
stephan at xfce.org
Sat Sep 30 11:19:26 UTC 2006
Author: stephan
Date: 2006-09-30 11:19:24 +0000 (Sat, 30 Sep 2006)
New Revision: 23246
Modified:
xarchiver/branches/xarchiver-psybsd/src/main_window.c
xarchiver/branches/xarchiver-psybsd/src/main_window.h
Log:
Improve memory usage (should perhaps implement own treemodel, to decrease overhead of liststore)
Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-09-30 07:40:39 UTC (rev 23245)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-09-30 11:19:24 UTC (rev 23246)
@@ -567,7 +567,7 @@
void
xa_main_window_archive_destroyed(LXAArchive *archive, XAMainWindow *window)
{
- GtkTreeModel *liststore = gtk_tree_view_get_model(GTK_TREE_VIEW(window->treeview));
+ GtkTreeModel *liststore = window->treemodel;
GList *columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(window->treeview));
gtk_list_store_clear(GTK_LIST_STORE(liststore));
@@ -770,16 +770,20 @@
gtk_tree_view_set_search_column(GTK_TREE_VIEW(window->treeview), 0);
}
gtk_tree_view_set_model(GTK_TREE_VIEW(window->treeview), GTK_TREE_MODEL(liststore));
+ window->treemodel = GTK_TREE_MODEL(liststore);
}
void
xa_main_window_set_contents(XAMainWindow *main_window, LXAArchive *archive, GTree *item_tree)
{
gint i = 0;
- GtkTreeModel *liststore = gtk_tree_view_get_model(GTK_TREE_VIEW(main_window->treeview));
+ GtkTreeModel *liststore = main_window->treemodel;
+ g_object_ref(liststore);
GtkTreeIter iter;
GValue *tmp_value;
+ gtk_tree_view_set_model(GTK_TREE_VIEW(main_window->treeview), NULL);
+
gtk_list_store_clear(GTK_LIST_STORE(liststore));
@@ -812,7 +816,7 @@
GValue *tmp_value;
gint column_number;
XAMainWindow *main_window= XA_MAIN_WINDOW(data);
- GtkTreeModel *liststore = gtk_tree_view_get_model(GTK_TREE_VIEW(main_window->treeview));
+ GtkTreeModel *liststore = main_window->treemodel;
gtk_list_store_append(GTK_LIST_STORE(liststore), &iter);
if(main_window->props._show_icons)
{
@@ -823,12 +827,16 @@
else
g_value_set_string(tmp_value, "unknown");
gtk_list_store_set_value(GTK_LIST_STORE(liststore), &iter, i, tmp_value);
+ g_value_unset(tmp_value);
+ g_free(tmp_value);
i++;
}
tmp_value = g_new0(GValue, 1);
tmp_value = g_value_init(tmp_value, G_TYPE_STRING);
g_value_set_string(tmp_value, (gchar *)key);
gtk_list_store_set_value(GTK_LIST_STORE(liststore), &iter, i, tmp_value);
+ g_value_unset(tmp_value);
+ g_free(tmp_value);
props = ((LXAEntry *)value)->props;
if(props)
@@ -858,6 +866,7 @@
gtk_list_store_set_value(GTK_LIST_STORE(liststore), &iter, i+1, tmp_value);
else
gtk_list_store_set_value(GTK_LIST_STORE(liststore), &iter, i, tmp_value);
+ g_value_unset(tmp_value);
g_free(tmp_value);
}
}
@@ -883,7 +892,7 @@
else
gtk_tree_model_get_value(tree_model, &iter, 0, value);
- const gchar *item_filename = g_value_get_string(value);
+ const gchar *item_filename = (gchar *)g_value_get_string(value);
if(!strcmp(item_filename, "..")) /* pop */
{
main_window->working_node = g_slist_delete_link(main_window->working_node, main_window->working_node);
@@ -910,7 +919,7 @@
}
}
- g_value_reset(value);
+ g_value_unset(value);
g_free(value);
}
Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.h 2006-09-30 07:40:39 UTC (rev 23245)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.h 2006-09-30 11:19:24 UTC (rev 23246)
@@ -52,6 +52,7 @@
{
GtkWindow parent;
GtkWidget *treeview;
+ GtkTreeModel *treemodel;
GtkWidget *scrollwindow;
GtkWidget *statusbar;
struct {
More information about the Xfce4-commits
mailing list