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.
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user