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:
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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) {
|
||||
|
@@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user