summaryrefslogtreecommitdiffstats
path: root/src/gui/text/qfontengine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/text/qfontengine.cpp')
-rw-r--r--src/gui/text/qfontengine.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp
index 27fc3c1..0eadf04 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -742,14 +742,15 @@ void QFontEngine::expireGlyphCache()
}
}
-void QFontEngine::setGlyphCache(void *key, QFontEngineGlyphCache *data)
+void QFontEngine::setGlyphCache(void *key, QFontEngineGlyphCache *data, QFontEngineGlyphCache::Type type)
{
Q_ASSERT(data);
QList<QFontEngineGlyphCache*> items = m_glyphPointerHash.value(key);
for (QList<QFontEngineGlyphCache*>::iterator it = items.begin(), end = items.end(); it != end; ++it) {
QFontEngineGlyphCache *c = *it;
- if (qtransform_equals_no_translate(c->m_transform, data->m_transform)) {
+ if (qtransform_equals_no_translate(c->m_transform, data->m_transform)
+ && c->cacheType() == type) {
if (c == data)
return;
items.removeAll(c);
@@ -786,13 +787,14 @@ void QFontEngine::setGlyphCache(QFontEngineGlyphCache::Type key, QFontEngineGlyp
expireGlyphCache();
}
-QFontEngineGlyphCache *QFontEngine::glyphCache(void *key, const QTransform &transform) const
+QFontEngineGlyphCache *QFontEngine::glyphCache(void *key, const QTransform &transform, QFontEngineGlyphCache::Type type) const
{
QList<QFontEngineGlyphCache*> items = m_glyphPointerHash.value(key);
for (QList<QFontEngineGlyphCache*>::iterator it = items.begin(), end = items.end(); it != end; ++it) {
QFontEngineGlyphCache *c = *it;
- if (qtransform_equals_no_translate(c->m_transform, transform)) {
+ if (qtransform_equals_no_translate(c->m_transform, transform)
+ && type == c->cacheType()) {
m_glyphCacheQueue.removeAll(c); // last used, move it up
m_glyphCacheQueue.append(c);
return c;