void BKE_main_collection_sync_remap(const Main *bmain) { /* On remapping of object or collection pointers free caches. */ /* TODO: try to make this faster */ for (const Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { for (ViewLayer *view_layer = scene->view_layers.first; view_layer; view_layer = view_layer->next) { MEM_SAFE_FREE(view_layer->object_bases_array); if (view_layer->object_bases_hash) { BLI_ghash_free(view_layer->object_bases_hash, NULL, NULL); view_layer->object_bases_hash = NULL; } } } for (Collection *collection = bmain->collections.first; collection; collection = collection->id.next) { BKE_collection_object_cache_free(collection); DEG_id_tag_update_ex((Main *)bmain, &collection->id, ID_RECALC_COPY_ON_WRITE); } BKE_main_collection_sync(bmain); }
/** Free (or release) any data used by this collection (does not free the collection itself). */ void BKE_collection_free(Collection *collection) { /* No animdata here. */ BKE_previewimg_free(&collection->preview); BLI_freelistN(&collection->gobject); BLI_freelistN(&collection->children); BLI_freelistN(&collection->parents); BKE_collection_object_cache_free(collection); }