Diffusion Krita b4951fc120f7

Fix threading issue in KisShapeLayer::transform()

Authored by dkazakov on Feb 5 2020, 5:05 PM.

Description

Fix threading issue in KisShapeLayer::transform()

The transformation itself should happen in the GUI thread, not in the
worker thread. Therefore we should use Qt::BlockingQueuedConnection.
It is not entirely safe (it can theoretically cause deadlocks), but it
is the only way how we can resolve the issue with keeping GUI thread the
only writer to the shapes.

The patch also fixes the problem in KisShapeLayerCanvas::forceRepaint() and
KisShapeLayerCanvas::forceRepaintWithHiddenAreas(), which should also
initiate the update in the GUI thread, not in the worker thread.

CCBUG:417016

Details

Committed
dkazakovFeb 5 2020, 5:08 PM
Parents
R37:f3ec7770e70f: Port away from deprecated QFontMetrics::width
Branches
Unknown
Tags
Unknown