From b5d987298b0502dd593dd09d7e4e1233d6e30dd6 Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Wed, 3 Jun 2009 07:50:33 +0200 Subject: Avoid constructing empty temporary QTransforms. This is a microoptimization. --- src/gui/graphicsview/qgraphicsscene.cpp | 19 +++++++++---------- src/gui/graphicsview/qgraphicsscene_p.h | 1 + 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index 7bf58c3..188165d 100644 --- a/src/gui/graphicsview/qgraphicsscene.cpp +++ b/src/gui/graphicsview/qgraphicsscene.cpp @@ -5110,29 +5110,28 @@ void QGraphicsScenePrivate::drawSubtreeRecursive(QGraphicsItem *item, QPainter * } // Calculate the full transform for this item. - QTransform transform; QRect viewBoundingRect; bool wasDirtyParentSceneTransform = false; if (item) { if (item->d_ptr->itemIsUntransformable()) { - transform = item->deviceTransform(viewTransform); + transformTmp = item->deviceTransform(viewTransform); } else { if (item->d_ptr->dirtySceneTransform) { item->d_ptr->sceneTransform = item->d_ptr->parent ? item->d_ptr->parent->d_ptr->sceneTransform - : transform; + : QTransform(); item->d_ptr->combineTransformFromParent(&item->d_ptr->sceneTransform); item->d_ptr->dirtySceneTransform = 0; wasDirtyParentSceneTransform = true; } - transform = item->d_ptr->sceneTransform; - transform *= viewTransform; + transformTmp = item->d_ptr->sceneTransform; + transformTmp *= viewTransform; } - + QRectF brect = item->boundingRect(); if (!brect.size().isNull()) { // ### This does not take the clip into account. _q_adjustRect(&brect); - viewBoundingRect = transform.mapRect(brect).toRect().adjusted(-1, -1, 1, 1); + viewBoundingRect = transformTmp.mapRect(brect).toRect().adjusted(-1, -1, 1, 1); item->d_ptr->paintedViewBoundingRects.insert(widget, viewBoundingRect); if (exposedRegion) viewBoundingRect &= exposedRegion->boundingRect(); @@ -5149,7 +5148,7 @@ void QGraphicsScenePrivate::drawSubtreeRecursive(QGraphicsItem *item, QPainter * // Clip children. if (childClip) { painter->save(); - painter->setWorldTransform(transform); + painter->setWorldTransform(transformTmp); painter->setClipPath(item->shape(), Qt::IntersectClip); } @@ -5181,14 +5180,14 @@ void QGraphicsScenePrivate::drawSubtreeRecursive(QGraphicsItem *item, QPainter * // Draw item if (!dontDrawItem) { - item->d_ptr->initStyleOption(&styleOptionTmp, transform, exposedRegion ? *exposedRegion : QRegion(), exposedRegion == 0); + item->d_ptr->initStyleOption(&styleOptionTmp, transformTmp, exposedRegion ? *exposedRegion : QRegion(), exposedRegion == 0); bool clipsToShape = (item->d_ptr->flags & QGraphicsItem::ItemClipsToShape); bool savePainter = clipsToShape || !(optimizationFlags & QGraphicsView::DontSavePainterState); if (savePainter) painter->save(); if (!childClip) - painter->setWorldTransform(transform); + painter->setWorldTransform(transformTmp); if (clipsToShape) painter->setClipPath(item->shape(), Qt::IntersectClip); painter->setOpacity(opacity); diff --git a/src/gui/graphicsview/qgraphicsscene_p.h b/src/gui/graphicsview/qgraphicsscene_p.h index e0c48a6..8bc25b6 100644 --- a/src/gui/graphicsview/qgraphicsscene_p.h +++ b/src/gui/graphicsview/qgraphicsscene_p.h @@ -287,6 +287,7 @@ public: void updatePalette(const QPalette &palette); QStyleOptionGraphicsItem styleOptionTmp; + QTransform transformTmp; }; QT_END_NAMESPACE -- cgit v0.12