diff options
author | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2018-03-20 14:24:10 +0100 |
---|---|---|
committer | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2018-03-23 08:18:01 +0000 |
commit | d5b9a4ebc425b4ba2b4daaba410dd352f06f849a (patch) | |
tree | ab96301f2cdfab65d54e61800e8c5cdef709733a /src/gui/painting/qpainterpath.cpp | |
parent | 915fa58060bbccebc993a1edfbba1d2618117750 (diff) |
Fix: avoid realloc when adding primitives to painterpath
Calling reserve() for every primitive added would defeat QVector's
over-allocation strategy to avoid reallocs.
Task-number: QTBUG-66677
Change-Id: I7bdafdfa4d3ef60b00752c11e1b803abba773658
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/gui/painting/qpainterpath.cpp')
-rw-r--r-- | src/gui/painting/qpainterpath.cpp | 7 |
1 files changed, 0 insertions, 7 deletions
diff --git a/src/gui/painting/qpainterpath.cpp b/src/gui/painting/qpainterpath.cpp index 27bd2e59e6..2574a00838 100644 --- a/src/gui/painting/qpainterpath.cpp +++ b/src/gui/painting/qpainterpath.cpp @@ -1033,7 +1033,6 @@ void QPainterPath::addRect(const QRectF &r) bool first = d_func()->elements.size() < 2; - d_func()->elements.reserve(d_func()->elements.size() + 5); moveTo(r.x(), r.y()); Element l1 = { r.x() + r.width(), r.y(), LineToElement }; @@ -1071,8 +1070,6 @@ void QPainterPath::addPolygon(const QPolygonF &polygon) ensureData(); detach(); - d_func()->elements.reserve(d_func()->elements.size() + polygon.size()); - moveTo(polygon.constFirst()); for (int i=1; i<polygon.size(); ++i) { Element elm = { polygon.at(i).x(), polygon.at(i).y(), LineToElement }; @@ -1115,9 +1112,7 @@ void QPainterPath::addEllipse(const QRectF &boundingRect) ensureData(); detach(); - Q_D(QPainterPath); bool first = d_func()->elements.size() < 2; - d->elements.reserve(d->elements.size() + 13); QPointF pts[12]; int point_count; @@ -1294,7 +1289,6 @@ void QPainterPath::addRegion(const QRegion ®ion) ensureData(); detach(); - d_func()->elements.reserve(region.rectCount() * 5); for (const QRect &rect : region) addRect(rect); } @@ -2463,7 +2457,6 @@ QDataStream &operator>>(QDataStream &s, QPainterPath &p) Q_ASSERT(p.d_func()->elements.at(0).type == QPainterPath::MoveToElement); p.d_func()->elements.clear(); } - p.d_func()->elements.reserve(p.d_func()->elements.size() + size); for (int i=0; i<size; ++i) { int type; double x, y; |