summaryrefslogtreecommitdiffstats
path: root/src/declarative/fx/qfximageitem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/fx/qfximageitem.cpp')
-rw-r--r--src/declarative/fx/qfximageitem.cpp21
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
}