diff options
author | Gunnar Sletta <gunnar.sletta@nokia.com> | 2012-02-08 08:09:11 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-09 10:57:21 +0100 |
commit | 6c041f2122920307a2506067fdf64f65c614fbf7 (patch) | |
tree | 5e257977d83850c622598faeca203960a5c01b4d /src | |
parent | 8550ed69156f0472450fd11aabcaa5d4dcc676db (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.h | 3 | ||||
-rw-r--r-- | src/imports/etcprovider/qetcprovider.cpp | 2 | ||||
-rw-r--r-- | src/quick/items/qquickborderimage.cpp | 2 | ||||
-rw-r--r-- | src/quick/items/qquickimage.cpp | 4 | ||||
-rw-r--r-- | src/quick/scenegraph/qsgcontext.cpp | 4 | ||||
-rw-r--r-- | src/quick/scenegraph/qsgcontext_p.h | 4 | ||||
-rw-r--r-- | src/quick/util/qdeclarativepixmapcache.cpp | 2 | ||||
-rw-r--r-- | src/quick/util/qdeclarativepixmapcache_p.h | 2 |
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; } |