diff options
Diffstat (limited to 'src/declarative/fx/qfximageitem.cpp')
-rw-r--r-- | src/declarative/fx/qfximageitem.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/declarative/fx/qfximageitem.cpp b/src/declarative/fx/qfximageitem.cpp index a6f6d8f..52ab009 100644 --- a/src/declarative/fx/qfximageitem.cpp +++ b/src/declarative/fx/qfximageitem.cpp @@ -119,8 +119,7 @@ void QFxImageItem::dirtyCache(const QRect& rect) void QFxImageItem::clearCache() { Q_D(QFxImageItem); - foreach (QFxImageItemPrivate::ImageCacheItem* i, d->imagecache) - delete i; + qDeleteAll(d->imagecache); d->imagecache.clear(); } @@ -155,7 +154,7 @@ QSize QFxImageItem::contentsSize() const void QFxImageItem::setSmooth(bool smooth) { Q_D(QFxImageItem); - if(d->smooth == smooth) return; + if (d->smooth == smooth) return; d->smooth = smooth; clearCache(); update(); @@ -169,7 +168,7 @@ void QFxImageItem::setSmooth(bool smooth) void QFxImageItem::setContentsSize(const QSize &size) { Q_D(QFxImageItem); - if(d->contentsSize == size) return; + if (d->contentsSize == size) return; d->contentsSize = size; clearCache(); update(); @@ -232,8 +231,9 @@ void QFxImageItem::paintGLContents(GLPainter &p) return; #if defined(QFX_RENDER_QPAINTER) - if(d->smooth) { - p.save(); + bool oldAntiAliasing = p.testRenderHint(QPainter::Antialiasing); + bool oldSmoothPixmap = p.testRenderHint(QPainter::SmoothPixmapTransform); + if (d->smooth) { p.setRenderHints(QPainter::Antialiasing, true); p.setRenderHints(QPainter::SmoothPixmapTransform, true); } @@ -303,7 +303,8 @@ void QFxImageItem::paintGLContents(GLPainter &p) } const QRegion bigger = QRegion(biggerrect) & uncached; const QVector<QRect> rects = bigger.rects(); - foreach (QRect r, rects) { + for (int i = 0; i < rects.count(); ++i) { + const QRect &r = rects.at(i); #if defined(QFX_RENDER_QPAINTER) QImage img(r.size(),QImage::Format_ARGB32_Premultiplied); #else @@ -335,8 +336,10 @@ void QFxImageItem::paintGLContents(GLPainter &p) glDisableClientState(GL_TEXTURE_COORD_ARRAY); #endif #if defined(QFX_RENDER_QPAINTER) - if(d->smooth) - p.restore(); + if (d->smooth) { + p.setRenderHints(QPainter::Antialiasing, oldAntiAliasing); + p.setRenderHints(QPainter::SmoothPixmapTransform, oldSmoothPixmap); + } #endif } |