Fix (unreported) memory leak when making local linked databock which has a preview image.
Also cleaned-up/synchronized code across al ID types that support preview.
This commit is contained in:
parent
4569e19b83
commit
62ea383622
|
@ -459,6 +459,8 @@ Image *BKE_image_copy(Main *bmain, Image *ima)
|
|||
nima->stereo3d_format = MEM_dupallocN(ima->stereo3d_format);
|
||||
BLI_duplicatelist(&nima->views, &ima->views);
|
||||
|
||||
nima->preview = BKE_previewimg_copy(ima->preview);
|
||||
|
||||
if (ID_IS_LINKED_DATABLOCK(ima)) {
|
||||
BKE_id_lib_local_paths(bmain, ima->id.lib, &nima->id);
|
||||
}
|
||||
|
|
|
@ -167,8 +167,8 @@ Lamp *localize_lamp(Lamp *la)
|
|||
if (la->nodetree)
|
||||
lan->nodetree = ntreeLocalize(la->nodetree);
|
||||
|
||||
lan->preview = NULL;
|
||||
|
||||
lan->preview = BKE_previewimg_copy(la->preview);
|
||||
|
||||
return lan;
|
||||
}
|
||||
|
||||
|
|
|
@ -239,12 +239,12 @@ Material *BKE_material_copy(Main *bmain, Material *ma)
|
|||
if (ma->ramp_col) man->ramp_col = MEM_dupallocN(ma->ramp_col);
|
||||
if (ma->ramp_spec) man->ramp_spec = MEM_dupallocN(ma->ramp_spec);
|
||||
|
||||
if (ma->preview) man->preview = BKE_previewimg_copy(ma->preview);
|
||||
|
||||
if (ma->nodetree) {
|
||||
man->nodetree = ntreeCopyTree(bmain, ma->nodetree);
|
||||
}
|
||||
|
||||
man->preview = BKE_previewimg_copy(ma->preview);
|
||||
|
||||
BLI_listbase_clear(&man->gpumaterial);
|
||||
|
||||
if (ID_IS_LINKED_DATABLOCK(ma)) {
|
||||
|
|
|
@ -1219,7 +1219,6 @@ void BKE_object_make_local(Main *bmain, Object *ob)
|
|||
if (is_local) {
|
||||
if (!is_lib) {
|
||||
id_clear_lib_data(bmain, &ob->id);
|
||||
ob->preview = NULL;
|
||||
extern_local_object(ob);
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -344,9 +344,7 @@ Scene *BKE_scene_copy(Main *bmain, Scene *sce, int type)
|
|||
}
|
||||
}
|
||||
|
||||
if (sce->preview) {
|
||||
scen->preview = BKE_previewimg_copy(sce->preview);
|
||||
}
|
||||
scen->preview = BKE_previewimg_copy(sce->preview);
|
||||
|
||||
return scen;
|
||||
}
|
||||
|
|
|
@ -876,6 +876,8 @@ Tex *BKE_texture_copy(Main *bmain, Tex *tex)
|
|||
BKE_id_lib_local_paths(bmain, tex->id.lib, &texn->id);
|
||||
}
|
||||
|
||||
texn->preview = BKE_previewimg_copy(tex->preview);
|
||||
|
||||
return texn;
|
||||
}
|
||||
|
||||
|
|
|
@ -138,8 +138,7 @@ World *BKE_world_copy(Main *bmain, World *wrld)
|
|||
wrldn->nodetree = ntreeCopyTree(bmain, wrld->nodetree);
|
||||
}
|
||||
|
||||
if (wrld->preview)
|
||||
wrldn->preview = BKE_previewimg_copy(wrld->preview);
|
||||
wrldn->preview = BKE_previewimg_copy(wrld->preview);
|
||||
|
||||
BLI_listbase_clear(&wrldn->gpumaterial);
|
||||
|
||||
|
|
Loading…
Reference in New Issue