aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/util/qquickpixmapcache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/util/qquickpixmapcache.cpp')
-rw-r--r--src/quick/util/qquickpixmapcache.cpp10
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;
}