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