[Bf-blender-cvs] [c4803759a26] blender2.8: Fix T55245: undo with multiple windows and view layers not working correct.

Brecht Van Lommel noreply at git.blender.org
Tue Jul 24 11:38:54 CEST 2018


Commit: c4803759a260853ca516dbdc9028bd0077056114
Author: Brecht Van Lommel
Date:   Tue Jul 24 11:21:32 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBc4803759a260853ca516dbdc9028bd0077056114

Fix T55245: undo with multiple windows and view layers not working correct.

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

M	source/blender/blenloader/intern/writefile.c
M	source/blender/windowmanager/intern/wm_window.c

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

diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 552f5420e8d..503f8b44ec3 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -1147,7 +1147,7 @@ static void write_nodetree_nolib(WriteData *wd, bNodeTree *ntree)
  */
 static void current_screen_compat(
         Main *mainvar, bool use_active_win,
-        bScreen **r_screen, Scene **r_scene, ViewLayer **r_render_layer)
+        bScreen **r_screen, Scene **r_scene, ViewLayer **r_view_layer)
 {
 	wmWindowManager *wm;
 	wmWindow *window = NULL;
@@ -1177,7 +1177,7 @@ static void current_screen_compat(
 
 	*r_screen = (window) ? BKE_workspace_active_screen_get(window->workspace_hook) : NULL;
 	*r_scene = (window) ? window->scene : NULL;
-	*r_render_layer = (window && *r_scene) ? BKE_view_layer_find(*r_scene, window->view_layer_name) : NULL;
+	*r_view_layer = (window && *r_scene) ? BKE_view_layer_find(*r_scene, window->view_layer_name) : NULL;
 }
 
 typedef struct RenderInfo {
@@ -1193,11 +1193,11 @@ static void write_renderinfo(WriteData *wd, Main *mainvar)
 {
 	bScreen *curscreen;
 	Scene *sce, *curscene = NULL;
-	ViewLayer *render_layer;
+	ViewLayer *view_layer;
 	RenderInfo data;
 
 	/* XXX in future, handle multiple windows with multiple screens? */
-	current_screen_compat(mainvar, false, &curscreen, &curscene, &render_layer);
+	current_screen_compat(mainvar, false, &curscreen, &curscene, &view_layer);
 
 	for (sce = mainvar->scene.first; sce; sce = sce->id.next) {
 		if (sce->id.lib == NULL && (sce == curscene || (sce->r.scemode & R_BG_RENDER))) {
@@ -3686,7 +3686,7 @@ static void write_global(WriteData *wd, int fileflags, Main *mainvar)
 	FileGlobal fg;
 	bScreen *screen;
 	Scene *scene;
-	ViewLayer *render_layer;
+	ViewLayer *view_layer;
 	char subvstr[8];
 
 	/* prevent mem checkers from complaining */
@@ -3695,12 +3695,12 @@ static void write_global(WriteData *wd, int fileflags, Main *mainvar)
 	memset(fg.build_hash, 0, sizeof(fg.build_hash));
 	fg.pad1 = NULL;
 
-	current_screen_compat(mainvar, is_undo, &screen, &scene, &render_layer);
+	current_screen_compat(mainvar, is_undo, &screen, &scene, &view_layer);
 
 	/* XXX still remap G */
 	fg.curscreen = screen;
 	fg.curscene = scene;
-	fg.cur_view_layer = render_layer;
+	fg.cur_view_layer = view_layer;
 
 	/* prevent to save this, is not good convention, and feature with concerns... */
 	fg.fileflags = (fileflags & ~G_FILE_FLAGS_RUNTIME);
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index 4b26532742b..dd4013efdf2 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -2167,7 +2167,12 @@ ViewLayer *WM_window_get_active_view_layer(const wmWindow *win)
 		return view_layer;
 	}
 
-	return BKE_view_layer_default_view(scene);
+	view_layer = BKE_view_layer_default_view(scene);
+	if (view_layer) {
+		WM_window_set_active_view_layer((wmWindow*)win, view_layer);
+	}
+
+	return view_layer;
 }
 
 void WM_window_set_active_view_layer(wmWindow *win, ViewLayer *view_layer)



More information about the Bf-blender-cvs mailing list