[Bf-blender-cvs] [7dc8db7cd13] master: Fix failing assert when generating material preview

Julian Eisel noreply at git.blender.org
Tue Dec 15 17:04:36 CET 2020


Commit: 7dc8db7cd135e7b26fccc1cc6728cac8b510de70
Author: Julian Eisel
Date:   Tue Dec 15 12:56:02 2020 +0100
Branches: master
https://developer.blender.org/rB7dc8db7cd135e7b26fccc1cc6728cac8b510de70

Fix failing assert when generating material preview

The `!BKE_previewimg_is_finished()` in `icon_preview_startjob_all_sizes()`
would fail.

Caused by 990bd9acf243ae. We have to be more picky about tagging previews as
unfinished after file read. But we also have to consider files stored in old
versions and set the unfinished tag as needed.

===================================================================

M	source/blender/blenkernel/intern/icons.cc

===================================================================

diff --git a/source/blender/blenkernel/intern/icons.cc b/source/blender/blenkernel/intern/icons.cc
index 4bd850094f0..48f5e11778c 100644
--- a/source/blender/blenkernel/intern/icons.cc
+++ b/source/blender/blenkernel/intern/icons.cc
@@ -659,8 +659,16 @@ void BKE_previewimg_blend_read(BlendDataReader *reader, PreviewImage *prv)
     }
     prv->gputexture[i] = NULL;
     /* For now consider previews read from file as finished to not confuse File Browser preview
-     * loading. That could be smarter and check if there's a preview job running instead. */
-    prv->flag[i] &= ~PRV_UNFINISHED;
+     * loading. That could be smarter and check if there's a preview job running instead.
+     * If the preview is tagged as changed, it needs to be updated anyway, so don't remove the tag.
+     */
+    if ((prv->flag[i] & PRV_CHANGED) == 0) {
+      BKE_previewimg_finish(prv, i);
+    }
+    else {
+      /* Only for old files that didn't write the flag . */
+      prv->flag[i] |= PRV_UNFINISHED;
+    }
   }
   prv->icon_id = 0;
   prv->tag = 0;



More information about the Bf-blender-cvs mailing list