diff options
author | Sérgio Martins <sergio.martins@kdab.com> | 2015-06-01 14:05:41 +0100 |
---|---|---|
committer | Sérgio Martins <sergio.martins@kdab.com> | 2015-06-29 19:31:59 +0000 |
commit | 20147fae60fd062788c51b058ebb70b33d7fd664 (patch) | |
tree | e677f42184ea22f1af510814d11f7afdd6fd027f /src/widgets/graphicsview/qgraphicsview.cpp | |
parent | 29e88fd8f066c14a405a52bbfe3715dc3e5e891f (diff) |
Use QVector::reserve() all over the place.
Reduces internal memory fragmentation.
The search criteria was:
QVector::append(), QVector::push_back(), QVector::operator<<()
and QVector::operator+=() calls inside for, do and while loops.
Statements inside ifs and out of loops weren't considered.
Change-Id: Ie5aaf3cdfac938994e6e5dfa5f51de501ed79a0c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'src/widgets/graphicsview/qgraphicsview.cpp')
-rw-r--r-- | src/widgets/graphicsview/qgraphicsview.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/widgets/graphicsview/qgraphicsview.cpp b/src/widgets/graphicsview/qgraphicsview.cpp index decb455988..ac8cd45f9e 100644 --- a/src/widgets/graphicsview/qgraphicsview.cpp +++ b/src/widgets/graphicsview/qgraphicsview.cpp @@ -2464,6 +2464,7 @@ QPolygonF QGraphicsView::mapToScene(const QRect &rect) const QPolygonF QGraphicsView::mapToScene(const QPolygon &polygon) const { QPolygonF poly; + poly.reserve(polygon.count()); foreach (const QPoint &point, polygon) poly << mapToScene(point); return poly; @@ -2559,6 +2560,7 @@ QPolygon QGraphicsView::mapFromScene(const QRectF &rect) const QPolygon QGraphicsView::mapFromScene(const QPolygonF &polygon) const { QPolygon poly; + poly.reserve(polygon.count()); foreach (const QPointF &point, polygon) poly << mapFromScene(point); return poly; @@ -2673,7 +2675,9 @@ void QGraphicsView::updateScene(const QList<QRectF> &rects) // Extract and reset dirty scene rect info. QVector<QRect> dirtyViewportRects; const QVector<QRect> &dirtyRects = d->dirtyRegion.rects(); - for (int i = 0; i < dirtyRects.size(); ++i) + const int dirtyRectsCount = dirtyRects.size(); + dirtyViewportRects.reserve(dirtyRectsCount + rects.count()); + for (int i = 0; i < dirtyRectsCount; ++i) dirtyViewportRects += dirtyRects.at(i); d->dirtyRegion = QRegion(); d->dirtyBoundingRect = QRect(); |