[Bf-blender-cvs] [8f1df9f] asset-experiments: Fix wrong update when switching 'flat' state, also fix remaining memleak.
Bastien Montagne
noreply at git.blender.org
Tue Dec 9 17:48:17 CET 2014
Commit: 8f1df9fbbaf423efbedece2f7eadd9ef355bd594
Author: Bastien Montagne
Date: Tue Dec 9 17:21:31 2014 +0100
Branches: asset-experiments
https://developer.blender.org/rB8f1df9fbbaf423efbedece2f7eadd9ef355bd594
Fix wrong update when switching 'flat' state, also fix remaining memleak.
===================================================================
M source/blender/editors/space_file/filelist.c
M source/blender/editors/space_file/space_file.c
===================================================================
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index a6f7876..6143c29 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -716,11 +716,9 @@ void filelist_setdir(struct FileList *filelist, const char *dir)
void filelist_setrecursive(struct FileList *filelist, const bool use_recursion)
{
- const bool do_free = (filelist->use_recursion != use_recursion);
+ if (filelist->use_recursion != use_recursion) {
+ filelist->use_recursion = use_recursion;
- filelist->use_recursion = use_recursion;
-
- if (do_free) {
filelist_freelib(filelist);
filelist_free(filelist);
}
@@ -1174,16 +1172,15 @@ static void filelist_read_dir(struct FileList *filelist)
filelist->numfiles = BLI_dir_contents(filelist->dir, &(filelist->filelist));
if (filelist->use_recursion && filelist->recursion_level < FILELIST_MAX_RECURSION) {
+ FileList *fl = filelist_new(FILE_UNIX);
file = filelist->filelist;
for (i = 0; i < filelist->numfiles; i++, file++) {
- FileList *fl;
char dir[FILE_MAX];
if (FILENAME_IS_BREADCRUMBS(file->relname) || (file->type & S_IFDIR) == 0) {
continue;
}
- fl = filelist_new(FILE_UNIX);
fl->use_recursion = true;
fl->recursion_level = filelist->recursion_level + 1;
@@ -1196,6 +1193,7 @@ static void filelist_read_dir(struct FileList *filelist)
filelist_free(fl);
}
+ MEM_freeN(fl);
}
if (new_filelist) {
@@ -1240,6 +1238,7 @@ static void filelist_read_library(struct FileList *filelist)
filelist_from_library(filelist, true, false);
if (!filelist->libfiledata) {
+ FileList *fl = filelist_new(FILE_LOADLIB);
BLI_make_exist(filelist->dir);
filelist_read_dir(filelist);
file = filelist->filelist;
@@ -1255,11 +1254,9 @@ static void filelist_read_library(struct FileList *filelist)
file->type |= S_IFDIR;
if (filelist->use_recursion) {
- FileList *fl;
char dir[FILE_MAX];
/* Note we do not consider recursion level here, it has no importance in .blend files anyway. */
- fl = filelist_new(FILE_LOADLIB);
fl->use_recursion = true;
BLI_join_dirfile(dir, sizeof(dir), filelist->dir, file->relname);
@@ -1275,8 +1272,10 @@ static void filelist_read_library(struct FileList *filelist)
}
}
}
+ MEM_freeN(fl);
}
else if (filelist->use_recursion) {
+ FileList *fl = filelist_new(FILE_LOADLIB);
char dir[FILE_MAX], *group;
const bool is_lib = filelist_islibrary(filelist, dir, &group);
@@ -1290,7 +1289,6 @@ static void filelist_read_library(struct FileList *filelist)
file = filelist->filelist;
for (i = 0; i < filelist->numfiles; i++, file++) {
- FileList *fl;
char dir[FILE_MAX];
if (FILENAME_IS_BREADCRUMBS(file->relname)) {
@@ -1299,7 +1297,6 @@ static void filelist_read_library(struct FileList *filelist)
/* Note we do not consider recursion level here, it has no importance in .blend files anyway. */
/* And no need to set recursion flag here either. */
- fl = filelist_new(FILE_LOADLIB);
BLI_join_dirfile(dir, sizeof(dir), filelist->dir, file->relname);
filelist_setdir(fl, dir);
@@ -1311,6 +1308,7 @@ static void filelist_read_library(struct FileList *filelist)
filelist_freelib(fl);
filelist_free(fl);
}
+ MEM_freeN(fl);
}
if (new_filelist) {
diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c
index d315b95..4fa5b83 100644
--- a/source/blender/editors/space_file/space_file.c
+++ b/source/blender/editors/space_file/space_file.c
@@ -200,12 +200,12 @@ static void file_refresh(const bContext *C, ScrArea *UNUSED(sa))
filelist_setdir(sfile->files, params->dir);
params->active_file = -1; // added this so it opens nicer (ton)
}
+ filelist_setrecursive(sfile->files, (params->flag & FILE_SHOWFLAT) != 0);
filelist_setfilter_options(sfile->files, params->flag & FILE_HIDE_DOT,
params->flag & FILE_FILTER ? params->filter : 0,
params->filter_id,
params->filter_glob,
params->filter_search);
- filelist_setrecursive(sfile->files, (params->flag & FILE_SHOWFLAT) != 0);
if (filelist_empty(sfile->files)) {
thumbnails_stop(wm, sfile->files);
More information about the Bf-blender-cvs
mailing list