From 02b8d3ca0f1763922140a76d8d41e38b089e37fb Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 14 May 2010 07:21:29 +0000 Subject: Disable thumbnail generation when the thumbnail view is not enabled, was slowing down browsing on NFS. --- source/blender/editors/space_file/filelist.c | 34 ++++++++++++++++---------- source/blender/editors/space_file/filelist.h | 2 +- source/blender/editors/space_file/space_file.c | 4 +-- 3 files changed, 24 insertions(+), 16 deletions(-) (limited to 'source/blender') diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index 66552088085..f545f0e32ff 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -105,6 +105,7 @@ typedef struct ThumbnailJob { short *stop; short *do_update; struct FileList* filelist; + FileSelectParams *params; ReportList reports; } ThumbnailJob; @@ -1278,19 +1279,25 @@ static void thumbnails_startjob(void *tjv, short *stop, short *do_update) tj->do_update= do_update; while ( (*stop==0) && (limg) ) { - if ( limg->flags & IMAGEFILE ) { - limg->img = IMB_thumb_manage(limg->path, THB_NORMAL, THB_SOURCE_IMAGE); - } else if ( limg->flags & MOVIEFILE ) { - limg->img = IMB_thumb_manage(limg->path, THB_NORMAL, THB_SOURCE_MOVIE); - if (!limg->img) { - /* remember that file can't be loaded via IMB_open_anim */ - limg->flags &= ~MOVIEFILE; - limg->flags |= MOVIEFILE_ICON; - } + /* skip if thumbnail view is not enabled, makes network filesystems browse faster */ + if(tj->params->display != FILE_IMGDISPLAY) { + PIL_sleep_ms(100); /* 10th of a sec should be enough */ + } + else { + if ( limg->flags & IMAGEFILE ) { + limg->img = IMB_thumb_manage(limg->path, THB_NORMAL, THB_SOURCE_IMAGE); + } else if ( limg->flags & MOVIEFILE ) { + limg->img = IMB_thumb_manage(limg->path, THB_NORMAL, THB_SOURCE_MOVIE); + if (!limg->img) { + /* remember that file can't be loaded via IMB_open_anim */ + limg->flags &= ~MOVIEFILE; + limg->flags |= MOVIEFILE_ICON; + } + } + *do_update = 1; + PIL_sleep_ms(10); + limg = limg->next; } - *do_update = 1; - PIL_sleep_ms(10); - limg = limg->next; } } @@ -1323,7 +1330,7 @@ static void thumbnails_free(void *tjv) } -void thumbnails_start(struct FileList* filelist, const struct bContext* C) +void thumbnails_start(struct FileList* filelist, FileSelectParams *params, const struct bContext* C) { wmJob *steve; ThumbnailJob *tj; @@ -1332,6 +1339,7 @@ void thumbnails_start(struct FileList* filelist, const struct bContext* C) /* prepare job data */ tj= MEM_callocN(sizeof(ThumbnailJob), "thumbnails\n"); tj->filelist = filelist; + tj->params = params; for (idx = 0; idx < filelist->numfiles;idx++) { if (!filelist->filelist[idx].image) { if ( (filelist->filelist[idx].flags & IMAGEFILE) || (filelist->filelist[idx].flags & MOVIEFILE) ) { diff --git a/source/blender/editors/space_file/filelist.h b/source/blender/editors/space_file/filelist.h index e75a3143817..6d6854e4433 100644 --- a/source/blender/editors/space_file/filelist.h +++ b/source/blender/editors/space_file/filelist.h @@ -85,7 +85,7 @@ void folderlist_pushdir(struct ListBase* folderlist, const char *dir); int folderlist_clear_next(struct SpaceFile* sfile); void thumbnails_stop(struct FileList* filelist, const struct bContext* C); -void thumbnails_start(struct FileList* filelist, const struct bContext* C); +void thumbnails_start(struct FileList* filelist, FileSelectParams *params, const struct bContext* C); #ifdef __cplusplus } diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index d3a2ba08262..95a1771ebbb 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -201,13 +201,13 @@ static void file_refresh(const bContext *C, ScrArea *sa) filelist_sort(sfile->files, params->sort); } BLI_strncpy(params->dir, filelist_dir(sfile->files), FILE_MAX); - thumbnails_start(sfile->files, C); + thumbnails_start(sfile->files, params, C); } else { filelist_filter(sfile->files); if(params->sort!=FILE_SORT_NONE) { thumbnails_stop(sfile->files, C); filelist_sort(sfile->files, params->sort); - thumbnails_start(sfile->files, C); + thumbnails_start(sfile->files, params, C); } else { filelist_filter(sfile->files); } -- cgit v1.2.3