Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2011-01-11 15:36:49 +0300
committerTon Roosendaal <ton@blender.org>2011-01-11 15:36:49 +0300
commitd1b14e7878386fa80f9a7e7fb2a428ec8f36ca91 (patch)
tree9f466ba9a90cc1e88549c740d1155deb9a62ecd8 /source/blender/editors/sculpt_paint
parent4134e4f3ae1d2c6285283662175ebd195856f298 (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.c16
-rw-r--r--source/blender/editors/sculpt_paint/sculpt.c1
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])