Summary: | [regression] Using move tool with lab 16 bit float is slow, and hangs krita when enabling instant preview | ||
---|---|---|---|
Product: | [Applications] krita | Reporter: | Raghavendra kamath <raghu> |
Component: | Tools/Move | Assignee: | Krita Bugs <krita-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/kde/krita/commit/435a5dbf3dfa5da450c517b77a162498b34fdf5b | Version Fixed In: | |
Sentry Crash Report: |
Description
Raghavendra kamath
2019-08-12 08:17:45 UTC
Git commit dcdef2ea1163a5b764e4bb9acebed95a0c52101f by Dmitry Kazakov. Committed on 12/08/2019 at 13:45. Pushed by dkazakov into branch 'master'. Fix lags in Move Tool when using tablet device Now the Move Tool uses the same FSP-limiting compression as the freehand tool does. The relevant code has been moved into a special class KisAsyncronousStrokeUpdateHelper, which implements a logic of issuing threshold events. Bascially, all the sources of event (tablet move and async update from KisAsyncronousStrokeUpdateHelper) now try to initiate a canvas update. If enough time has passed and previous updates has finished, then a new update is started. One more important change: now actual layer offset change is executed in the same exclusive job as the updates (with limited FPS), therefore, it avoids garbage-looking leftovers of the intemediate move states. M +5 -0 libs/image/kis_image.cc M +8 -0 libs/image/kis_image.h M +2 -0 libs/image/kis_image_interfaces.h M +5 -0 libs/image/kis_update_scheduler.cpp M +2 -0 libs/image/kis_update_scheduler.h M +1 -0 libs/ui/CMakeLists.txt M +3 -1 libs/ui/tests/FreehandStrokeBenchmark.cpp M +2 -1 libs/ui/tests/KisPaintOnTransparencyMaskTest.cpp M +2 -1 libs/ui/tests/freehand_stroke_test.cpp A +76 -0 libs/ui/tool/KisAsyncronousStrokeUpdateHelper.cpp [License: GPL (v2+)] A +85 -0 libs/ui/tool/KisAsyncronousStrokeUpdateHelper.h [License: GPL (v2+)] M +2 -1 libs/ui/tool/kis_figure_painting_tool_helper.cpp M +9 -20 libs/ui/tool/kis_tool_freehand_helper.cpp M +0 -1 libs/ui/tool/kis_tool_freehand_helper.h M +4 -2 libs/ui/tool/strokes/freehand_stroke.cpp M +0 -23 libs/ui/tool/strokes/freehand_stroke.h M +45 -11 libs/ui/tool/strokes/move_stroke_strategy.cpp M +16 -2 libs/ui/tool/strokes/move_stroke_strategy.h M +3 -2 libs/ui/widgets/kis_preset_live_preview_view.cpp M +15 -0 plugins/tools/basictools/kis_tool_move.cc M +3 -0 plugins/tools/basictools/kis_tool_move.h https://invent.kde.org/kde/krita/commit/dcdef2ea1163a5b764e4bb9acebed95a0c52101f Git commit 435a5dbf3dfa5da450c517b77a162498b34fdf5b by Dmitry Kazakov. Committed on 14/08/2019 at 16:21. Pushed by dkazakov into branch 'krita/4.2'. Fix lags in Move Tool when using tablet device Now the Move Tool uses the same FSP-limiting compression as the freehand tool does. The relevant code has been moved into a special class KisAsyncronousStrokeUpdateHelper, which implements a logic of issuing threshold events. Bascially, all the sources of event (tablet move and async update from KisAsyncronousStrokeUpdateHelper) now try to initiate a canvas update. If enough time has passed and previous updates has finished, then a new update is started. One more important change: now actual layer offset change is executed in the same exclusive job as the updates (with limited FPS), therefore, it avoids garbage-looking leftovers of the intemediate move states. M +5 -0 libs/image/kis_image.cc M +8 -0 libs/image/kis_image.h M +2 -0 libs/image/kis_image_interfaces.h M +5 -0 libs/image/kis_update_scheduler.cpp M +2 -0 libs/image/kis_update_scheduler.h M +1 -0 libs/ui/CMakeLists.txt M +3 -1 libs/ui/tests/FreehandStrokeBenchmark.cpp M +2 -1 libs/ui/tests/KisPaintOnTransparencyMaskTest.cpp M +2 -1 libs/ui/tests/freehand_stroke_test.cpp A +76 -0 libs/ui/tool/KisAsyncronousStrokeUpdateHelper.cpp [License: GPL (v2+)] A +85 -0 libs/ui/tool/KisAsyncronousStrokeUpdateHelper.h [License: GPL (v2+)] M +2 -1 libs/ui/tool/kis_figure_painting_tool_helper.cpp M +9 -20 libs/ui/tool/kis_tool_freehand_helper.cpp M +0 -1 libs/ui/tool/kis_tool_freehand_helper.h M +4 -2 libs/ui/tool/strokes/freehand_stroke.cpp M +0 -23 libs/ui/tool/strokes/freehand_stroke.h M +45 -11 libs/ui/tool/strokes/move_stroke_strategy.cpp M +16 -2 libs/ui/tool/strokes/move_stroke_strategy.h M +3 -2 libs/ui/widgets/kis_preset_live_preview_view.cpp M +15 -0 plugins/tools/basictools/kis_tool_move.cc M +3 -0 plugins/tools/basictools/kis_tool_move.h https://invent.kde.org/kde/krita/commit/435a5dbf3dfa5da450c517b77a162498b34fdf5b |