Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/blenkernel/BKE_material.h1
-rw-r--r--source/blender/blenkernel/intern/material.c10
-rw-r--r--source/blender/editors/render/render_preview.c9
3 files changed, 10 insertions, 10 deletions
diff --git a/source/blender/blenkernel/BKE_material.h b/source/blender/blenkernel/BKE_material.h
index 030af85ba84..dd1b1a7752b 100644
--- a/source/blender/blenkernel/BKE_material.h
+++ b/source/blender/blenkernel/BKE_material.h
@@ -48,6 +48,7 @@ struct Scene;
void init_def_material(void);
void BKE_material_free(struct Material *sc);
+void BKE_material_free_ex(struct Material *ma, int do_id_user);
void test_object_materials(struct ID *id);
void resize_object_material(struct Object *ob, const short totcol);
void init_material(struct Material *ma);
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index 8a26a1b52c5..fd167c69e62 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -80,12 +80,18 @@ void init_def_material(void)
/* not material itself */
void BKE_material_free(Material *ma)
{
+ BKE_material_free_ex(ma, TRUE);
+}
+
+/* not material itself */
+void BKE_material_free_ex(Material *ma, int do_id_user)
+{
MTex *mtex;
int a;
for (a = 0; a < MAX_MTEX; a++) {
mtex = ma->mtex[a];
- if (mtex && mtex->tex) mtex->tex->id.us--;
+ if (do_id_user && mtex && mtex->tex) mtex->tex->id.us--;
if (mtex) MEM_freeN(mtex);
}
@@ -101,7 +107,7 @@ void BKE_material_free(Material *ma)
/* is no lib link block, but material extension */
if (ma->nodetree) {
- ntreeFreeTree(ma->nodetree);
+ ntreeFreeTree_ex(ma->nodetree, do_id_user);
MEM_freeN(ma->nodetree);
}
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c
index 84319061d52..add2cbd566b 100644
--- a/source/blender/editors/render/render_preview.c
+++ b/source/blender/editors/render/render_preview.c
@@ -749,7 +749,6 @@ static void shader_preview_free(void *customdata)
if (sp->matcopy) {
struct IDProperty *properties;
- int a;
/* node previews */
shader_preview_updatejob(sp);
@@ -757,13 +756,7 @@ static void shader_preview_free(void *customdata)
/* get rid of copied material */
BLI_remlink(&pr_main->mat, sp->matcopy);
- /* BKE_material_free decrements texture, prevent this. hack alert! */
- for (a = 0; a < MAX_MTEX; a++) {
- MTex *mtex = sp->matcopy->mtex[a];
- if (mtex && mtex->tex) mtex->tex = NULL;
- }
-
- BKE_material_free(sp->matcopy);
+ BKE_material_free_ex(sp->matcopy, FALSE);
properties = IDP_GetProperties((ID *)sp->matcopy, FALSE);
if (properties) {