[Bf-blender-cvs] [63b981b] master: Changing render engine now refreshes the texture paint display better.

Antony Riakiotakis noreply at git.blender.org
Wed Aug 27 19:16:12 CEST 2014


Commit: 63b981bf9bae1ad6c3929a32107dcb09caf1ec45
Author: Antony Riakiotakis
Date:   Wed Aug 27 19:15:14 2014 +0200
Branches: master
https://developer.blender.org/rB63b981bf9bae1ad6c3929a32107dcb09caf1ec45

Changing render engine now refreshes the texture paint display better.

Also avoid looping over all objects for texture paint checks when a
material changes, only check active object.

===================================================================

M	source/blender/blenkernel/BKE_material.h
M	source/blender/blenkernel/intern/depsgraph.c
M	source/blender/blenkernel/intern/material.c
M	source/blender/editors/render/render_update.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_material.h b/source/blender/blenkernel/BKE_material.h
index 9c85c4e..2f20505 100644
--- a/source/blender/blenkernel/BKE_material.h
+++ b/source/blender/blenkernel/BKE_material.h
@@ -88,7 +88,6 @@ bool object_remove_material_slot(struct Object *ob);
 
 void BKE_texpaint_slot_refresh_cache(struct Scene *scene, struct Material *ma);
 void BKE_texpaint_slots_refresh_object(struct Scene *scene, struct Object *ob);
-void BKE_texpaint_slots_clear(struct Material *ma);
 
 /* rna api */
 void BKE_material_resize_id(struct ID *id, short totcol, bool do_id_user);
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index 895e542..eecc04c 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -2497,12 +2497,11 @@ static void dag_id_flush_update(Main *bmain, Scene *sce, ID *id)
 		}
 
 		if (ELEM(idtype, ID_MA, ID_TE)) {
-			for (obt = bmain->object.first; obt; obt = obt->id.next) {
-				if (obt->mode & OB_MODE_TEXTURE_PAINT) {
-					obt->recalc |= OB_RECALC_DATA;
-					BKE_texpaint_slots_refresh_object(sce, obt);
-					lib_id_recalc_data_tag(bmain, &obt->id);
-				}
+			obt = sce->basact ? sce->basact->object : NULL;
+			if (obt && obt->mode & OB_MODE_TEXTURE_PAINT) {
+				obt->recalc |= OB_RECALC_DATA;
+				BKE_texpaint_slots_refresh_object(sce, obt);
+				lib_id_recalc_data_tag(bmain, &obt->id);
 			}
 		}
 
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index 81b93a4..7565703 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -1307,19 +1307,6 @@ bool object_remove_material_slot(Object *ob)
 	return true;
 }
 
-void BKE_texpaint_slots_clear(struct Material *ma)
-{
-
-	if (ma->texpaintslot) {
-		MEM_freeN(ma->texpaintslot);
-		ma->texpaintslot = NULL;
-	}
-	ma->tot_slots = 0;
-	ma->paint_active_slot = 0;
-	ma->paint_clone_slot = 0;
-}
-
-
 static bool get_mtex_slot_valid_texpaint(struct MTex *mtex)
 {
 	return (mtex && (mtex->texco == TEXCO_UV) &&
diff --git a/source/blender/editors/render/render_update.c b/source/blender/editors/render/render_update.c
index 8a034fd..6b58d3d 100644
--- a/source/blender/editors/render/render_update.c
+++ b/source/blender/editors/render/render_update.c
@@ -177,12 +177,11 @@ void ED_render_engine_changed(Main *bmain)
 	for (scene = bmain->scene.first; scene; scene = scene->id.next)
 		ED_render_id_flush_update(bmain, &scene->id);
 
-	/* reset texture painting */
-	for (ma = bmain->mat.first; ma; ma = ma->id.next) {
-		if (ma->texpaintslot) {
-			BKE_texpaint_slots_clear(ma);
-			DAG_id_tag_update(&ma->id, 0);
-		}
+	/* reset texture painting. Sending one dependency graph signal for any material should
+	 * refresh any texture slots */
+	ma = bmain->mat.first;
+	if (ma) {
+		DAG_id_tag_update(&ma->id, 0);
 	}
 }




More information about the Bf-blender-cvs mailing list