SwShape shape;
const Shape* sdata;
SwSize clip;
- const Matrix* transform;
+ Matrix* transform;
RenderUpdateFlag flags;
future<void> progress;
};
if (!task) return true;
if (task->progress.valid()) task->progress.get();
shapeFree(task->shape);
+ if (task->transform) free(task->transform);
free(task);
return true;
}
task->sdata = &sdata;
task->clip = {static_cast<SwCoord>(surface.w), static_cast<SwCoord>(surface.h)};
- if (transform) task->transform = &transform->m;
- else task->transform = nullptr;
+ if (transform) {
+ if (!task->transform) task->transform = static_cast<Matrix*>(malloc(sizeof(Matrix)));
+ assert(task->transform);
+ *task->transform = transform->m;
+ } else {
+ if (task->transform) free(task->transform);
+ task->transform = nullptr;
+ }
task->flags = flags;
++pt;
for(uint32_t i = 1; i < outline->ptsCnt; ++i, ++pt) {
- assert(pt);
if (xMin > pt->x) xMin = pt->x;
if (xMax < pt->x) xMax = pt->x;
if (yMin > pt->y) yMin = pt->y;
{
shapeDelOutline(shape);
rleFree(shape.rle);
-
shapeDelFill(shape);
if (shape.stroke) {