Bug 289790

Summary: Pressing backspace while the stroke is running crashes Krita
Product: [Applications] krita Reporter: Dmitry Kazakov <dimula73>
Component: GeneralAssignee: Dmitry Kazakov <dimula73>
Status: RESOLVED FIXED    
Severity: crash    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Unlisted Binaries   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Dmitry Kazakov 2011-12-25 17:06:02 UTC
.
Comment 1 Dmitry Kazakov 2011-12-26 08:59:31 UTC
The same happens if you, e.g.
1) Start Rotation of the image
2) Try to paint a gradient

If you do it quite fast and the image is quite big, you'll get a crash
Comment 2 Dmitry Kazakov 2011-12-27 16:31:59 UTC
Git commit c51e6a7773f240428fe8f61587e046c325227aa7 by Dmitry Kazakov.
Committed on 27/12/2011 at 14:43.
Pushed by dkazakov into branch 'master'.

Texture tile should have actual information about image borders
Related: bug 289790

M  +2    -3    krita/ui/opengl/kis_opengl_image_textures.cpp
M  +1    -1    krita/ui/opengl/kis_texture_tile.cpp
M  +0    -2    krita/ui/opengl/kis_texture_tile.h
M  +10   -4    krita/ui/opengl/kis_texture_tile_update_info.h

http://commits.kde.org/calligra/c51e6a7773f240428fe8f61587e046c325227aa7
Comment 3 Dmitry Kazakov 2011-12-27 16:31:59 UTC
Git commit 57be15318b99f90d46f8a6c681ccb0a468085ad9 by Dmitry Kazakov.
Committed on 27/12/2011 at 18:27.
Pushed by dkazakov into branch 'master'.

Make update of the canvas on sigImageSizeChanged in two stages as well

Now it is done like we process usual update signals. The first part of the
signal is DirectConnection, so the canvas has an opportunity to fetch
the data of the image's projection and the second part is executed in
the context of UI using AuoConnection.

It allows us to solve a half of a really serious problem. Now we don't
need to use BlockingQueuedConnection for sigImageSizeChanged. After
fixing the second user of blocked connections -- KisNodeModel, we will be
able to fix bug 289790 quite easily by simply barrier-locking the image
before processing. Now we get a deadlock because of blocking signals.
Related: bug 289790

M  +6    -1    krita/image/kis_image_signal_router.cpp
M  +50   -28   krita/ui/canvas/kis_canvas2.cpp
M  +3    -2    krita/ui/canvas/kis_canvas2.h
M  +4    -10   krita/ui/canvas/kis_prescaled_projection.cpp
M  +5    -2    krita/ui/canvas/kis_prescaled_projection.h
M  +2    -1    krita/ui/opengl/kis_opengl_canvas2.cpp
M  +2    -5    krita/ui/opengl/kis_opengl_image_textures.cpp
M  +5    -0    krita/ui/opengl/kis_opengl_image_textures.h
M  +2    -1    krita/ui/tests/kis_prescaled_projection_test.cpp

http://commits.kde.org/calligra/57be15318b99f90d46f8a6c681ccb0a468085ad9
Comment 4 Dmitry Kazakov 2011-12-27 16:31:59 UTC
Git commit c900bbc2bbde4331947fed47d091168b27b5e8b7 by Dmitry Kazakov.
Committed on 27/12/2011 at 14:25.
Pushed by dkazakov into branch 'master'.

Made KisOpenGLImageTextures::updateCache do not access any UI data
Related: bug 289790

M  +17   -9    krita/ui/opengl/kis_opengl_image_textures.cpp
M  +1    -0    krita/ui/opengl/kis_opengl_image_textures.h
M  +11   -6    krita/ui/opengl/kis_texture_tile_update_info.h

http://commits.kde.org/calligra/c900bbc2bbde4331947fed47d091168b27b5e8b7
Comment 5 Dmitry Kazakov 2012-01-05 11:12:18 UTC
Git commit bd78ce5e1ef4b1a9cda06a315bbcf0c1d9efb9c9 by Dmitry Kazakov.
Committed on 05/01/2012 at 13:10.
Pushed by dkazakov into branch 'master'.

Fixed threading bugs in KisSelectionManager and covered it with unittests

The problem is our transactions declare their work only in the very
end of processing. It means that there are no guarantees about exclusivity
of their work. So now I added beginMacro()/endMacro() calls to declare
their work and to lock the scheduler.

M  +0    -13   krita/image/tests/kis_processings_test.cpp
M  +102  -12   krita/sdk/tests/qimage_based_test.h
M  +2    -1    krita/sdk/tests/testutil.h
M  +25   -8    krita/ui/kis_selection_manager.cc
M  +6    -0    krita/ui/tests/CMakeLists.txt
A  +-    --    krita/ui/tests/data/hakonepa.png
A  +-    --    krita/ui/tests/data/selection_manager_test/border_selection/border_selection_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_Layer 1(pasted)_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_Layer 1(pasted)_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_Layer 1(pasted)_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_Layer 2(pasted)_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_Layer 2(pasted)_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_Layer 2(pasted)_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_Layer 3(pasted)_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_Layer 3(pasted)_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_Layer 3(pasted)_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_blur1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_blur1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_blur1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_clone1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_clone1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_paint1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_paint1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_paint1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_root_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_root_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste/copy_paste_tmask1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_Layer 1(pasted)_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_Layer 1(pasted)_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_Layer 1(pasted)_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_Layer 2(pasted)_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_Layer 2(pasted)_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_Layer 2(pasted)_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_blur1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_blur1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_blur1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_clone1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_clone1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_paint1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_paint1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_paint1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_root_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_root_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/copy_paste_merged/copy_paste_merged_tmask1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_Layer 1(pasted)_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_Layer 1(pasted)_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_Layer 1(pasted)_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_Layer 2(pasted)_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_Layer 2(pasted)_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_Layer 2(pasted)_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_blur1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_blur1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_blur1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_clone1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_clone1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_paint1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_paint1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_paint1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_root_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_root_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/cut_paste/cut_paste_tmask1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/dilate_selection/dilate_selection_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/erode_selection/erode_selection_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/feather_selection/feather_selection_blur1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/feather_selection/feather_selection_blur1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/feather_selection/feather_selection_blur1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/feather_selection/feather_selection_clone1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/feather_selection/feather_selection_clone1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/feather_selection/feather_selection_paint1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/feather_selection/feather_selection_paint1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/feather_selection/feather_selection_paint1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/feather_selection/feather_selection_root_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/feather_selection/feather_selection_root_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/feather_selection/feather_selection_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/feather_selection/feather_selection_tmask1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_background_with_selection/fill_background_with_selection_blur1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_background_with_selection/fill_background_with_selection_blur1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_background_with_selection/fill_background_with_selection_blur1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_background_with_selection/fill_background_with_selection_clone1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_background_with_selection/fill_background_with_selection_clone1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_background_with_selection/fill_background_with_selection_paint1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_background_with_selection/fill_background_with_selection_paint1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_background_with_selection/fill_background_with_selection_paint1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_background_with_selection/fill_background_with_selection_root_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_background_with_selection/fill_background_with_selection_root_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_background_with_selection/fill_background_with_selection_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_background_with_selection/fill_background_with_selection_tmask1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_with_selection/fill_foreground_with_selection_blur1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_with_selection/fill_foreground_with_selection_blur1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_with_selection/fill_foreground_with_selection_blur1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_with_selection/fill_foreground_with_selection_clone1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_with_selection/fill_foreground_with_selection_clone1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_with_selection/fill_foreground_with_selection_paint1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_with_selection/fill_foreground_with_selection_paint1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_with_selection/fill_foreground_with_selection_paint1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_with_selection/fill_foreground_with_selection_root_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_with_selection/fill_foreground_with_selection_root_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_with_selection/fill_foreground_with_selection_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_with_selection/fill_foreground_with_selection_tmask1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_without_selection/fill_foreground_without_selection_blur1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_without_selection/fill_foreground_without_selection_blur1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_without_selection/fill_foreground_without_selection_blur1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_without_selection/fill_foreground_without_selection_clone1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_without_selection/fill_foreground_without_selection_clone1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_without_selection/fill_foreground_without_selection_paint1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_without_selection/fill_foreground_without_selection_paint1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_without_selection/fill_foreground_without_selection_paint1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_without_selection/fill_foreground_without_selection_root_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_without_selection/fill_foreground_without_selection_root_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_foreground_without_selection/fill_foreground_without_selection_tmask1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_pattern_with_selection/fill_pattern_with_selection_blur1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_pattern_with_selection/fill_pattern_with_selection_blur1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_pattern_with_selection/fill_pattern_with_selection_blur1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_pattern_with_selection/fill_pattern_with_selection_clone1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_pattern_with_selection/fill_pattern_with_selection_clone1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_pattern_with_selection/fill_pattern_with_selection_paint1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_pattern_with_selection/fill_pattern_with_selection_paint1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_pattern_with_selection/fill_pattern_with_selection_paint1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_pattern_with_selection/fill_pattern_with_selection_root_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_pattern_with_selection/fill_pattern_with_selection_root_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_pattern_with_selection/fill_pattern_with_selection_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/fill_pattern_with_selection/fill_pattern_with_selection_tmask1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/grow_selection/grow_selection_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/initial/initial_blur1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/initial/initial_blur1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/initial/initial_blur1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/initial/initial_clone1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/initial/initial_clone1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/initial/initial_paint1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/initial/initial_paint1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/initial/initial_paint1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/initial/initial_root_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/initial/initial_root_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/initial/initial_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/initial/initial_tmask1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/invert_selection/invert_selection_blur1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/invert_selection/invert_selection_blur1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/invert_selection/invert_selection_blur1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/invert_selection/invert_selection_clone1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/invert_selection/invert_selection_clone1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/invert_selection/invert_selection_paint1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/invert_selection/invert_selection_paint1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/invert_selection/invert_selection_paint1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/invert_selection/invert_selection_root_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/invert_selection/invert_selection_root_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/invert_selection/invert_selection_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/invert_selection/invert_selection_tmask1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/resize_to_selection/resize_to_selection_blur1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/resize_to_selection/resize_to_selection_blur1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/resize_to_selection/resize_to_selection_blur1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/resize_to_selection/resize_to_selection_clone1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/resize_to_selection/resize_to_selection_clone1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/resize_to_selection/resize_to_selection_paint1_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/resize_to_selection/resize_to_selection_paint1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/resize_to_selection/resize_to_selection_paint1_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/resize_to_selection/resize_to_selection_root_original.png
A  +-    --    krita/ui/tests/data/selection_manager_test/resize_to_selection/resize_to_selection_root_projection.png
A  +-    --    krita/ui/tests/data/selection_manager_test/resize_to_selection/resize_to_selection_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/resize_to_selection/resize_to_selection_tmask1_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/select_all/select_all_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/shrink_selection_locked/shrink_selection_locked_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/shrink_selection_unlocked/shrink_selection_unlocked_selection_paintDevice.png
A  +-    --    krita/ui/tests/data/selection_manager_test/smooth_selection/smooth_selection_selection_paintDevice.png
A  +393  -0    krita/ui/tests/kis_selection_manager_test.cpp     [License: GPL (v2+)]
A  +53   -0    krita/ui/tests/kis_selection_manager_test.h     [License: GPL (v2+)]

http://commits.kde.org/calligra/bd78ce5e1ef4b1a9cda06a315bbcf0c1d9efb9c9