Skip to content

Regression: AutoKey now causes Krita deadlock

Emmet O'Neill requested to merge emmetoneill/krita:bug453682 into master

As described in BUG:453682, commit b3b33ae2 has introduced a regression which causes the AutoKey feature to consistently deadlock during regular use.

After spending some time looking over it with Eoin, I believe this is caused by the fact the KisTransaction inside of KisIndirectPaintingSupport::mergeToLayerImpl eventually causes a call to setDirty when the AutoKey feature is enabled and the user draws after switching frames. (In short, when AutoKey is on, the transaction creates and adds a keyframe to the keyframe channel, which emits a sigChannelUpdated signal, causing the node to call setDirty in KisNode::handleKeyframeChannelUpdate, which is blocked by the original job.)

Right now I'm thinking that we probably need to move the automatic creation of new keyframe outside of KisTransactionData::init. Alternatively, Eoin is suggesting that we replace the blocking call to setDirty with a separate job.

Edited by Emmet O'Neill

Merge request reports