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
path: root/source
diff options
context:
space:
mode:
authorAntony Riakiotakis <kalast@gmail.com>2014-09-03 14:14:09 +0400
committerAntony Riakiotakis <kalast@gmail.com>2014-09-03 14:14:09 +0400
commit728687c571e72e942cdcfbdd241de494161a36a4 (patch)
treed45e9f62d342758b0ba1e9f719785d26a8187204 /source
parent16dc208ef640b07a64a44ed33d4703460b9be9ba (diff)
Texture painting:
Free draw objects instead of tagging object update and doing recalculation of derived meshes. The reason is that if user deletes all slots and tries to paint, the system will invalidate the cached in projection painting derivedmesh. This will promptly crash. Invalidating the draw objects only is also much cheaper.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/depsgraph.c6
-rw-r--r--source/blender/makesrna/intern/rna_sculpt_paint.c7
2 files changed, 9 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index eecc04c1e72..eeda9b0f90f 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -62,6 +62,7 @@
#include "BKE_anim.h"
#include "BKE_animsys.h"
#include "BKE_action.h"
+#include "BKE_DerivedMesh.h"
#include "BKE_effect.h"
#include "BKE_fcurve.h"
#include "BKE_global.h"
@@ -80,6 +81,8 @@
#include "BKE_screen.h"
#include "BKE_tracking.h"
+#include "GPU_buffers.h"
+
#include "atomic_ops.h"
#include "depsgraph_private.h"
@@ -2499,9 +2502,8 @@ static void dag_id_flush_update(Main *bmain, Scene *sce, ID *id)
if (ELEM(idtype, ID_MA, ID_TE)) {
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);
+ GPU_drawobject_free(obt->derivedFinal);
}
}
diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c
index c4b5461dece..d48d8589f96 100644
--- a/source/blender/makesrna/intern/rna_sculpt_paint.c
+++ b/source/blender/makesrna/intern/rna_sculpt_paint.c
@@ -76,11 +76,14 @@ EnumPropertyItem symmetrize_direction_items[] = {
#include "MEM_guardedalloc.h"
#include "BKE_context.h"
+#include "BKE_DerivedMesh.h"
#include "BKE_pointcache.h"
#include "BKE_particle.h"
#include "BKE_depsgraph.h"
#include "BKE_pbvh.h"
+#include "GPU_buffers.h"
+
#include "ED_particle.h"
static EnumPropertyItem particle_edit_disconnected_hair_brush_items[] = {
@@ -304,8 +307,8 @@ static void rna_ImaPaint_mode_update(Main *UNUSED(bmain), Scene *scene, PointerR
/* of course we need to invalidate here */
BKE_texpaint_slots_refresh_object(scene, ob);
- /* we assume that changing the current mode will invalidate the uv layers so we need to tag an update */
- DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
+ /* we assume that changing the current mode will invalidate the uv layers so we need to refresh display */
+ GPU_drawobject_free(ob->derivedFinal);
WM_main_add_notifier(NC_GEOM | ND_DATA, &ob->id);
}