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:
authorAntony Riakiotakis <kalast@gmail.com>2014-08-27 21:15:14 +0400
committerAntony Riakiotakis <kalast@gmail.com>2014-08-27 21:15:41 +0400
commit63b981bf9bae1ad6c3929a32107dcb09caf1ec45 (patch)
tree1c8aff2406cf1b1ce8d613ba58d720148188da50 /source/blender
parentef2a38a9665c3f39ccdead8e1177f9b9c2e92538 (diff)
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.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/BKE_material.h1
-rw-r--r--source/blender/blenkernel/intern/depsgraph.c11
-rw-r--r--source/blender/blenkernel/intern/material.c13
-rw-r--r--source/blender/editors/render/render_update.c11
4 files changed, 10 insertions, 26 deletions
diff --git a/source/blender/blenkernel/BKE_material.h b/source/blender/blenkernel/BKE_material.h
index 9c85c4eab95..2f20505bea3 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 895e542ca52..eecc04c1e72 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 81b93a47917..7565703358e 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 8a034fdd8b5..6b58d3d55aa 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);
}
}