[Bf-blender-cvs] [d9c690b] asset-experiments: Misc cleanup, fix previews memleak.
Bastien Montagne
noreply at git.blender.org
Tue Apr 7 15:39:31 CEST 2015
Commit: d9c690b55982d0b935b95b5b08676b5d3a43dd90
Author: Bastien Montagne
Date: Tue Apr 7 15:38:06 2015 +0200
Branches: asset-experiments
https://developer.blender.org/rBd9c690b55982d0b935b95b5b08676b5d3a43dd90
Misc cleanup, fix previews memleak.
===================================================================
M source/blender/editors/space_file/filelist.c
===================================================================
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index 8169a57..2f7f47f 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -1129,7 +1129,7 @@ static void filelist_cache_previewf(TaskPool *pool, void *taskdata, int threadid
if (preview->flags & FILE_TYPE_IMAGE) {
preview->img = IMB_thumb_manage(preview->path, THB_NORMAL, THB_SOURCE_IMAGE);
}
- else if (preview->flags & (FILE_TYPE_BLENDER | FILE_TYPE_BLENDER_BACKUP)) {
+ else if (preview->flags & (FILE_TYPE_BLENDER | FILE_TYPE_BLENDER_BACKUP | FILE_TYPE_BLENDERLIB)) {
preview->img = IMB_thumb_manage(preview->path, THB_NORMAL, THB_SOURCE_BLEND);
}
else if (preview->flags & FILE_TYPE_MOVIE) {
@@ -1140,9 +1140,6 @@ static void filelist_cache_previewf(TaskPool *pool, void *taskdata, int threadid
preview->flags |= FILE_TYPE_MOVIE_ICON;
}
}
- else if (preview->flags & FILE_TYPE_BLENDERLIB) {
- preview->img = IMB_thumb_manage(preview->path, THB_NORMAL, THB_SOURCE_BLEND);
- }
BLI_thread_queue_push(cache->previews_done, preview);
}
@@ -1590,7 +1587,7 @@ bool filelist_file_cache_block(struct FileList *filelist, const int index)
cache->block_cursor = 0;
}
else {
- printf("Partial Recaching!\n");
+// printf("Partial Recaching!\n");
/* At this point, we know we keep part of currently cached entries, so update previews if needed,
* and remove everything from working queue - we'll add all newly needed entries at the end. */
@@ -1668,7 +1665,7 @@ bool filelist_file_cache_block(struct FileList *filelist, const int index)
cache->block_cursor = idx1;
cache->block_start_index = start_index;
}
- printf("\tstart-extended...\n");
+// printf("\tstart-extended...\n");
if (end_index > cache->block_end_index) {
/* Add (request) needed entries after already cached ones. */
/* Note: We need some index black magic to wrap around (cycle) inside our FILELIST_ENTRYCACHESIZE array... */
@@ -1786,7 +1783,9 @@ bool filelist_cache_previews_update(FileList *filelist)
if (preview->img) {
/* entry might have been removed from cache in the mean while, we do not want to cache it again here. */
FileDirEntry *entry = filelist_file_ex(filelist, preview->index, false);
- if (entry) {
+ /* Due to asynchronous process, a preview for a given image may be generated several times, i.e.
+ * entry->image may already be set at this point. */
+ if (entry && !entry->image) {
entry->image = preview->img;
/* update flag for movie files where thumbnail can't be created */
if (preview->flags & FILE_TYPE_MOVIE_ICON) {
More information about the Bf-blender-cvs
mailing list