[Bf-blender-cvs] [125e74d02e9] workspaces: Alternate workaround for accessing window at startup

Campbell Barton noreply at git.blender.org
Tue Apr 4 06:09:50 CEST 2017


Commit: 125e74d02e9fa3872ee7d5e506c98ee384b143b3
Author: Campbell Barton
Date:   Tue Apr 4 14:09:48 2017 +1000
Branches: workspaces
https://developer.blender.org/rB125e74d02e9fa3872ee7d5e506c98ee384b143b3

Alternate workaround for accessing window at startup

===================================================================

M	source/blender/blenkernel/intern/blendfile.c
M	source/blender/blenkernel/intern/layer.c
M	source/blender/editors/util/ed_util.c

===================================================================

diff --git a/source/blender/blenkernel/intern/blendfile.c b/source/blender/blenkernel/intern/blendfile.c
index c769365dffc..516d26cc5d7 100644
--- a/source/blender/blenkernel/intern/blendfile.c
+++ b/source/blender/blenkernel/intern/blendfile.c
@@ -93,8 +93,9 @@ static void clean_paths(Main *main)
 
 static bool wm_scene_is_visible(wmWindowManager *wm, Scene *scene)
 {
-	for (wmWindow *win = wm->windows.first; win; win = win->next) {
-		if (win->scene == scene) {
+	wmWindow *win;
+	for (win = wm->windows.first; win; win = win->next) {
+		if (win->screen->scene == scene) {
 			return true;
 		}
 	}
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index a49f62ff97a..bc26c166426 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -86,7 +86,9 @@ SceneLayer *BKE_scene_layer_context_active_ex(const Main *bmain, const Scene *UN
 	 * 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) {
-		const WorkSpace *workspace = BKE_workspace_active_get(wm->winactive->workspace_hook);
+		/* Called on startup, so 'winactive' may not be set, in that case fall back to first window. */
+		wmWindow *win = wm->winactive ? wm->winactive : wm->windows.first;
+		const WorkSpace *workspace = BKE_workspace_active_get(win->workspace_hook);
 		return BKE_workspace_render_layer_get(workspace);
 	}
 
diff --git a/source/blender/editors/util/ed_util.c b/source/blender/editors/util/ed_util.c
index 2fb1fd569ce..96864c88d9d 100644
--- a/source/blender/editors/util/ed_util.c
+++ b/source/blender/editors/util/ed_util.c
@@ -88,12 +88,7 @@ void ED_editors_init(bContext *C)
 	wmWindowManager *wm = CTX_wm_manager(C);
 	Main *bmain = CTX_data_main(C);
 	Scene *sce = CTX_data_scene(C);
-
-	/* workaround! we need winactive set here, not sure of better way */
-	wm->winactive = wm->windows.first;
 	SceneLayer *sl = CTX_data_scene_layer(C);
-	wm->winactive = NULL;
-
 	Object *ob, *obact = (sl && sl->basact) ? sl->basact->object : NULL;
 	ID *data;




More information about the Bf-blender-cvs mailing list