[Bf-blender-cvs] [ff67b9010c] workspaces: Fix wrong render layer used for multi-window setups
Julian Eisel
noreply at git.blender.org
Fri Mar 17 15:10:47 CET 2017
Commit: ff67b9010ce39f8b0effa8e19e8965d55e0fa1b2
Author: Julian Eisel
Date: Fri Mar 17 14:59:38 2017 +0100
Branches: workspaces
https://developer.blender.org/rBff67b9010ce39f8b0effa8e19e8965d55e0fa1b2
Fix wrong render layer used for multi-window setups
===================================================================
M source/blender/blenkernel/intern/layer.c
M source/blender/blenkernel/intern/scene.c
===================================================================
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index 50922482f2..9953f5e5a1 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -76,18 +76,16 @@ SceneLayer *BKE_scene_layer_render_active(const Scene *scene)
}
/**
- * Returns the SceneLayer to be used for drawing, outliner, and
- * other context related areas.
+ * Returns the SceneLayer to be used for drawing, outliner, and other context related areas.
*/
-SceneLayer *BKE_scene_layer_context_active_ex(const Main *bmain, const Scene *scene)
+SceneLayer *BKE_scene_layer_context_active_ex(const Main *bmain, const Scene *UNUSED(scene))
{
- /* XXX iterating over windows here is not so nice, we could pass the workspace or the window as argument. */
+ /* XXX We should really pass the workspace as argument, but would require
+ * some bigger changes since it's often not available where we call this.
+ * Just working around this by getting active window from WM for now */
for (wmWindowManager *wm = bmain->wm.first; wm; wm = wm->id.next) {
- for (wmWindow *win = wm->windows.first; win; win = win->next) {
- if (win->scene == scene) {
- return BKE_workspace_render_layer_get(BKE_workspace_active_get(win->workspace_hook));
- }
- }
+ const WorkSpace *workspace = BKE_workspace_active_get(wm->winactive->workspace_hook);
+ return BKE_workspace_render_layer_get(workspace);
}
return NULL;
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index c3d510ba91..274d88648d 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -1719,6 +1719,9 @@ Base *_setlooper_base_step(Scene **sce_iter, Base *base)
/* for the first loop we should get the layer from context */
SceneLayer *sl = BKE_scene_layer_context_active((*sce_iter));
+ /* TODO For first scene (non-background set), we should pass the render layer as argument.
+ * In some cases we want it to be the workspace one, in other the scene one. */
+ TODO_LAYER;
if (sl->object_bases.first) {
return (Base *)sl->object_bases.first;
More information about the Bf-blender-cvs
mailing list