Skip to content

Fix artifacts when changing transform mask continuously

The patch implements multiple things:

  1. Makes static cache storage in the transform mask thread-safe and encapsulated in a single structure.

  2. Makes sure that KisRecalculateTransformMaskJob::run() cannot run twice for the same parameters. Now it is governed by m_mask->staticImageCacheIsValid() check in the beginnig of the function.

    The multiple invocations could happen due to concurrent calls to KisTransformMask::slotDelayedStaticUpdate() (by the timer) and KisTransformMask::threadSafeForceStaticImageUpdate() (by an undo command). That could happen in the beginning of the transformation stroke. Now the two calls will be compressed by the cache validity check.

  3. InplaceTransformStrokeStrategy does a better job in maintaining updates for the final lod0 update of the lodN stroke.

  4. Implements a unittest for testing the inplace stroke strategy. Alas its results are not very stable, so it is marked as broken for now.

BUG:475745

Merge request reports