Bug 474138 - Onion skins are not updated properly when auto-keyframe mode is on
Summary: Onion skins are not updated properly when auto-keyframe mode is on
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Animation (show other bugs)
Version: git master (please specify the git hash!)
Platform: Other Other
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords: regression, release_blocker
Depends on:
Blocks:
 
Reported: 2023-09-04 13:29 UTC by Dmitry Kazakov
Modified: 2023-09-07 11:18 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dmitry Kazakov 2023-09-04 13:29:49 UTC
STEPS TO REPRODUCE
0. Enable Onion Skins for the layer
1. Enable auto-keyframe feature (any mode)
2. Draw a set of sequential frames. One smaller than the previous.
3. The updates become incorrect with time and the "older" skins will not be updated anymore.

Screenshot: https://pasteboard.co/YuMlWojXgKuS.png

The bug might be related to https://bugs.kde.org/show_bug.cgi?id=473288, but I'm not very sure, because the reporter in 473288 experience persistent corruption of the layer data, not temporary like in this bug.
Comment 1 Bug Janitor Service 2023-09-06 16:16:51 UTC
A possibly relevant merge request was started @ https://invent.kde.org/graphics/krita/-/merge_requests/1932
Comment 2 Dmitry Kazakov 2023-09-07 10:48:42 UTC
Git commit 0b2804491a75f0414f1e3aa386c6fa92daf2f45c by Dmitry Kazakov.
Committed on 07/09/2023 at 12:46.
Pushed by dkazakov into branch 'krita/5.2'.

Fix updates on autokeyframing with onion skins enabled

When we create a new frame, we may change a set of onion skins
that should be displayed on screen. Therefore, we should issue
a set of specific updates for such a case.

The patch adds a set of more granular signals to KisKeyframeChannel,
so that the addition and removal of the keyframes can be tracked
properly.

The patch also fixes the issue with sigRemovingKeyframe() being
emitted **after** the frame was actually removed from the raster
channel.

M  +21   -15   libs/image/kis_keyframe_channel.cpp
M  +21   -8    libs/image/kis_keyframe_channel.h
M  +22   -4    libs/image/kis_node.cpp
M  +6    -1    libs/image/kis_node.h
M  +101  -2    libs/image/kis_onion_skin_compositor.cpp
M  +3    -0    libs/image/kis_onion_skin_compositor.h
M  +67   -5    libs/image/kis_paint_layer.cc
M  +4    -0    libs/image/kis_paint_layer.h
M  +3    -1    libs/image/kis_raster_keyframe_channel.cpp
M  +0    -18   libs/image/kis_scalar_keyframe_channel.cpp
M  +0    -3    libs/image/kis_scalar_keyframe_channel.h
M  +1    -1    libs/image/tests/kis_keyframing_test.cpp
M  +1    -1    plugins/dockers/animation/timeline_node_list_keeper.cpp
M  +1    -1    plugins/tools/tool_transform2/kis_animated_transform_parameters.cpp

https://invent.kde.org/graphics/krita/-/commit/0b2804491a75f0414f1e3aa386c6fa92daf2f45c
Comment 3 Dmitry Kazakov 2023-09-07 11:18:45 UTC
Git commit 5e4b1ab10d1afebff61487e1916f93ee818eec64 by Dmitry Kazakov.
Committed on 07/09/2023 at 12:53.
Pushed by dkazakov into branch 'master'.

Fix updates on autokeyframing with onion skins enabled

When we create a new frame, we may change a set of onion skins
that should be displayed on screen. Therefore, we should issue
a set of specific updates for such a case.

The patch adds a set of more granular signals to KisKeyframeChannel,
so that the addition and removal of the keyframes can be tracked
properly.

The patch also fixes the issue with sigRemovingKeyframe() being
emitted **after** the frame was actually removed from the raster
channel.

M  +21   -15   libs/image/kis_keyframe_channel.cpp
M  +21   -8    libs/image/kis_keyframe_channel.h
M  +22   -4    libs/image/kis_node.cpp
M  +6    -1    libs/image/kis_node.h
M  +101  -2    libs/image/kis_onion_skin_compositor.cpp
M  +3    -0    libs/image/kis_onion_skin_compositor.h
M  +67   -5    libs/image/kis_paint_layer.cc
M  +4    -0    libs/image/kis_paint_layer.h
M  +3    -1    libs/image/kis_raster_keyframe_channel.cpp
M  +0    -18   libs/image/kis_scalar_keyframe_channel.cpp
M  +0    -3    libs/image/kis_scalar_keyframe_channel.h
M  +1    -1    libs/image/tests/kis_keyframing_test.cpp
M  +1    -1    plugins/dockers/animation/timeline_node_list_keeper.cpp
M  +1    -1    plugins/tools/tool_transform2/kis_animated_transform_parameters.cpp

https://invent.kde.org/graphics/krita/-/commit/5e4b1ab10d1afebff61487e1916f93ee818eec64