From edb924b93c55dc5576849b2e93ba55fc7ee0df63 Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Mon, 11 Feb 2013 11:14:04 +0100 Subject: [PATCH] Do pixel conversion on the pixmap decoder thread when possible MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Change-Id: Id991bee5c0a8b260fc1ca4395402970c6a722b5d Reviewed-by: Samuel Rødal --- src/quick/util/qquickpixmapcache.cpp | 11 +++++++++++ src/quick/util/qquickpixmapcache_p.h | 6 +----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/quick/util/qquickpixmapcache.cpp b/src/quick/util/qquickpixmapcache.cpp index dda2fbe..7a9bea3 100644 --- a/src/quick/util/qquickpixmapcache.cpp +++ b/src/quick/util/qquickpixmapcache.cpp @@ -91,6 +91,17 @@ static inline QString imageId(const QUrl &url) return url.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority).mid(1); } +QQuickDefaultTextureFactory::QQuickDefaultTextureFactory(const QImage &image) +{ + if (image.format() == QImage::Format_ARGB32_Premultiplied + || image.format() == QImage::Format_RGB32) { + im = image; + } else { + im = image.convertToFormat(QImage::Format_ARGB32_Premultiplied); + } +} + + QSGTexture *QQuickDefaultTextureFactory::createTexture(QQuickWindow *) const { QSGPlainTexture *t = new QSGPlainTexture(); diff --git a/src/quick/util/qquickpixmapcache_p.h b/src/quick/util/qquickpixmapcache_p.h index 3fefa35..08dba80 100644 --- a/src/quick/util/qquickpixmapcache_p.h +++ b/src/quick/util/qquickpixmapcache_p.h @@ -61,11 +61,7 @@ class QQuickDefaultTextureFactory : public QQuickTextureFactory { Q_OBJECT public: - QQuickDefaultTextureFactory(const QImage &i) - : im(i) - { - } - + QQuickDefaultTextureFactory(const QImage &i); QSGTexture *createTexture(QQuickWindow *window) const; QSize textureSize() const { return im.size(); } int textureByteCount() const { return im.byteCount(); } -- 1.7.2.5