diff options
author | Ton Roosendaal <ton@blender.org> | 2011-01-11 15:36:49 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2011-01-11 15:36:49 +0300 |
commit | d1b14e7878386fa80f9a7e7fb2a428ec8f36ca91 (patch) | |
tree | 9f466ba9a90cc1e88549c740d1155deb9a62ecd8 /source/blender/editors/sculpt_paint | |
parent | 4134e4f3ae1d2c6285283662175ebd195856f298 (diff) |
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...
Diffstat (limited to 'source/blender/editors/sculpt_paint')
-rw-r--r-- | source/blender/editors/sculpt_paint/paint_stroke.c | 16 | ||||
-rw-r--r-- | 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]) |