diff options
author | Yoann Lopes <yoann.lopes@nokia.com> | 2011-12-15 14:17:33 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-21 12:16:25 +0100 |
commit | 3d8986d7475ef6fdd04ea1286d840d2b570133a0 (patch) | |
tree | 66cec7e44c432c904b0e33dec4ce34ef622c7b67 /src/quick/scenegraph/qsgadaptationlayer_p.h | |
parent | 0febfa03b62a4449c42ad1e675777b7b099ebaa3 (diff) |
Reference count glyphs in QSGDistanceFieldGlyphCache.
This was previously done only in the default cache implementation. It
has been moved to the base class.
releaseGlyphs() is called when a glyph is not referenced anymore by any
node.
Added a virtual function referenceGlyphs() that is called everytime glyphs
are being used in a node. This function is called just before
requestGlyphs().
Change-Id: If90f86c328c18ae2a5977847a6adf50b99ea1241
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Diffstat (limited to 'src/quick/scenegraph/qsgadaptationlayer_p.h')
-rw-r--r-- | src/quick/scenegraph/qsgadaptationlayer_p.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/quick/scenegraph/qsgadaptationlayer_p.h b/src/quick/scenegraph/qsgadaptationlayer_p.h index 0c777ef639..c4851c326b 100644 --- a/src/quick/scenegraph/qsgadaptationlayer_p.h +++ b/src/quick/scenegraph/qsgadaptationlayer_p.h @@ -191,9 +191,10 @@ protected: QPointF position; }; - virtual void requestGlyphs(const QVector<glyph_t> &glyphs) = 0; + virtual void requestGlyphs(const QSet<glyph_t> &glyphs) = 0; virtual void storeGlyphs(const QHash<glyph_t, QImage> &glyphs) = 0; - virtual void releaseGlyphs(const QVector<glyph_t> &glyphs) = 0; + virtual void referenceGlyphs(const QSet<glyph_t> &glyphs) = 0; + virtual void releaseGlyphs(const QSet<glyph_t> &glyphs) = 0; void setGlyphsPosition(const QList<GlyphPosition> &glyphs); void setGlyphsTexture(const QVector<glyph_t> &glyphs, const Texture &tex); @@ -215,6 +216,7 @@ private: QHash<glyph_t, QPainterPath> glyphPaths; bool doubleGlyphResolution; QLinkedList<QSGDistanceFieldGlyphNode*> m_registeredNodes; + QHash<glyph_t, quint32> glyphRefCount; GlyphCacheData(QOpenGLContext *ctx) : QOpenGLSharedResource(ctx->shareGroup()) |