summaryrefslogtreecommitdiff
path: root/src/trg-files-model.c
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2011-12-21 22:58:56 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2011-12-21 22:58:56 +0000
commit9280f0796483582fc421b2401fbe9c4be4425b4d (patch)
tree2f8a6b90ef5a6ce7297bbdc578370df39e0e4430 /src/trg-files-model.c
parent35cd658f623df8dd8eeca51045ce039c668856f9 (diff)
move the check for a file completed delta of > 0 to the caller of the foreachfunc, instead of checking inside. could save quite a few cpu cycles.
Diffstat (limited to 'src/trg-files-model.c')
-rw-r--r--src/trg-files-model.c43
1 files changed, 23 insertions, 20 deletions
diff --git a/src/trg-files-model.c b/src/trg-files-model.c
index a7a9af5..b58f62f 100644
--- a/src/trg-files-model.c
+++ b/src/trg-files-model.c
@@ -89,26 +89,24 @@ static gboolean trg_files_update_all_parents(GtkTreeModel *model,
GtkTreePath *path, GtkTreeIter *iter, gpointer data) {
struct updateAllArgs *args = (struct updateAllArgs*) data;
- if (args->increment > 0) {
- GtkTreePath *descendentPath = gtk_tree_model_get_path(model,
- args->descendentIter);
-
- if (gtk_tree_path_is_ancestor(path, descendentPath)) {
- gint64 lastCompleted, newCompleted, length;
+ GtkTreePath *descendentPath = gtk_tree_model_get_path(model,
+ args->descendentIter);
- gtk_tree_model_get(model, iter, FILESCOL_BYTESCOMPLETED, &lastCompleted,
- FILESCOL_SIZE, &length, -1);
- newCompleted = lastCompleted + args->increment;
+ if (gtk_tree_path_is_ancestor(path, descendentPath)) {
+ gint64 lastCompleted, newCompleted, length;
- gtk_tree_store_set(GTK_TREE_STORE(model), iter, FILESCOL_BYTESCOMPLETED,
- newCompleted, FILESCOL_PROGRESS,
- file_get_progress(length, newCompleted), -1);
+ gtk_tree_model_get(model, iter, FILESCOL_BYTESCOMPLETED, &lastCompleted,
+ FILESCOL_SIZE, &length, -1);
+ newCompleted = lastCompleted + args->increment;
- }
+ gtk_tree_store_set(GTK_TREE_STORE(model), iter, FILESCOL_BYTESCOMPLETED,
+ newCompleted, FILESCOL_PROGRESS,
+ file_get_progress(length, newCompleted), -1);
- gtk_tree_path_free(descendentPath);
}
+ gtk_tree_path_free(descendentPath);
+
return FALSE;
}
@@ -171,16 +169,19 @@ static void trg_files_model_iter_new(TrgFilesModel * model, GtkTreeIter * iter,
gtk_tree_store_append(GTK_TREE_STORE(model), iter,
parentRowRef ? &parentIter : NULL);
- gtk_tree_store_set(GTK_TREE_STORE(model), iter, FILESCOL_NAME, elements[i], -1);
+ gtk_tree_store_set(GTK_TREE_STORE(model), iter, FILESCOL_NAME,
+ elements[i], -1);
g_value_init(&gvalue, G_TYPE_INT);
g_value_set_int(&gvalue, -1);
- gtk_tree_store_set_value(GTK_TREE_STORE(model), iter, FILESCOL_ID, &gvalue);
+ gtk_tree_store_set_value(GTK_TREE_STORE(model), iter, FILESCOL_ID,
+ &gvalue);
memset(&gvalue, 0, sizeof(GValue));
g_value_init(&gvalue, G_TYPE_INT64);
g_value_set_int64(&gvalue, TR_PRI_UNSET);
- gtk_tree_store_set_value(GTK_TREE_STORE(model), iter, FILESCOL_PRIORITY, &gvalue);
+ gtk_tree_store_set_value(GTK_TREE_STORE(model), iter,
+ FILESCOL_PRIORITY, &gvalue);
iter_to_row_reference(GTK_TREE_MODEL(model), iter, &parentRowRef);
}
@@ -213,7 +214,6 @@ static void trg_files_model_iter_update(TrgFilesModel * model,
gdouble progress = file_get_progress(fileLength, fileCompleted);
struct updateAllArgs args;
- args.descendentIter = filesIter;
if (isFirst) {
args.increment = fileCompleted;
@@ -227,8 +227,11 @@ static void trg_files_model_iter_update(TrgFilesModel * model,
gtk_tree_store_set(GTK_TREE_STORE(model), filesIter, FILESCOL_PROGRESS,
progress, FILESCOL_BYTESCOMPLETED, fileCompleted, -1);
- gtk_tree_model_foreach(GTK_TREE_MODEL(model), trg_files_update_all_parents,
- &args);
+ if (args.increment > 0) {
+ args.descendentIter = filesIter;
+ gtk_tree_model_foreach(GTK_TREE_MODEL(model),
+ trg_files_update_all_parents, &args);
+ }
if (priv->accept) {
gtk_tree_store_set(GTK_TREE_STORE(model), filesIter, FILESCOL_WANTED,