Bug 473853

Summary: Artifacts when dragging a layer under a filter that produces new pixels outside the paint layer contents rect
Product: [Applications] krita Reporter: Deif Lou <ginoba>
Component: Filter LayersAssignee: Dmitry Kazakov <dimula73>
Status: RESOLVED FIXED    
Severity: normal CC: dimula73
Priority: NOR Keywords: regression
Version: git master (please specify the git hash!)   
Target Milestone: ---   
Platform: Manjaro   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: artifacts

Description Deif Lou 2023-08-28 12:57:28 UTC
Created attachment 161239 [details]
artifacts

SUMMARY
If we put a filter layer on top of some other layers, some artifacts appear when moving those bottom layers if the filter produces new pixels and extends the contents rect (blur filters, phong bumpmap, pixelize, etc.)

STEPS TO REPRODUCE
1. open a 1 layer image
2. put a gaussian filter on top of the layer with, say, 50px radius
3. move the layer below with the move tool

OBSERVED RESULT
See atachment. some traces are left behind, not erased.

EXPECTED RESULT
No traces.

SOFTWARE/OS VERSIONS
Docker Image
Comment 1 Deif Lou 2023-08-30 19:37:18 UTC
Same thing seems to happen if I put to paint layers in a group and apply a filter mask to the group.
Comment 2 Dmitry Kazakov 2023-08-31 11:50:31 UTC
Git commit 67c02bc306dcb16165e2e8475239cc02c5e1a3cc by Dmitry Kazakov.
Committed on 31/08/2023 at 13:50.
Pushed by dkazakov into branch 'master'.

[not for 5.2.0] Fix artifacts when moving a layer under a blur adjustment layer

Basically, KisRefreshSubtreeWalker should explicitly reset change rect
**only** when used in standalone mode. Inside KisFullRefreshWalker
mode the change rect is calculated in advance by the parent walker.

M  +1    -1    libs/image/kis_full_refresh_walker.h
M  +5    -2    libs/image/kis_refresh_subtree_walker.h

https://invent.kde.org/graphics/krita/-/commit/67c02bc306dcb16165e2e8475239cc02c5e1a3cc
Comment 3 Dmitry Kazakov 2024-02-28 18:09:51 UTC
Git commit a0951dd434346fe96ef4f6afdfaa9d4d7bf41187 by Dmitry Kazakov.
Committed on 28/02/2024 at 12:37.
Pushed by dkazakov into branch 'kazakov/for-5.2'.

[not for 5.2.0] Fix artifacts when moving a layer under a blur adjustment layer

Basically, KisRefreshSubtreeWalker should explicitly reset change rect
**only** when used in standalone mode. Inside KisFullRefreshWalker
mode the change rect is calculated in advance by the parent walker.

M  +1    -1    libs/image/kis_full_refresh_walker.h
M  +5    -2    libs/image/kis_refresh_subtree_walker.h

https://invent.kde.org/graphics/krita/-/commit/a0951dd434346fe96ef4f6afdfaa9d4d7bf41187