diff options
author | Julian Eisel <julian@blender.org> | 2021-11-22 22:00:47 +0300 |
---|---|---|
committer | Julian Eisel <julian@blender.org> | 2021-11-22 23:12:36 +0300 |
commit | 34615cd269a6cd26cacbab3f10a7298fd577721d (patch) | |
tree | a5f3e7965b7557ce7229819155d9eac03a72f553 /source/blender/editors/render/render_preview.c | |
parent | e2b736aa406e3e87a839d2f96ac9a1718ec253e3 (diff) |
Fix grayed out preview generation button for light objects
Mistake in e7bea3fb6ed0.
We should only skip preview generation for objects that don't support
preview rendering, not completely forbid accessing preview data of such
IDs.
Diffstat (limited to 'source/blender/editors/render/render_preview.c')
-rw-r--r-- | source/blender/editors/render/render_preview.c | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 4bf250b9d4f..0cc944436b2 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -786,6 +786,11 @@ struct ObjectPreviewData { int sizey; }; +static bool object_preview_is_type_supported(const Object *ob) +{ + return OB_TYPE_IS_GEOMETRY(ob->type); +} + static Object *object_preview_camera_create(Main *preview_main, ViewLayer *view_layer, Object *preview_object) @@ -1658,9 +1663,12 @@ static void icon_preview_startjob_all_sizes(void *customdata, if (ip->id != NULL) { switch (GS(ip->id->name)) { case ID_OB: - /* Much simpler than the ShaderPreview mess used for other ID types. */ - object_preview_render(ip, cur_size); - continue; + if (object_preview_is_type_supported((Object *)ip->id)) { + /* Much simpler than the ShaderPreview mess used for other ID types. */ + object_preview_render(ip, cur_size); + continue; + } + break; case ID_AC: action_preview_render(ip, cur_size); continue; @@ -1749,6 +1757,17 @@ static void icon_preview_free(void *customdata) MEM_freeN(ip); } +/** + * Check if \a id is supported by the automatic preview render. + */ +bool ED_preview_id_is_supported(const ID *id) +{ + if (GS(id->name) == ID_OB) { + return object_preview_is_type_supported((const Object *)id); + } + return BKE_previewimg_id_get_p(id) != NULL; +} + void ED_preview_icon_render( const bContext *C, Scene *scene, ID *id, uint *rect, int sizex, int sizey) { |