Regression: AutoKey now causes Krita deadlock
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.