diff options
-rw-r--r-- | source/blender/blenkernel/BKE_depsgraph.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/depsgraph.c | 9 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/scene.c | 5 |
3 files changed, 11 insertions, 4 deletions
diff --git a/source/blender/blenkernel/BKE_depsgraph.h b/source/blender/blenkernel/BKE_depsgraph.h index 71204c73063..6baf20aeb2c 100644 --- a/source/blender/blenkernel/BKE_depsgraph.h +++ b/source/blender/blenkernel/BKE_depsgraph.h @@ -65,6 +65,7 @@ struct Scene; void DAG_scene_relations_update(struct Main *bmain, struct Scene *sce); void DAG_relations_tag_update(struct Main *bmain); void DAG_scene_relations_rebuild(struct Main *bmain, struct Scene *scene); +void DAG_scene_free(struct Scene *sce); /* Update Tagging * diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 68bdf8a8100..b919b9ffd8f 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -1429,6 +1429,15 @@ void DAG_scene_relations_update(Main *bmain, Scene *sce) dag_scene_build(bmain, sce); } +void DAG_scene_free(Scene *sce) +{ + if (sce->theDag) { + free_forest(sce->theDag); + MEM_freeN(sce->theDag); + sce->theDag = NULL; + } +} + static void lib_id_recalc_tag(Main *bmain, ID *id) { id->flag |= LIB_ID_RECALC; diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 9a1a146c271..c8346971d1c 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -359,10 +359,7 @@ void BKE_scene_free(Scene *sce) sce->toolsettings = NULL; } - if (sce->theDag) { - free_forest(sce->theDag); - MEM_freeN(sce->theDag); - } + DAG_scene_free(sce); if (sce->nodetree) { ntreeFreeTree(sce->nodetree); |