diff --git a/src/renderer/sw_engine/tvgSwRenderer.cpp b/src/renderer/sw_engine/tvgSwRenderer.cpp index 1ee24db9..9e826e37 100644 --- a/src/renderer/sw_engine/tvgSwRenderer.cpp +++ b/src/renderer/sw_engine/tvgSwRenderer.cpp @@ -123,8 +123,7 @@ struct SwShapeTask : SwTask auto visibleFill = false; //This checks also for the case, if the invisible shape turned to visible by alpha. - auto prepareShape = false; - if (!shapePrepared(&shape) && (flags & RenderUpdateFlag::Color)) prepareShape = true; + auto prepareShape = !shapePrepared(&shape) && flags & (RenderUpdateFlag::Color | RenderUpdateFlag::Gradient); //Shape if (flags & (RenderUpdateFlag::Path | RenderUpdateFlag::Transform) || prepareShape) { @@ -185,6 +184,7 @@ struct SwShapeTask : SwTask err: bbox.reset(); shapeReset(&shape); + rleReset(shape.strokeRle); shapeDelOutline(&shape, mpool, tid); } diff --git a/src/renderer/sw_engine/tvgSwShape.cpp b/src/renderer/sw_engine/tvgSwShape.cpp index a25ae967..0dea226d 100644 --- a/src/renderer/sw_engine/tvgSwShape.cpp +++ b/src/renderer/sw_engine/tvgSwShape.cpp @@ -461,7 +461,6 @@ void shapeDelOutline(SwShape* shape, SwMpool* mpool, uint32_t tid) void shapeReset(SwShape* shape) { rleReset(shape->rle); - rleReset(shape->strokeRle); shape->fastTrack = false; shape->bbox.reset(); }