diff --git a/app/paint/gimpbrushcore.c b/app/paint/gimpbrushcore.c index 7e834a9409..ca7c91e692 100644 --- a/app/paint/gimpbrushcore.c +++ b/app/paint/gimpbrushcore.c @@ -665,8 +665,8 @@ gimp_brush_core_interpolate (GimpPaintCore *paint_core, */ s0 += direction; } - else if (x == (gint) floor (last_coords.y) && - y == (gint) floor (last_coords.y)) + else if (x == (gint) floor (paint_core->last_paint.x) && + y == (gint) floor (paint_core->last_paint.y)) { /* Exception B: If first stripe's brush position is within the * same pixel square as the last plot of the previous line, @@ -774,6 +774,7 @@ gimp_brush_core_interpolate (GimpPaintCore *paint_core, current_coords.velocity = last_coords.velocity + delta_velocity; gimp_paint_core_set_current_coords (paint_core, ¤t_coords); + gimp_paint_core_set_last_coords (paint_core, ¤t_coords); paint_core->distance = total; paint_core->pixel_dist = pixel_initial + pixel_dist; diff --git a/app/paint/gimppaintcore.c b/app/paint/gimppaintcore.c index 3783df20df..7aa39c21db 100644 --- a/app/paint/gimppaintcore.c +++ b/app/paint/gimppaintcore.c @@ -322,6 +322,13 @@ gimp_paint_core_paint (GimpPaintCore *core, paint_state, time)) { + if (paint_state == GIMP_PAINT_STATE_MOTION) + { + /* Save coordinates for gimp_paint_core_interpolate() */ + core->last_paint.x = core->cur_coords.x; + core->last_paint.y = core->cur_coords.y; + } + core_class->paint (core, drawable, paint_options, &core->cur_coords,