Commit: 108c4bd5026d2843c8bd49ffb1cee41d6d905375
Author: Julian Eisel
Date:   Fri Dec 1 18:06:06 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB108c4bd5026d2843c8bd49ffb1cee41d6d905375

Fix crash reading 2.8 files with workspace.view_layer set

Stupid error from e8c15e0ed15f8369d.

Also removed WorkSpace.view_layer usage and marked as deprecated.

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

M       source/blender/blenkernel/intern/workspace.c
M       source/blender/blenloader/intern/readfile.c
M       source/blender/blenloader/intern/versioning_280.c
M       source/blender/makesdna/DNA_workspace_types.h

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

diff --git a/source/blender/blenkernel/intern/workspace.c 
b/source/blender/blenkernel/intern/workspace.c
index b6b7d936c76..8554cf0fb28 100644
--- a/source/blender/blenkernel/intern/workspace.c
+++ b/source/blender/blenkernel/intern/workspace.c
@@ -445,7 +445,6 @@ ViewLayer *BKE_workspace_view_layer_get(const WorkSpace 
*workspace, const Scene
 }
 void BKE_workspace_view_layer_set(WorkSpace *workspace, ViewLayer *layer, 
Scene *scene)
 {
-       workspace->view_layer = layer;
        
workspace_relation_ensure_updated(&workspace->scene_viewlayer_relations, scene, 
layer);
 }
 
diff --git a/source/blender/blenloader/intern/readfile.c 
b/source/blender/blenloader/intern/readfile.c
index a91c83c68ef..e6d2be02977 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -6188,6 +6188,14 @@ static void direct_link_workspace_link_scene_data(
                                relation->value = layer;
                        }
                }
+
+               if (workspace->view_layer) { /* this was temporariliy used 
during 2.8 project. Keep files compatible */
+                       ViewLayer *layer = newdataadr(fd, 
workspace->view_layer);
+                       /* only set when layer is from the scene we read */
+                       if (layer && (BLI_findindex(&scene->view_layers, layer) 
!= -1)) {
+                               workspace->view_layer = layer;
+                       }
+               }
        }
 }
 
diff --git a/source/blender/blenloader/intern/versioning_280.c 
b/source/blender/blenloader/intern/versioning_280.c
index 8f2295781bf..c718702388a 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -549,6 +549,22 @@ void do_versions_after_linking_280(Main *main)
                }
        }
 
+       if (!MAIN_VERSION_ATLEAST(main, 280, 3)) {
+               for (WorkSpace *workspace = main->workspaces.first; workspace; 
workspace = workspace->id.next) {
+                       if (workspace->view_layer) {
+                               /* During 2.8 work we temporarly stored 
view-layer in the
+                                * workspace directly, but should be stored 
there per-scene. */
+                               for (Scene *scene = main->scene.first; scene; 
scene = scene->id.next) {
+                                       if (BLI_findindex(&scene->view_layers, 
workspace->view_layer) > -1) {
+                                               
BKE_workspace_view_layer_set(workspace, workspace->view_layer, scene);
+                                               workspace->view_layer = NULL;
+                                       }
+                               }
+                       }
+                       BLI_assert(workspace->view_layer == NULL);
+               }
+       }
+
        {
                /* Since we don't have access to FileData we check the (always 
valid) master collection of the group. */
                for (Group *group = main->group.first; group; group = 
group->id.next) {
diff --git a/source/blender/makesdna/DNA_workspace_types.h 
b/source/blender/makesdna/DNA_workspace_types.h
index 11a67692b8b..adc3c1fef2b 100644
--- a/source/blender/makesdna/DNA_workspace_types.h
+++ b/source/blender/makesdna/DNA_workspace_types.h
@@ -95,7 +95,7 @@ typedef struct WorkSpace {
        /* should be: '#ifdef USE_WORKSPACE_TOOL'. */
        bToolDef tool;
 
-       struct ViewLayer *view_layer DNA_PRIVATE_WORKSPACE;
+       struct ViewLayer *view_layer DNA_DEPRECATED;
        struct ViewRender view_render;
 } WorkSpace;

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to