* 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.
This commit is contained in:
Antony Riakiotakis
2013-04-12 21:58:18 +00:00
parent a074df37c7
commit 9d0b08365f
3 changed files with 13 additions and 5 deletions

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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);