From d1b14e7878386fa80f9a7e7fb2a428ec8f36ca91 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Tue, 11 Jan 2011 12:36:49 +0000 Subject: [PATCH] Bugfix, own testing When pressure was zero, a sculpt brush was still being executed with step amount divided by zero, and thus entering eternal loop. Maybe tablet-specific this but I wonder how this never got reported... --- .../blender/editors/sculpt_paint/paint_stroke.c | 16 ++++++++++------ source/blender/editors/sculpt_paint/sculpt.c | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c index 125e570946b..15bb574448f 100644 --- a/source/blender/editors/sculpt_paint/paint_stroke.c +++ b/source/blender/editors/sculpt_paint/paint_stroke.c @@ -769,14 +769,18 @@ static int paint_space_stroke(bContext *C, wmOperator *op, wmEvent *event, const float pressure; pressure = event_tablet_data(event, NULL); - scale = (brush_size(stroke->brush)*pressure*stroke->brush->spacing/50.0f) / length; - mul_v2_fl(vec, scale); + if(pressure > FLT_EPSILON) { + scale = (brush_size(stroke->brush)*pressure*stroke->brush->spacing/50.0f) / length; + if(scale > FLT_EPSILON) { + mul_v2_fl(vec, scale); - steps = (int)(1.0f / scale); + steps = (int)(1.0f / scale); - for(i = 0; i < steps; ++i, ++cnt) { - add_v2_v2(mouse, vec); - paint_brush_stroke_add_step(C, op, event, mouse); + for(i = 0; i < steps; ++i, ++cnt) { + add_v2_v2(mouse, vec); + paint_brush_stroke_add_step(C, op, event, mouse); + } + } } } } diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 6429a70515b..c0399fadb90 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -306,6 +306,7 @@ static void sculpt_brush_test_init(SculptSession *ss, SculptBrushTest *test) { test->radius_squared= ss->cache->radius_squared; copy_v3_v3(test->location, ss->cache->location); + test->dist= 0.0f; /* just for initialize */ } static int sculpt_brush_test(SculptBrushTest *test, float co[3])