aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar.sletta@nokia.com>2012-02-08 08:09:11 +0100
committerQt by Nokia <qt-info@nokia.com>2012-02-09 10:57:21 +0100
commit6c041f2122920307a2506067fdf64f65c614fbf7 (patch)
tree5e257977d83850c622598faeca203960a5c01b4d /src
parent8550ed69156f0472450fd11aabcaa5d4dcc676db (diff)
Pass the QQuickCanvas to texture factories.
This makes it a lot more convenient as we then have direct access to the GL context, createTexture(), invalidation signal and more. Change-Id: I114514d1379c4d0efcc35c512fa2b485da3438b0 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com> Reviewed-by: Kim M. Kalland <kim.kalland@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/declarative/qml/qdeclarativeimageprovider.h3
-rw-r--r--src/imports/etcprovider/qetcprovider.cpp2
-rw-r--r--src/quick/items/qquickborderimage.cpp2
-rw-r--r--src/quick/items/qquickimage.cpp4
-rw-r--r--src/quick/scenegraph/qsgcontext.cpp4
-rw-r--r--src/quick/scenegraph/qsgcontext_p.h4
-rw-r--r--src/quick/util/qdeclarativepixmapcache.cpp2
-rw-r--r--src/quick/util/qdeclarativepixmapcache_p.h2
8 files changed, 12 insertions, 11 deletions
diff --git a/src/declarative/qml/qdeclarativeimageprovider.h b/src/declarative/qml/qdeclarativeimageprovider.h
index 8fc79aeee2..55a5ca2d23 100644
--- a/src/declarative/qml/qdeclarativeimageprovider.h
+++ b/src/declarative/qml/qdeclarativeimageprovider.h
@@ -52,6 +52,7 @@ QT_BEGIN_NAMESPACE
class QDeclarativeImageProviderPrivate;
class QSGTexture;
+class QQuickCanvas;
class Q_DECLARATIVE_EXPORT QDeclarativeTextureFactory : public QObject
{
@@ -59,7 +60,7 @@ public:
QDeclarativeTextureFactory();
~QDeclarativeTextureFactory();
- virtual QSGTexture *createTexture() const = 0;
+ virtual QSGTexture *createTexture(QQuickCanvas *canvas) const = 0;
virtual QSize textureSize() const = 0;
virtual int textureByteCount() const = 0;
};
diff --git a/src/imports/etcprovider/qetcprovider.cpp b/src/imports/etcprovider/qetcprovider.cpp
index e80ab714c0..15ece33312 100644
--- a/src/imports/etcprovider/qetcprovider.cpp
+++ b/src/imports/etcprovider/qetcprovider.cpp
@@ -159,7 +159,7 @@ public:
return m_data.size();
}
- QSGTexture *createTexture() const {
+ QSGTexture *createTexture(QQuickCanvas *) const {
EtcTexture *texture = new EtcTexture;
texture->m_data = m_data;
texture->m_size = m_size;
diff --git a/src/quick/items/qquickborderimage.cpp b/src/quick/items/qquickborderimage.cpp
index 03d3d53352..67b5cdf737 100644
--- a/src/quick/items/qquickborderimage.cpp
+++ b/src/quick/items/qquickborderimage.cpp
@@ -552,7 +552,7 @@ QSGNode *QQuickBorderImage::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeDat
{
Q_D(QQuickBorderImage);
- QSGTexture *texture = d->sceneGraphContext()->textureForFactory(d->pix.textureFactory());
+ QSGTexture *texture = d->sceneGraphContext()->textureForFactory(d->pix.textureFactory(), canvas());
if (!texture || width() <= 0 || height() <= 0) {
delete oldNode;
diff --git a/src/quick/items/qquickimage.cpp b/src/quick/items/qquickimage.cpp
index 901fded3d2..9af3a7e3ba 100644
--- a/src/quick/items/qquickimage.cpp
+++ b/src/quick/items/qquickimage.cpp
@@ -544,7 +544,7 @@ QSGTextureProvider *QQuickImage::textureProvider() const
QQuickImagePrivate *dd = const_cast<QQuickImagePrivate *>(d);
dd->provider = new QQuickImageTextureProvider;
dd->provider->m_smooth = d->smooth;
- dd->provider->m_texture = d->sceneGraphContext()->textureForFactory(d->pix.textureFactory());
+ dd->provider->m_texture = d->sceneGraphContext()->textureForFactory(d->pix.textureFactory(), canvas());
}
return d->provider;
@@ -554,7 +554,7 @@ QSGNode *QQuickImage::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
{
Q_D(QQuickImage);
- QSGTexture *texture = d->sceneGraphContext()->textureForFactory(d->pix.textureFactory());
+ QSGTexture *texture = d->sceneGraphContext()->textureForFactory(d->pix.textureFactory(), canvas());
// Copy over the current texture state into the texture provider...
if (d->provider) {
diff --git a/src/quick/scenegraph/qsgcontext.cpp b/src/quick/scenegraph/qsgcontext.cpp
index 1f26e57fa5..6817ad8862 100644
--- a/src/quick/scenegraph/qsgcontext.cpp
+++ b/src/quick/scenegraph/qsgcontext.cpp
@@ -159,7 +159,7 @@ void QSGContext::invalidate()
}
-QSGTexture *QSGContext::textureForFactory(QDeclarativeTextureFactory *factory)
+QSGTexture *QSGContext::textureForFactory(QDeclarativeTextureFactory *factory, QQuickCanvas *canvas)
{
Q_D(QSGContext);
if (!factory)
@@ -170,7 +170,7 @@ QSGTexture *QSGContext::textureForFactory(QDeclarativeTextureFactory *factory)
if (QDeclarativeDefaultTextureFactory *dtf = qobject_cast<QDeclarativeDefaultTextureFactory *>(factory))
texture = createTexture(dtf->image());
else
- texture = factory->createTexture();
+ texture = factory->createTexture(canvas);
d->textures.insert(factory, texture);
connect(factory, SIGNAL(destroyed(QObject *)), this, SLOT(textureFactoryDestroyed(QObject *)));
}
diff --git a/src/quick/scenegraph/qsgcontext_p.h b/src/quick/scenegraph/qsgcontext_p.h
index 84c293c107..7fa3838db9 100644
--- a/src/quick/scenegraph/qsgcontext_p.h
+++ b/src/quick/scenegraph/qsgcontext_p.h
@@ -63,7 +63,7 @@ class QSGImageNode;
class QSGGlyphNode;
class QSGRenderer;
class QSGDistanceFieldGlyphCache;
-
+class QQuickCanvas;
class QSGTexture;
class QSGMaterial;
class QSGMaterialShader;
@@ -106,7 +106,7 @@ public:
virtual QSurfaceFormat defaultSurfaceFormat() const;
- QSGTexture *textureForFactory(QDeclarativeTextureFactory *factory);
+ QSGTexture *textureForFactory(QDeclarativeTextureFactory *factory, QQuickCanvas *canvas);
static QSGContext *createDefaultContext();
diff --git a/src/quick/util/qdeclarativepixmapcache.cpp b/src/quick/util/qdeclarativepixmapcache.cpp
index 80359231d3..3670c58662 100644
--- a/src/quick/util/qdeclarativepixmapcache.cpp
+++ b/src/quick/util/qdeclarativepixmapcache.cpp
@@ -76,7 +76,7 @@ QT_BEGIN_NAMESPACE
// The cache limit describes the maximum "junk" in the cache.
static int cache_limit = 2048 * 1024; // 2048 KB cache limit for embedded in qpixmapcache.cpp
-QSGTexture *QDeclarativeDefaultTextureFactory::createTexture() const
+QSGTexture *QDeclarativeDefaultTextureFactory::createTexture(QQuickCanvas *) const
{
QSGPlainTexture *t = new QSGPlainTexture();
t->setImage(im);
diff --git a/src/quick/util/qdeclarativepixmapcache_p.h b/src/quick/util/qdeclarativepixmapcache_p.h
index 7b3df977e5..19c3a5264f 100644
--- a/src/quick/util/qdeclarativepixmapcache_p.h
+++ b/src/quick/util/qdeclarativepixmapcache_p.h
@@ -68,7 +68,7 @@ public:
{
}
- QSGTexture *createTexture() const;
+ QSGTexture *createTexture(QQuickCanvas *canvas) const;
QSize textureSize() const { return im.size(); }
int textureByteCount() const { return im.byteCount(); }
QImage image() const { return im; }