Bug 362985

Summary: LOD / Instant Preview : when the last brush stroke inherit and redraw the next brush size
Product: [Applications] krita Reporter: David REVOY <info>
Component: Instant PreviewAssignee: Krita Bugs <krita-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: griffinvalley
Priority: NOR    
Version First Reported In: 3.0 Beta   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description David REVOY 2016-05-12 14:26:33 UTC
https://share.kde.org/index.php/s/PdXkKw9GnokZjoG
[ ^ video of the bug (mkv, 20s) 1st stroke is OK, the second and third (tilted canvas) shows the bug ]

Hi, if you change brush-size with shift while LOD compute last stroke ; your previous stroke will be half retraced with the new size.  It can't be triggered at discrete zoom ( 33%,55%,etc.... all zoom of mouse ) but with a bit of non-discrete canvas rotation (shift+space) and random zoom (ctrl+space) input it's easy to reproduce. ( on the video: a 3195x2095 canvas at 22% viewport, slightly tilted . Brush preset used : deevad C4 rake large , starting at size around 300px, and then resized with shift to around 50px )
Comment 1 wolthera 2016-05-12 18:49:17 UTC
yep, have it here as well, with a predefined brush-tip.

I can even reproduce it at 33 and 50%.

Without predefined brush tip(so an auto brush) it works just fine.
Comment 2 Dmitry Kazakov 2016-05-16 11:13:18 UTC
Git commit 03187c24558121a4ce5423cc8f3eb794a7e89dfc by Dmitry Kazakov.
Committed on 16/05/2016 at 11:12.
Pushed by dkazakov into branch 'master'.

Fix brush size change while Lod0 recalculation

We should really clone the brush before passing it to the stroke.

The weird thing about the patch is that we don't use the cloning
functionality for KisAutoBrush anywhere, but it still had to be
implemented. At least it is thoroughly tested by the unittests now.

Fixes T2492

M  +18   -0    libs/brush/kis_abr_brush.cpp
M  +3    -0    libs/brush/kis_abr_brush.h
M  +16   -0    libs/brush/kis_abr_brush_collection.cpp
M  +3    -0    libs/brush/kis_abr_brush_collection.h
M  +27   -7    libs/brush/kis_auto_brush.cpp
M  +6    -1    libs/brush/kis_auto_brush.h
M  +1    -1    libs/brush/kis_auto_brush_factory.cpp
M  +2    -0    libs/brush/kis_brush.h
M  +4    -1    libs/brush/kis_brushes_pipe.h
M  +1    -1    libs/brush/kis_gbr_brush.cpp
M  +1    -1    libs/brush/kis_gbr_brush.h
M  +1    -1    libs/brush/kis_imagepipe_brush.cpp
M  +1    -1    libs/brush/kis_imagepipe_brush.h
M  +5    -0    libs/brush/kis_png_brush.cpp
M  +3    -0    libs/brush/kis_png_brush.h
M  +1    -1    libs/brush/kis_predefined_brush_factory.cpp
M  +11   -0    libs/brush/kis_svg_brush.cpp
M  +3    -0    libs/brush/kis_svg_brush.h
M  +20   -0    libs/brush/tests/kis_auto_brush_test.cpp
M  +2    -0    libs/brush/tests/kis_auto_brush_test.h
M  +22   -0    libs/image/kis_antialiasing_fade_maker.h
M  +47   -7    libs/image/kis_base_mask_generator.cpp
M  +6    -1    libs/image/kis_base_mask_generator.h
M  +1    -1    libs/image/kis_brush_mask_applicator_factories.cpp
M  +16   -5    libs/image/kis_circle_mask_generator.cpp
M  +4    -1    libs/image/kis_circle_mask_generator.h
M  +23   -1    libs/image/kis_circle_mask_generator_p.h
M  +26   -6    libs/image/kis_curve_circle_mask_generator.cpp
M  +4    -1    libs/image/kis_curve_circle_mask_generator.h
M  +24   -4    libs/image/kis_curve_rect_mask_generator.cpp
M  +2    -0    libs/image/kis_curve_rect_mask_generator.h
M  +23   -2    libs/image/kis_gauss_circle_mask_generator.cpp
M  +4    -2    libs/image/kis_gauss_circle_mask_generator.h
M  +21   -1    libs/image/kis_gauss_rect_mask_generator.cpp
M  +3    -7    libs/image/kis_gauss_rect_mask_generator.h
M  +15   -5    libs/image/kis_rect_mask_generator.cpp
M  +5    -1    libs/image/kis_rect_mask_generator.h
M  +79   -0    libs/image/tests/kis_mask_generator_test.cpp
M  +9    -0    libs/image/tests/kis_mask_generator_test.h
M  +1    -1    plugins/paintops/libpaintop/kis_clipboard_brush_widget.cpp
M  +1    -1    plugins/paintops/libpaintop/kis_custom_brush_widget.cpp

http://commits.kde.org/krita/03187c24558121a4ce5423cc8f3eb794a7e89dfc