summaryrefslogtreecommitdiffstats
path: root/src/gui/text/qfont.cpp
diff options
context:
space:
mode:
authorJani Heikkinen <jani.heikkinen@theqtcompany.com>2016-01-21 04:27:06 +0000
committerThe Qt Project <gerrit-noreply@qt-project.org>2016-01-21 04:27:06 +0000
commit7b2fb038ae4b8b9231ae989ad309b6eca107a858 (patch)
tree04001416e9589b7e79a6a5b1490e7eaabc22e82a /src/gui/text/qfont.cpp
parent9c0de96454570aec3fe88ba6b5d7c61b666b5753 (diff)
parent8f569c740a91b98365dcdaee2444038ce4957a76 (diff)
Merge "Merge remote-tracking branch 'origin/5.5' into 5.6" into refs/staging/5.6
Diffstat (limited to 'src/gui/text/qfont.cpp')
-rw-r--r--src/gui/text/qfont.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp
index 947c538234..bc9da5b564 100644
--- a/src/gui/text/qfont.cpp
+++ b/src/gui/text/qfont.cpp
@@ -2796,6 +2796,10 @@ void QFontCache::insertEngineData(const QFontDef &def, QFontEngineData *engineDa
Q_ASSERT(!engineDataCache.contains(def));
engineData->ref.ref();
+ // Decrease now rather than waiting
+ if (total_cost > min_cost * 2)
+ decreaseCache();
+
engineDataCache.insert(def, engineData);
increaseCost(sizeof(QFontEngineData));
}
@@ -2833,8 +2837,10 @@ void QFontCache::insertEngine(const Key &key, QFontEngine *engine, bool insertMu
key.def.pixelSize, key.def.weight, key.def.style, key.def.fixedPitch);
}
#endif
-
engine->ref.ref();
+ // Decrease now rather than waiting
+ if (total_cost > min_cost * 2)
+ decreaseCache();
Engine data(engine);
data.timestamp = ++current_timestamp;
@@ -2895,7 +2901,11 @@ void QFontCache::timerEvent(QTimerEvent *)
return;
}
+ decreaseCache();
+}
+void QFontCache::decreaseCache()
+{
// go through the cache and count up everything in use
uint in_use_cost = 0;