diff options
Diffstat (limited to 'src/quick/util/qquickpixmapcache.cpp')
-rw-r--r-- | src/quick/util/qquickpixmapcache.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/quick/util/qquickpixmapcache.cpp b/src/quick/util/qquickpixmapcache.cpp index a2a8ef03c7..7daf6756ad 100644 --- a/src/quick/util/qquickpixmapcache.cpp +++ b/src/quick/util/qquickpixmapcache.cpp @@ -46,6 +46,7 @@ #include <QtQuick/private/qsgtexture_p.h> #include <QtQuick/private/qsgcontext_p.h> +#include <QQuickWindow> #include <QCoreApplication> #include <QImageReader> #include <QHash> @@ -101,13 +102,16 @@ QQuickDefaultTextureFactory::QQuickDefaultTextureFactory(const QImage &image) } else { im = image.convertToFormat(QImage::Format_ARGB32_Premultiplied); } + size = im.size(); } -QSGTexture *QQuickDefaultTextureFactory::createTexture(QQuickWindow *) const +QSGTexture *QQuickDefaultTextureFactory::createTexture(QQuickWindow *window) const { - QSGPlainTexture *t = new QSGPlainTexture(); - t->setImage(im); + QSGTexture *t = window->createTextureFromImage(im, QQuickWindow::TextureCanUseAtlas); + static bool transient = qEnvironmentVariableIsSet("QSG_TRANSIENT_IMAGES"); + if (transient) + const_cast<QQuickDefaultTextureFactory *>(this)->im = QImage(); return t; } |