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:
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
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue