diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2017-02-18 00:24:08 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2017-02-18 00:26:40 +0300 |
commit | b30044d4af84f0ddc606eeb4d2860e2cffcf7834 (patch) | |
tree | 65252ff0733e24828ea8a9067f7f4bfc64690a28 /source/blender | |
parent | 39e212eb05bd2d0a9aeae7820c66834fbb2a393c (diff) |
Fix crash introduced in engine separation (50fb3ea3)
Basically DEG_OBJECT_ITER (or rather,
BKE_scene_layer_engine_settings_update) wasn't creating
Object->collection_settings data for invisible objects.
Now I'm removing those objects from the loop entirely. If we are to
bring them back we need to either create CollectionEngineSettings dat
from them or to skip them in DRW_mode_cache_populate.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/BKE_layer.h | 4 | ||||
-rw-r--r-- | source/blender/draw/engines/clay/clay.c | 3 |
2 files changed, 4 insertions, 3 deletions
diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h index c2752ec1d70..9e8865d7540 100644 --- a/source/blender/blenkernel/BKE_layer.h +++ b/source/blender/blenkernel/BKE_layer.h @@ -215,6 +215,10 @@ void BKE_visible_bases_Iterator_end(Iterator *iter); /* flush all the data to objects*/ \ Base *base_; \ for (base_ = (sl_)->object_bases.first; base_; base_ = base_->next) { \ + if ((base->flag & BASE_VISIBLED) == 0) { \ + continue; \ + } \ + \ instance_ = base_->object; \ instance_->base_flag = base_->flag; diff --git a/source/blender/draw/engines/clay/clay.c b/source/blender/draw/engines/clay/clay.c index f121eb8600e..314e0c08f66 100644 --- a/source/blender/draw/engines/clay/clay.c +++ b/source/blender/draw/engines/clay/clay.c @@ -639,9 +639,6 @@ static void CLAY_cache_populate(Object *ob) bool do_cull = false; CollectionEngineSettings *ces_mode_ed, *ces_mode_ob; - if ((ob->base_flag & BASE_VISIBLED) == 0) - return; - switch (mode) { case CTX_MODE_EDIT_MESH: case CTX_MODE_EDIT_CURVE: |