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)
|
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);
|
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;
|
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. */
|
/* 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) {
|
for (Group *group = main->group.first; group; group = group->id.next) {
|
||||||
|
@@ -95,7 +95,7 @@ typedef struct WorkSpace {
|
|||||||
/* should be: '#ifdef USE_WORKSPACE_TOOL'. */
|
/* should be: '#ifdef USE_WORKSPACE_TOOL'. */
|
||||||
bToolDef tool;
|
bToolDef tool;
|
||||||
|
|
||||||
struct ViewLayer *view_layer DNA_PRIVATE_WORKSPACE;
|
struct ViewLayer *view_layer DNA_DEPRECATED;
|
||||||
struct ViewRender view_render;
|
struct ViewRender view_render;
|
||||||
} WorkSpace;
|
} WorkSpace;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user