void BKE_world_free(World *wrld) { BKE_world_free_ex(wrld, TRUE); }
static void shader_preview_free(void *customdata) { ShaderPreview *sp = customdata; Main *pr_main = sp->pr_main; if (sp->matcopy) { struct IDProperty *properties; /* node previews */ shader_preview_updatejob(sp); /* get rid of copied material */ BLI_remlink(&pr_main->mat, sp->matcopy); BKE_material_free_ex(sp->matcopy, FALSE); properties = IDP_GetProperties((ID *)sp->matcopy, FALSE); if (properties) { IDP_FreeProperty(properties); MEM_freeN(properties); } MEM_freeN(sp->matcopy); } if (sp->texcopy) { struct IDProperty *properties; /* node previews */ shader_preview_updatejob(sp); /* get rid of copied texture */ BLI_remlink(&pr_main->tex, sp->texcopy); BKE_texture_free(sp->texcopy); properties = IDP_GetProperties((ID *)sp->texcopy, FALSE); if (properties) { IDP_FreeProperty(properties); MEM_freeN(properties); } MEM_freeN(sp->texcopy); } if (sp->worldcopy) { struct IDProperty *properties; /* node previews */ shader_preview_updatejob(sp); /* get rid of copied world */ BLI_remlink(&pr_main->world, sp->worldcopy); BKE_world_free_ex(sp->worldcopy, TRUE); /* [#32865] - we need to unlink the texture copies, unlike for materials */ properties = IDP_GetProperties((ID *)sp->worldcopy, FALSE); if (properties) { IDP_FreeProperty(properties); MEM_freeN(properties); } MEM_freeN(sp->worldcopy); } if (sp->lampcopy) { struct IDProperty *properties; /* node previews */ shader_preview_updatejob(sp); /* get rid of copied lamp */ BLI_remlink(&pr_main->lamp, sp->lampcopy); BKE_lamp_free(sp->lampcopy); properties = IDP_GetProperties((ID *)sp->lampcopy, FALSE); if (properties) { IDP_FreeProperty(properties); MEM_freeN(properties); } MEM_freeN(sp->lampcopy); } MEM_freeN(sp); }
void BKE_world_free(World *wrld) { BKE_world_free_ex(wrld, true); }