Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Weikert <elubie@gmx.net>2010-05-14 14:50:43 +0400
committerAndrea Weikert <elubie@gmx.net>2010-05-14 14:50:43 +0400
commit5b4f264bad786684841e9c23256181cc39c1ccca (patch)
tree75e45eff38cfbc396167ea5308b1a45f41b82aa9 /source/blender/editors/space_file
parent8b4b68becb710e687d8093685d1463a39ca350fe (diff)
== filebrowser ==
* small update for thumbnails, now the thumbnail thread only runs when the filebrowser is in thumbnail view. (Thread was still running previously, even if it did nothing) * this allows workaround for slower network drives, so the user can prevent thumbnail generation when not displaying them.
Diffstat (limited to 'source/blender/editors/space_file')
-rw-r--r--source/blender/editors/space_file/filelist.c39
-rw-r--r--source/blender/editors/space_file/filelist.h3
-rw-r--r--source/blender/editors/space_file/space_file.c19
3 files changed, 35 insertions, 26 deletions
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index f545f0e32ff..ebe42219f01 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -105,7 +105,6 @@ typedef struct ThumbnailJob {
short *stop;
short *do_update;
struct FileList* filelist;
- FileSelectParams *params;
ReportList reports;
} ThumbnailJob;
@@ -1279,25 +1278,19 @@ static void thumbnails_startjob(void *tjv, short *stop, short *do_update)
tj->do_update= do_update;
while ( (*stop==0) && (limg) ) {
- /* 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;
+ 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;
}
}
@@ -1330,7 +1323,7 @@ static void thumbnails_free(void *tjv)
}
-void thumbnails_start(struct FileList* filelist, FileSelectParams *params, const struct bContext* C)
+void thumbnails_start(struct FileList* filelist, const struct bContext* C)
{
wmJob *steve;
ThumbnailJob *tj;
@@ -1339,7 +1332,6 @@ void thumbnails_start(struct FileList* filelist, FileSelectParams *params, const
/* 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) ) {
@@ -1368,3 +1360,8 @@ void thumbnails_stop(struct FileList* filelist, const struct bContext* C)
{
WM_jobs_kill(CTX_wm_manager(C), filelist);
}
+
+int thumbnails_running(struct FileList* filelist, const struct bContext* C)
+{
+ return WM_jobs_test(CTX_wm_manager(C), filelist);
+} \ No newline at end of file
diff --git a/source/blender/editors/space_file/filelist.h b/source/blender/editors/space_file/filelist.h
index 6d6854e4433..b2a86b9c764 100644
--- a/source/blender/editors/space_file/filelist.h
+++ b/source/blender/editors/space_file/filelist.h
@@ -85,7 +85,8 @@ 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, FileSelectParams *params, const struct bContext* C);
+void thumbnails_start(struct FileList* filelist, const struct bContext* C);
+int thumbnails_running(struct FileList* filelist, 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 95a1771ebbb..300a72851a4 100644
--- a/source/blender/editors/space_file/space_file.c
+++ b/source/blender/editors/space_file/space_file.c
@@ -201,17 +201,28 @@ 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, params, C);
+ if(params->display == FILE_IMGDISPLAY) {
+ thumbnails_start(sfile->files, 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, params, C);
+ if(params->display == FILE_IMGDISPLAY) {
+ thumbnails_start(sfile->files, C);
+ }
} else {
+ if(params->display == FILE_IMGDISPLAY) {
+ if (!thumbnails_running(sfile->files,C)) {
+ thumbnails_start(sfile->files, C);
+ }
+ } else {
+ /* stop any running thumbnail jobs if we're not
+ displaying them - speedup for NFS */
+ thumbnails_stop(sfile->files, C);
+ }
filelist_filter(sfile->files);
}
-
}
if (params->renamefile[0] != '\0') {