diff options
author | Antony Riakiotakis <kalast@gmail.com> | 2013-04-13 01:58:18 +0400 |
---|---|---|
committer | Antony Riakiotakis <kalast@gmail.com> | 2013-04-13 01:58:18 +0400 |
commit | 9d0b08365ff2f1f0b44c3c7621f80b71c5bb5b7f (patch) | |
tree | 61213a139465fae95720a327f2d67cacadf25a7a | |
parent | a074df37c7630ddc23aa74d4e957a8113955c925 (diff) |
Fixes:
* Overlay invalidation did not happen when changing brush, .either
through UI or through shortcuts
* Add initiliazation of curves before threaded overlay texture
evaluation or we may get memory leaks due to race conditions.
-rw-r--r-- | source/blender/editors/sculpt_paint/paint_cursor.c | 9 | ||||
-rw-r--r-- | source/blender/editors/sculpt_paint/paint_ops.c | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_sculpt_paint.c | 8 |
3 files changed, 13 insertions, 5 deletions
diff --git a/source/blender/editors/sculpt_paint/paint_cursor.c b/source/blender/editors/sculpt_paint/paint_cursor.c index 32cc6953c78..c104a5fac94 100644 --- a/source/blender/editors/sculpt_paint/paint_cursor.c +++ b/source/blender/editors/sculpt_paint/paint_cursor.c @@ -45,6 +45,7 @@ #include "BKE_context.h" #include "BKE_image.h" #include "BKE_paint.h" +#include "BKE_colortools.h" #include "WM_api.h" @@ -120,10 +121,8 @@ static int load_tex(Brush *br, ViewContext *vc, float zoom, bool col) refresh = !overlay_texture || - (br->mtex.tex && - (invalid & PAINT_INVALID_OVERLAY_TEXTURE_PRIMARY)) || - (br->curve && - (invalid & PAINT_INVALID_OVERLAY_CURVE)) || + (invalid & PAINT_INVALID_OVERLAY_TEXTURE_PRIMARY) || + (invalid & PAINT_INVALID_OVERLAY_CURVE) || old_zoom != zoom || old_col != col || !same_tex_snap(&snap, br, vc); @@ -175,6 +174,8 @@ static int load_tex(Brush *br, ViewContext *vc, float zoom, bool col) if (br->mtex.tex) pool = BKE_image_pool_new(); + curvemapping_initialize(br->curve); + #pragma omp parallel for schedule(static) for (j = 0; j < size; j++) { int i; diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index f1207aa5706..0fe60813fd1 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -284,6 +284,7 @@ static int brush_generic_tool_set(Main *bmain, Paint *paint, const int tool, if (brush) { BKE_paint_brush_set(paint, brush); + BKE_paint_invalidate_overlay_all(); WM_main_add_notifier(NC_BRUSH | NA_EDITED, brush); return OPERATOR_FINISHED; } diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c index bb3043fabcf..b48ae3e0194 100644 --- a/source/blender/makesrna/intern/rna_sculpt_paint.c +++ b/source/blender/makesrna/intern/rna_sculpt_paint.c @@ -279,6 +279,12 @@ static char *rna_ParticleBrush_path(PointerRNA *ptr) return BLI_strdup("tool_settings.particle_edit.brush"); } +static void rna_Paint_brush_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) +{ + Brush *br = (Brush *)ptr->data; + BKE_paint_invalidate_overlay_all(); + WM_main_add_notifier(NC_BRUSH | NA_EDITED, br); +} #else static void rna_def_paint(BlenderRNA *brna) @@ -294,7 +300,7 @@ static void rna_def_paint(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Brush_mode_poll"); RNA_def_property_ui_text(prop, "Brush", "Active Brush"); - RNA_def_property_update(prop, NC_BRUSH | NA_EDITED, NULL); + RNA_def_property_update(prop, 0, "rna_Paint_brush_update"); prop = RNA_def_property(srna, "show_brush", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_SHOW_BRUSH); |