Fix crash reading 2.8 files with workspace.view_layer set

Stupid error from e8c15e0ed1.

Also removed WorkSpace.view_layer usage and marked as deprecated.
This commit is contained in:
Julian Eisel 2017-12-01 18:06:06 +01:00
parent d10578df46
commit 108c4bd502
Notes: blender-bot 2023-02-14 06:00:50 +01:00
Referenced by commit e9cf3fae8e, Fixup for workspace view_layer fix
4 changed files with 25 additions and 2 deletions

View File

@ -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);
}

View File

@ -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;
}
}
}
}

View File

@ -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) {

View File

@ -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;