diff options
Diffstat (limited to 'source/blender/editors/render')
-rw-r--r-- | source/blender/editors/render/render_internal.cc | 6 | ||||
-rw-r--r-- | source/blender/editors/render/render_preview.cc | 11 |
2 files changed, 11 insertions, 6 deletions
diff --git a/source/blender/editors/render/render_internal.cc b/source/blender/editors/render/render_internal.cc index 7583d329de1..7f6a14126e0 100644 --- a/source/blender/editors/render/render_internal.cc +++ b/source/blender/editors/render/render_internal.cc @@ -32,6 +32,7 @@ #include "BKE_global.h" #include "BKE_image.h" #include "BKE_image_format.h" +#include "BKE_layer.h" #include "BKE_lib_id.h" #include "BKE_main.h" #include "BKE_node.h" @@ -885,9 +886,10 @@ static void clean_viewport_memory(Main *bmain, Scene *scene) wm = static_cast<wmWindowManager *>(wm->id.next)) { LISTBASE_FOREACH (wmWindow *, win, &wm->windows) { ViewLayer *view_layer = WM_window_get_active_view_layer(win); + BKE_view_layer_synced_ensure(scene, view_layer); - for (base = static_cast<Base *>(view_layer->object_bases.first); base; base = base->next) { - clean_viewport_memory_base(base); + LISTBASE_FOREACH (Base *, b, BKE_view_layer_object_bases_get(view_layer)) { + clean_viewport_memory_base(b); } } } diff --git a/source/blender/editors/render/render_preview.cc b/source/blender/editors/render/render_preview.cc index c97d5f3cbc8..10de7063bbc 100644 --- a/source/blender/editors/render/render_preview.cc +++ b/source/blender/editors/render/render_preview.cc @@ -307,7 +307,8 @@ static void switch_preview_floor_visibility(Main *pr_main, const ePreviewRenderMethod pr_method) { /* Hide floor for icon renders. */ - LISTBASE_FOREACH (Base *, base, &view_layer->object_bases) { + BKE_view_layer_synced_ensure(scene, view_layer); + LISTBASE_FOREACH (Base *, base, BKE_view_layer_object_bases_get(view_layer)) { if (STREQ(base->object->id.name + 2, "Floor")) { base->object->visibility_flag &= ~OB_HIDE_RENDER; if (pr_method == PR_ICON_RENDER) { @@ -533,8 +534,8 @@ static Scene *preview_prepare_scene( else { sce->display.render_aa = SCE_DISPLAY_AA_OFF; } - - LISTBASE_FOREACH (Base *, base, &view_layer->object_bases) { + BKE_view_layer_synced_ensure(sce, view_layer); + LISTBASE_FOREACH (Base *, base, BKE_view_layer_object_bases_get(view_layer)) { if (base->object->id.name[2] == 'p') { /* copy over object color, in case material uses it */ copy_v4_v4(base->object->color, sp->color); @@ -586,7 +587,8 @@ static Scene *preview_prepare_scene( sce->world->horb = 0.0f; } - LISTBASE_FOREACH (Base *, base, &view_layer->object_bases) { + BKE_view_layer_synced_ensure(sce, view_layer); + LISTBASE_FOREACH (Base *, base, BKE_view_layer_object_bases_get(view_layer)) { if (base->object->id.name[2] == 'p') { if (base->object->type == OB_LAMP) { base->object->data = la; @@ -825,6 +827,7 @@ static Scene *object_preview_scene_create(const struct ObjectPreviewData *previe scene->r.ysch = preview_data->sizey; scene->r.size = 100; + BKE_view_layer_synced_ensure(scene, view_layer); Base *preview_base = BKE_view_layer_base_find(view_layer, preview_data->object); /* For 'view selected' below. */ preview_base->flag |= BASE_SELECTED; |