diff options
-rw-r--r-- | src/quick/scenegraph/qsgadaptationlayer.cpp | 12 | ||||
-rw-r--r-- | src/quick/scenegraph/qsgadaptationlayer_p.h | 9 |
2 files changed, 10 insertions, 11 deletions
diff --git a/src/quick/scenegraph/qsgadaptationlayer.cpp b/src/quick/scenegraph/qsgadaptationlayer.cpp index c64360f955..46af0f28f0 100644 --- a/src/quick/scenegraph/qsgadaptationlayer.cpp +++ b/src/quick/scenegraph/qsgadaptationlayer.cpp @@ -234,10 +234,8 @@ void QSGDistanceFieldGlyphCache::setGlyphsPosition(const QList<GlyphPosition> &g } if (!invalidatedGlyphs.isEmpty()) { - QLinkedList<QSGDistanceFieldGlyphConsumer *>::iterator it = m_registeredNodes.begin(); - while (it != m_registeredNodes.end()) { - (*it)->invalidateGlyphs(invalidatedGlyphs); - ++it; + for (QSGDistanceFieldGlyphConsumerList::iterator iter = m_registeredNodes.begin(); iter != m_registeredNodes.end(); ++iter) { + iter->invalidateGlyphs(invalidatedGlyphs); } } } @@ -280,10 +278,8 @@ void QSGDistanceFieldGlyphCache::setGlyphsTexture(const QVector<glyph_t> &glyphs } if (!invalidatedGlyphs.isEmpty()) { - QLinkedList<QSGDistanceFieldGlyphConsumer*>::iterator it = m_registeredNodes.begin(); - while (it != m_registeredNodes.end()) { - (*it)->invalidateGlyphs(invalidatedGlyphs); - ++it; + for (QSGDistanceFieldGlyphConsumerList::iterator iter = m_registeredNodes.begin(); iter != m_registeredNodes.end(); ++iter) { + iter->invalidateGlyphs(invalidatedGlyphs); } } } diff --git a/src/quick/scenegraph/qsgadaptationlayer_p.h b/src/quick/scenegraph/qsgadaptationlayer_p.h index c23163a6b3..5a465831cb 100644 --- a/src/quick/scenegraph/qsgadaptationlayer_p.h +++ b/src/quick/scenegraph/qsgadaptationlayer_p.h @@ -64,6 +64,7 @@ #include <QtGui/private/qdatabuffer_p.h> #include <private/qopenglcontext_p.h> #include <private/qdistancefield_p.h> +#include <private/qintrusivelist_p.h> // ### remove #include <QtQuick/private/qquicktext_p.h> @@ -404,7 +405,9 @@ public: virtual ~QSGDistanceFieldGlyphConsumer() {} virtual void invalidateGlyphs(const QVector<quint32> &glyphs) = 0; + QIntrusiveListNode node; }; +typedef QIntrusiveList<QSGDistanceFieldGlyphConsumer, &QSGDistanceFieldGlyphConsumer::node> QSGDistanceFieldGlyphConsumerList; class Q_QUICK_PRIVATE_EXPORT QSGDistanceFieldGlyphCache { @@ -465,8 +468,8 @@ public: void update(); - void registerGlyphNode(QSGDistanceFieldGlyphConsumer *node) { m_registeredNodes.append(node); } - void unregisterGlyphNode(QSGDistanceFieldGlyphConsumer *node) { m_registeredNodes.removeOne(node); } + void registerGlyphNode(QSGDistanceFieldGlyphConsumer *node) { m_registeredNodes.insert(node); } + void unregisterGlyphNode(QSGDistanceFieldGlyphConsumer *node) { m_registeredNodes.remove(node); } virtual void registerOwnerElement(QQuickItem *ownerElement); virtual void unregisterOwnerElement(QQuickItem *ownerElement); @@ -522,7 +525,7 @@ private: QHash<glyph_t, GlyphData> m_glyphsData; QDataBuffer<glyph_t> m_pendingGlyphs; QSet<glyph_t> m_populatingGlyphs; - QLinkedList<QSGDistanceFieldGlyphConsumer*> m_registeredNodes; + QSGDistanceFieldGlyphConsumerList m_registeredNodes; static Texture s_emptyTexture; }; |