Bug 316182

Summary: Double click on the canvas with the Fill tool crash
Product: [Applications] krita Reporter: David REVOY <info>
Component: ToolsAssignee: Krita Bugs <krita-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: somsubhra.bairi
Priority: NOR    
Version: git master (please specify the git hash!)   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:

Description David REVOY 2013-03-05 17:49:46 UTC
Double click on the canvas with the Fill tool crash Krita. 
Small double click can happen often with a stylus , but it reproducible here with mouse as well.

To reproduce : select the Fill tool, double click on canvas ( as if you want to do 2 filling actions )
Result : crash.
Comment 1 Dmitry Kazakov 2013-03-16 16:29:10 UTC
Git commit 16c74082295ce843acea0b07d72344dd5c1c46c2 by Dmitry Kazakov.
Committed on 11/03/2013 at 23:19.
Pushed by dkazakov into branch 'master'.

Ported Fill Tool to strokes

This patch does 3 major things:
1) Ports the tool to strokes framework

2) Adds KisSimpleProcessingVisitor class which makes creation of new
   processings easier (Lukas can use it now in his branch).

3) Adds lazy fetching of the "initial" image set for the qimage-based
   tests. Now this set is shared by all the unittests, so there is no
   need to store copies of it.
CCMAIL:lukast.dev@gmail.com

M  +8    -1    krita/CMakeLists.txt
M  +1    -3    krita/benchmarks/CMakeLists.txt
M  +1    -0    krita/image/CMakeLists.txt
M  +2    -62   krita/image/processing/kis_crop_processing_visitor.cpp
M  +4    -14   krita/image/processing/kis_crop_processing_visitor.h
A  +88   -0    krita/image/processing/kis_simple_processing_visitor.cpp     [License: GPL (v2+)]
C  +9    -14   krita/image/processing/kis_simple_processing_visitor.h [from: krita/image/processing/kis_crop_processing_visitor.h - 074% similarity]
M  +2    -3    krita/image/tests/CMakeLists.txt
D  +-    --    krita/image/tests/data/perspective_worker_test/initial/initial_blur1_original.png
D  +-    --    krita/image/tests/data/perspective_worker_test/initial/initial_blur1_paintDevice.png
D  +-    --    krita/image/tests/data/perspective_worker_test/initial/initial_blur1_projection.png
D  +-    --    krita/image/tests/data/perspective_worker_test/initial/initial_clone1_original.png
D  +-    --    krita/image/tests/data/perspective_worker_test/initial/initial_clone1_projection.png
D  +-    --    krita/image/tests/data/perspective_worker_test/initial/initial_paint1_original.png
D  +-    --    krita/image/tests/data/perspective_worker_test/initial/initial_paint1_paintDevice.png
D  +-    --    krita/image/tests/data/perspective_worker_test/initial/initial_paint1_projection.png
D  +-    --    krita/image/tests/data/perspective_worker_test/initial/initial_root_original.png
D  +-    --    krita/image/tests/data/perspective_worker_test/initial/initial_root_projection.png
D  +-    --    krita/image/tests/data/perspective_worker_test/initial/initial_tmask1_paintDevice.png
D  +-    --    krita/image/tests/data/processings/initial/initial_blur1_original.png
D  +-    --    krita/image/tests/data/processings/initial/initial_blur1_projection.png
D  +-    --    krita/image/tests/data/processings/initial/initial_clone1_original.png
D  +-    --    krita/image/tests/data/processings/initial/initial_clone1_projection.png
D  +-    --    krita/image/tests/data/processings/initial/initial_paint1_projection.png
D  +-    --    krita/image/tests/data/processings/initial/initial_root_original.png
D  +-    --    krita/image/tests/data/processings/initial/initial_root_projection.png
M  +1    -1    krita/image/tests/kis_perspective_transform_worker_test.cpp
M  +2    -2    krita/image/tests/kis_processings_test.cpp
M  +2    -1    krita/image/tiles3/tests/CMakeLists.txt
M  +2    -1    krita/plugins/filters/tests/CMakeLists.txt
M  +1    -1    krita/plugins/formats/exr/tests/CMakeLists.txt
M  +1    -1    krita/plugins/formats/jpeg/tests/CMakeLists.txt
M  +1    -1    krita/plugins/formats/png/tests/CMakeLists.txt
M  +1    -1    krita/plugins/formats/ppm/tests/CMakeLists.txt
M  +1    -1    krita/plugins/formats/psd/tests/CMakeLists.txt
M  +1    -1    krita/plugins/formats/tiff/tests/CMakeLists.txt
M  +1    -1    krita/plugins/formats/xcf/tests/CMakeLists.txt
M  +1    -1    krita/plugins/paintops/libbrush/tests/CMakeLists.txt
M  +1    -1    krita/plugins/paintops/mypaint/tests/CMakeLists.txt
M  +1    -0    krita/plugins/tools/defaulttools/CMakeLists.txt
M  +45   -111  krita/plugins/tools/defaulttools/kis_tool_fill.cc
M  +7    -12   krita/plugins/tools/defaulttools/kis_tool_fill.h
A  +114  -0    krita/plugins/tools/defaulttools/processings/fill_processing_visitor.cpp     [License: GPL (v2+)]
A  +59   -0    krita/plugins/tools/defaulttools/processings/fill_processing_visitor.h     [License: GPL (v2+)]
M  +7    -2    krita/plugins/tools/defaulttools/tests/CMakeLists.txt
A  +-    --    krita/plugins/tools/defaulttools/tests/data/fill_processing/fill_color_have_selection/fill_color_have_selection_paint1_original.png
A  +-    --    krita/plugins/tools/defaulttools/tests/data/fill_processing/fill_color_have_selection_selection_only/fill_color_have_selection_selection_only_paint1_original.png
A  +-    --    krita/plugins/tools/defaulttools/tests/data/fill_processing/fill_color_no_selection/fill_color_no_selection_paint1_original.png
A  +-    --    krita/plugins/tools/defaulttools/tests/data/fill_processing/fill_color_no_selection_selection_only/fill_color_no_selection_selection_only_paint1_original.png
A  +-    --    krita/plugins/tools/defaulttools/tests/data/fill_processing/fill_pattern_have_selection/fill_pattern_have_selection_paint1_original.png
A  +-    --    krita/plugins/tools/defaulttools/tests/data/fill_processing/fill_pattern_have_selection_selection_only/fill_pattern_have_selection_selection_only_paint1_original.png
A  +-    --    krita/plugins/tools/defaulttools/tests/data/fill_processing/fill_pattern_no_selection/fill_pattern_no_selection_paint1_original.png
A  +-    --    krita/plugins/tools/defaulttools/tests/data/fill_processing/fill_pattern_no_selection_selection_only/fill_pattern_no_selection_selection_only_paint1_original.png
A  +144  -0    krita/plugins/tools/defaulttools/tests/fill_processing_visitor_test.cpp     [License: GPL (v2+)]
A  +39   -0    krita/plugins/tools/defaulttools/tests/fill_processing_visitor_test.h     [License: GPL (v2+)]
R  +-    --    krita/sdk/tests/data/HR_SketchPaper_01.pat [from: krita/ui/tests/data/HR_SketchPaper_01.pat - 100% similarity]
A  +-    --    krita/sdk/tests/data/autobrush_300px.kpp
A  +-    --    krita/sdk/tests/data/hakonepa.png
A  +-    --    krita/sdk/tests/data/initial_with_selection/initial_with_selection_blur1_original.png
C  +-    --    krita/sdk/tests/data/initial_with_selection/initial_with_selection_blur1_paintDevice.png [from: krita/image/tests/data/processings/initial/initial_blur1_paintDevice.png - 100% similarity]
A  +-    --    krita/sdk/tests/data/initial_with_selection/initial_with_selection_blur1_projection.png
A  +-    --    krita/sdk/tests/data/initial_with_selection/initial_with_selection_clone1_original.png
A  +-    --    krita/sdk/tests/data/initial_with_selection/initial_with_selection_clone1_projection.png
C  +-    --    krita/sdk/tests/data/initial_with_selection/initial_with_selection_paint1_original.png [from: krita/image/tests/data/processings/initial/initial_paint1_original.png - 100% similarity]
R  +-    --    krita/sdk/tests/data/initial_with_selection/initial_with_selection_paint1_paintDevice.png [from: krita/image/tests/data/processings/initial/initial_paint1_paintDevice.png - 100% similarity]
A  +-    --    krita/sdk/tests/data/initial_with_selection/initial_with_selection_paint1_projection.png
A  +-    --    krita/sdk/tests/data/initial_with_selection/initial_with_selection_root_original.png
A  +-    --    krita/sdk/tests/data/initial_with_selection/initial_with_selection_root_projection.png
A  +-    --    krita/sdk/tests/data/initial_with_selection/initial_with_selection_selection_paintDevice.png
C  +-    --    krita/sdk/tests/data/initial_with_selection/initial_with_selection_tmask1_paintDevice.png [from: krita/image/tests/data/processings/initial/initial_tmask1_paintDevice.png - 100% similarity]
A  +-    --    krita/sdk/tests/data/initial_with_selection_with_shape/initial_with_selection_with_shape_blur1_original.png
R  +-    --    krita/sdk/tests/data/initial_with_selection_with_shape/initial_with_selection_with_shape_blur1_paintDevice.png [from: krita/image/tests/data/processings/initial/initial_blur1_paintDevice.png - 100% similarity]
A  +-    --    krita/sdk/tests/data/initial_with_selection_with_shape/initial_with_selection_with_shape_blur1_projection.png
A  +-    --    krita/sdk/tests/data/initial_with_selection_with_shape/initial_with_selection_with_shape_clone1_original.png
A  +-    --    krita/sdk/tests/data/initial_with_selection_with_shape/initial_with_selection_with_shape_clone1_projection.png
C  +-    --    krita/sdk/tests/data/initial_with_selection_with_shape/initial_with_selection_with_shape_paint1_original.png [from: krita/image/tests/data/processings/initial/initial_paint1_original.png - 100% similarity]
R  +-    --    krita/sdk/tests/data/initial_with_selection_with_shape/initial_with_selection_with_shape_paint1_paintDevice.png [from: krita/image/tests/data/processings/initial/initial_paint1_original.png - 100% similarity]
A  +-    --    krita/sdk/tests/data/initial_with_selection_with_shape/initial_with_selection_with_shape_paint1_projection.png
A  +-    --    krita/sdk/tests/data/initial_with_selection_with_shape/initial_with_selection_with_shape_root_original.png
A  +-    --    krita/sdk/tests/data/initial_with_selection_with_shape/initial_with_selection_with_shape_root_projection.png
A  +-    --    krita/sdk/tests/data/initial_with_selection_with_shape/initial_with_selection_with_shape_shape_original.png
A  +-    --    krita/sdk/tests/data/initial_with_selection_with_shape/initial_with_selection_with_shape_shape_projection.png
R  +-    --    krita/sdk/tests/data/initial_with_selection_with_shape/initial_with_selection_with_shape_tmask1_paintDevice.png [from: krita/image/tests/data/processings/initial/initial_tmask1_paintDevice.png - 100% similarity]
M  +22   -6    krita/sdk/tests/qimage_based_test.h
M  +5    -5    krita/sdk/tests/stroke_testing_utils.cpp
M  +23   -0    krita/sdk/tests/testutil.h
M  +10   -4    krita/sdk/tests/ui_manager_test.h
M  +1    -2    krita/ui/tests/CMakeLists.txt
M  +1    -1    krita/ui/tests/kis_node_manager_test.cpp
M  +1    -1    krita/ui/tests/kis_zoom_and_pan_test.cpp
M  +15   -0    krita/ui/tool/kis_resources_snapshot.cpp
M  +5    -0    krita/ui/tool/kis_resources_snapshot.h

http://commits.kde.org/calligra/16c74082295ce843acea0b07d72344dd5c1c46c2
Comment 2 David REVOY 2013-03-16 16:41:44 UTC
Wow, so much files changed for this bug/crash. Thanks !