diff options
author | Lukas Tönne <lukas.toenne@gmail.com> | 2014-02-26 17:36:30 +0400 |
---|---|---|
committer | Lukas Tönne <lukas.toenne@gmail.com> | 2014-02-26 17:39:14 +0400 |
commit | ecbae4ab466e9d50b11fd434caf29ea1781fa7d6 (patch) | |
tree | ff84915157ace0ebcfa57d1d9755078ff8455586 /source/blender/render | |
parent | ef2c05c77e365a07f8ced62e37c9430114b990d8 (diff) |
Fix T38846: Render layer checkbox is not refreshed.
The render operator invoke checks render layers, which can force the
render layer to be activated. This requires a notifier, which has to be
done in the operator itself (can't do this inside pipeline code).
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/extern/include/RE_pipeline.h | 2 | ||||
-rw-r--r-- | source/blender/render/intern/source/pipeline.c | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h index 7251ba7a66d..ae0b6f1e2a8 100644 --- a/source/blender/render/extern/include/RE_pipeline.h +++ b/source/blender/render/extern/include/RE_pipeline.h @@ -285,7 +285,7 @@ void RE_DataBase_GetView(struct Render *re, float mat[4][4]); void RE_GetCameraWindow(struct Render *re, struct Object *camera, int frame, float mat[4][4]); struct Scene *RE_GetScene(struct Render *re); -bool RE_is_rendering_allowed(struct Scene *scene, struct Object *camera_override, struct ReportList *reports); +bool RE_is_rendering_allowed(struct Scene *scene, struct Object *camera_override, struct ReportList *reports, bool *r_scene_rlayer_update); bool RE_allow_render_generic_object(struct Object *ob); diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 001386bc0d4..b6f19d6c25c 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2400,10 +2400,12 @@ static int check_composite_output(Scene *scene) return node_tree_has_composite_output(scene->nodetree); } -bool RE_is_rendering_allowed(Scene *scene, Object *camera_override, ReportList *reports) +bool RE_is_rendering_allowed(Scene *scene, Object *camera_override, ReportList *reports, bool *r_scene_rlayer_update) { SceneRenderLayer *srl; int scemode = check_mode_full_sample(&scene->r); + if (r_scene_rlayer_update) + *r_scene_rlayer_update = false; /* becomes true if render layer is forced enabled */ if (scene->r.mode & R_BORDER) { if (scene->r.border.xmax <= scene->r.border.xmin || @@ -2481,6 +2483,8 @@ bool RE_is_rendering_allowed(Scene *scene, Object *camera_override, ReportList * srl = BLI_findlink(&scene->r.layers, scene->r.actlay); /* force layer to be enabled */ srl->layflag &= ~SCE_LAY_DISABLE; + if (r_scene_rlayer_update) + *r_scene_rlayer_update = true; } for (srl = scene->r.layers.first; srl; srl = srl->next) |