diff --git a/src/quick/scenegraph/qsgshareddistancefieldglyphcache.cpp b/src/quick/scenegraph/qsgshareddistancefieldglyphcache.cpp
index e762898602cecbabb761d01d143cd3213e7ebe66..951ee210c589b7c9f516dcb12fecf41d8006f4cd 100644
--- a/src/quick/scenegraph/qsgshareddistancefieldglyphcache.cpp
+++ b/src/quick/scenegraph/qsgshareddistancefieldglyphcache.cpp
@@ -90,7 +90,7 @@ QSGSharedDistanceFieldGlyphCache::QSGSharedDistanceFieldGlyphCache(const QByteAr
             this, SLOT(reportItemsAvailable(QByteArray,void*,QSize,QVector<quint32>,QVector<QPoint>)),
             Qt::DirectConnection);
     connect(sharedGraphicsCache, SIGNAL(itemsUpdated(QByteArray,void*,QSize,QVector<quint32>,QVector<QPoint>)),
-            this, SLOT(reportItemsAvailable(QByteArray,void*,QSize,QVector<quint32>,QVector<QPoint>)),
+            this, SLOT(reportItemsUpdated(QByteArray,void*,QSize,QVector<quint32>,QVector<QPoint>)),
             Qt::DirectConnection);
     connect(sharedGraphicsCache, SIGNAL(itemsInvalidated(QByteArray,QVector<quint32>)),
             this, SLOT(reportItemsInvalidated(QByteArray,QVector<quint32>)),
@@ -542,9 +542,38 @@ void QSGSharedDistanceFieldGlyphCache::processPendingGlyphs()
 }
 
 void QSGSharedDistanceFieldGlyphCache::reportItemsAvailable(const QByteArray &cacheId,
-                                                        void *bufferId, const QSize &bufferSize,
-                                                        const QVector<quint32> &itemIds,
-                                                        const QVector<QPoint> &positions)
+                                                            void *bufferId,
+                                                            const QSize &bufferSize,
+                                                            const QVector<quint32> &itemIds,
+                                                            const QVector<QPoint> &positions)
+{
+    bool requestedItemsInList = false;
+    {
+        QMutexLocker locker(&m_pendingGlyphsMutex);
+        if (m_cacheId != cacheId)
+            return;
+
+#if defined(QSGSHAREDDISTANCEFIELDGLYPHCACHE_DEBUG)
+            qDebug("QSGSharedDistanceFieldGlyphCache::reportItemsAvailable() called for %s (%d glyphs, bufferSize: %dx%d)",
+                   cacheId.constData(), itemIds.size(), bufferSize.width(), bufferSize.height());
+#endif
+
+        for (int i=0; i<itemIds.size(); ++i) {
+            if (m_requestedGlyphsThatHaveNotBeenReturned.contains(itemIds.at(i))) {
+                requestedItemsInList = true;
+                break;
+            }
+        }
+    }
+
+    if (requestedItemsInList)
+        reportItemsUpdated(cacheId, bufferId, bufferSize, itemIds, positions);
+}
+
+void QSGSharedDistanceFieldGlyphCache::reportItemsUpdated(const QByteArray &cacheId,
+                                                          void *bufferId, const QSize &bufferSize,
+                                                          const QVector<quint32> &itemIds,
+                                                          const QVector<QPoint> &positions)
 {
     {
         QMutexLocker locker(&m_pendingGlyphsMutex);
@@ -554,7 +583,7 @@ void QSGSharedDistanceFieldGlyphCache::reportItemsAvailable(const QByteArray &ca
         Q_ASSERT(itemIds.size() == positions.size());
 
 #if defined(QSGSHAREDDISTANCEFIELDGLYPHCACHE_DEBUG)
-        qDebug("QSGSharedDistanceFieldGlyphCache::reportItemsAvailable() called for %s (%d glyphs, bufferSize: %dx%d)",
+        qDebug("QSGSharedDistanceFieldGlyphCache::reportItemsUpdated() called for %s (%d glyphs, bufferSize: %dx%d)",
                cacheId.constData(), itemIds.size(), bufferSize.width(), bufferSize.height());
 #endif
 
diff --git a/src/quick/scenegraph/qsgshareddistancefieldglyphcache_p.h b/src/quick/scenegraph/qsgshareddistancefieldglyphcache_p.h
index cadf4bc55b5a161ba23070305db34daafff72297..8250b9706e4593444a8ff389d290ae11fe00a1f4 100644
--- a/src/quick/scenegraph/qsgshareddistancefieldglyphcache_p.h
+++ b/src/quick/scenegraph/qsgshareddistancefieldglyphcache_p.h
@@ -78,6 +78,8 @@ private Q_SLOTS:
     void reportItemsAvailable(const QByteArray &cacheId,
                           void *bufferId, const QSize &bufferSize,
                           const QVector<quint32> &itemIds, const QVector<QPoint> &positions);
+    void reportItemsUpdated(const QByteArray &cacheId, void *bufferId, const QSize &bufferSize,
+                            const QVector<quint32> &itemIds, const QVector<QPoint> &positions);
     void reportItemsInvalidated(const QByteArray &cacheId, const QVector<quint32> &itemIds);
 
 private: