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:
Diffstat (limited to 'source/blender/editors/space_file/filelist.c')
-rw-r--r--source/blender/editors/space_file/filelist.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index a4fe7952c36..0d1aff09e9c 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -250,6 +250,7 @@ typedef struct FileListEntryCache {
GHash *uuids;
/* Previews handling. */
+ TaskScheduler *previews_scheduler;
TaskPool *previews_pool;
ThreadQueue *previews_todo;
ThreadQueue *previews_done;
@@ -1100,10 +1101,11 @@ static void filelist_cache_previewf(TaskPool *pool, void *taskdata, int UNUSED(t
static void filelist_cache_preview_ensure_running(FileListEntryCache *cache)
{
if (!cache->previews_pool) {
- TaskScheduler *scheduler = BLI_task_scheduler_get();
+ TaskScheduler *scheduler;
TaskPool *pool;
- int num_tasks = max_ii(2, BLI_system_thread_count() / 2);
+ int num_tasks = max_ii(1, (BLI_system_thread_count() / 2) + 1);
+ scheduler = cache->previews_scheduler = BLI_task_scheduler_create(num_tasks + 1);
pool = cache->previews_pool = BLI_task_pool_create(scheduler, NULL);
cache->previews_todo = BLI_thread_queue_init();
cache->previews_done = BLI_thread_queue_init();
@@ -1150,6 +1152,8 @@ static void filelist_cache_previews_free(FileListEntryCache *cache, const bool s
BLI_thread_queue_free(cache->previews_done);
BLI_thread_queue_free(cache->previews_todo);
BLI_task_pool_free(cache->previews_pool);
+ BLI_task_scheduler_free(cache->previews_scheduler);
+ cache->previews_scheduler = NULL;
cache->previews_pool = NULL;
cache->previews_todo = NULL;
cache->previews_done = NULL;