diff --git a/experimental/ecdb/trunk/TODO b/experimental/ecdb/trunk/TODO index d8f38540..4fc5dffb 100644 --- a/experimental/ecdb/trunk/TODO +++ b/experimental/ecdb/trunk/TODO @@ -6,5 +6,5 @@ -> more configuration options (speed and drive choice done) -> fix combo theme -> move callbacks to buttons instead of swallow (done except for welcome page) --> send combo popup children the focus out signal -> figure out what to do about dnd, should it be consolidated into one system, how to handle internel, etc. +-> don't load the sources all at one time (lots of memory consumed -- for my entire development tree containing 154256 files, ecdb uses 46mb) diff --git a/experimental/ecdb/trunk/src/ecdb_filelist_custom.c b/experimental/ecdb/trunk/src/ecdb_filelist_custom.c index 5904dab7..d1241250 100644 --- a/experimental/ecdb/trunk/src/ecdb_filelist_custom.c +++ b/experimental/ecdb/trunk/src/ecdb_filelist_custom.c @@ -198,7 +198,7 @@ ecdb_custom_filelist_model_filter(Ewl_Filelist_Directory *dir) ecore_list_first_goto(dir->rfiles); while ((file = ecore_list_next(dir->rfiles))) { - if (ecore_file_file_get(file->name)[0] != '.') + if ((file->name) && (ecore_file_file_get(file->name)[0] != '.')) { ecore_list_append(dir->files, file); nf++; @@ -208,7 +208,7 @@ ecdb_custom_filelist_model_filter(Ewl_Filelist_Directory *dir) ecore_list_first_goto(dir->rdirs); while ((file = ecore_list_next(dir->rdirs))) { - if (ecore_file_file_get(file->name)[0] != '.') + if ((file->name) && (ecore_file_file_get(file->name)[0] != '.')) { ecore_list_append(dir->dirs, file); nd++; diff --git a/experimental/ecdb/trunk/src/ecdb_image.c b/experimental/ecdb/trunk/src/ecdb_image.c index d53c12ea..03173a30 100644 --- a/experimental/ecdb/trunk/src/ecdb_image.c +++ b/experimental/ecdb/trunk/src/ecdb_image.c @@ -123,6 +123,7 @@ void ecdb_source_child_remove(Ecdb_Source *src, Ecdb_Source *child) { Ecdb_Source **temp; + Ecdb_Source *s; int i, cidx, f; if (src == child) @@ -149,7 +150,18 @@ ecdb_source_child_remove(Ecdb_Source *src, Ecdb_Source *child) FREE(src->children); src->children = temp; src->num_children--; - src->size -= child->size; + + // Propogate the size changes back up to the root + s = src; + do { + s->size -= child->size; + + if (s->parent) + s = s->parent; + else + break; + } while (1); + child->parent = NULL; }