.
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
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
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
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
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