Cleanup: Move Compositor versioning code from Scene's 'lib_link' to actual versioning code.

Not sure when that versioning was added, but nowadays there are the
'after_linking` versioning handlers for that kind of case.
This commit is contained in:
Bastien Montagne 2023-08-15 15:32:25 +02:00
parent 616e0c8c1d
commit 257f21d494
2 changed files with 20 additions and 16 deletions

@ -1506,18 +1506,6 @@ static void scene_blend_read_data(BlendDataReader *reader, ID *id)
}
/* patch for missing scene IDs, can't be in do-versions */
static void composite_patch(bNodeTree *ntree, Scene *scene)
{
for (bNode *node : ntree->all_nodes()) {
if (node->id == nullptr &&
((node->type == CMP_NODE_R_LAYERS) ||
(node->type == CMP_NODE_CRYPTOMATTE && node->custom1 == CMP_CRYPTOMATTE_SRC_RENDER)))
{
node->id = &scene->id;
}
}
}
static void scene_blend_read_lib(BlendLibReader *reader, ID *id)
{
Scene *sce = (Scene *)id;
@ -1620,10 +1608,6 @@ static void scene_blend_read_lib(BlendLibReader *reader, ID *id)
}
}
if (sce->nodetree) {
composite_patch(sce->nodetree, sce);
}
LISTBASE_FOREACH (SceneRenderLayer *, srl, &sce->r.layers) {
BLO_read_id_address(reader, id, &srl->mat_override);
LISTBASE_FOREACH (FreestyleModuleConfig *, fmc, &srl->freestyleConfig.modules) {

@ -49,6 +49,18 @@
// static CLG_LogRef LOG = {"blo.readfile.doversion"};
static void version_composite_nodetree_null_id(bNodeTree *ntree, Scene *scene)
{
for (bNode *node : ntree->all_nodes()) {
if (node->id == nullptr &&
((node->type == CMP_NODE_R_LAYERS) ||
(node->type == CMP_NODE_CRYPTOMATTE && node->custom1 == CMP_CRYPTOMATTE_SRC_RENDER)))
{
node->id = &scene->id;
}
}
}
void do_versions_after_linking_400(FileData *fd, Main *bmain)
{
if (!MAIN_VERSION_FILE_ATLEAST(bmain, 400, 9)) {
@ -60,6 +72,14 @@ void do_versions_after_linking_400(FileData *fd, Main *bmain)
}
}
/* XXX This was added several years ago in 'lib_link` code of Scene... Should be safe enough
* here. */
LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
if (scene->nodetree) {
version_composite_nodetree_null_id(scene->nodetree, scene);
}
}
/* Object proxies have been deprecated sine 3.x era, so their update & sanity check can now
* happen in do_versions code. */
LISTBASE_FOREACH (Object *, ob, &bmain->objects) {