[Bf-blender-cvs] [571f373155c] master: UI: Don't render missing linked material previews, avoids UI freezing

Julian Eisel noreply at git.blender.org
Wed Nov 23 11:41:03 CET 2022


Commit: 571f373155cb34d6b27f454e6a6fe28d80134593
Author: Julian Eisel
Date:   Wed Nov 23 11:37:02 2022 +0100
Branches: master
https://developer.blender.org/rB571f373155cb34d6b27f454e6a6fe28d80134593

UI: Don't render missing linked material previews, avoids UI freezing

Opening the material selector after reloading files could cause long UI
freezes, because some linked in materials don't have the preview stored
in the source file. So Blender would keep rerendering it after every
file load, which may involve compiling OpenGL shaders, which again
freezes the UI typically. This was reported as quite an issue for the
Heist Production by the Blender Studio.

Don't render these missing material previews from linked data-blocks
anymore.

Differential Revision: https://developer.blender.org/D16538

Reviewed by: Brecht Van Lommel, Jeroen Bakker

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

M	source/blender/editors/render/render_preview.cc

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

diff --git a/source/blender/editors/render/render_preview.cc b/source/blender/editors/render/render_preview.cc
index 09394ea33be..ecc29c56836 100644
--- a/source/blender/editors/render/render_preview.cc
+++ b/source/blender/editors/render/render_preview.cc
@@ -1605,6 +1605,14 @@ static void icon_preview_startjob_all_sizes(void *customdata,
       continue;
     }
 
+    /* Workaround: Skip preview renders for linked IDs. Preview rendering can be slow and even
+     * freeze the UI (e.g. on Eevee shader compilation). And since the result will never be stored
+     * in a file, it's done every time the file is reloaded, so this becomes a frequent annoyance.
+     */
+    if (!use_solid_render_mode && ip->id && ID_IS_LINKED(ip->id)) {
+      continue;
+    }
+
 #ifndef NDEBUG
     {
       int size_index = icon_previewimg_size_index_get(cur_size, prv);



More information about the Bf-blender-cvs mailing list