diff options
Diffstat (limited to 'src/quick/scenegraph/qsgdefaultrendercontext.cpp')
-rw-r--r-- | src/quick/scenegraph/qsgdefaultrendercontext.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/quick/scenegraph/qsgdefaultrendercontext.cpp b/src/quick/scenegraph/qsgdefaultrendercontext.cpp index 73f4bec27f..dc3262f2da 100644 --- a/src/quick/scenegraph/qsgdefaultrendercontext.cpp +++ b/src/quick/scenegraph/qsgdefaultrendercontext.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "qsgdefaultrendercontext_p.h" +#include "qsgcurveglyphatlas_p.h" #include <QtGui/QGuiApplication> @@ -71,6 +72,9 @@ void QSGDefaultRenderContext::invalidateGlyphCaches() } } + qDeleteAll(m_curveGlyphAtlases); + m_curveGlyphAtlases.clear(); + { auto it = m_fontEnginesToClean.begin(); while (it != m_fontEnginesToClean.end()) { @@ -131,6 +135,9 @@ void QSGDefaultRenderContext::invalidate() } m_fontEnginesToClean.clear(); + qDeleteAll(m_curveGlyphAtlases); + m_curveGlyphAtlases.clear(); + qDeleteAll(m_glyphCaches); m_glyphCaches.clear(); @@ -254,6 +261,18 @@ void QSGDefaultRenderContext::preprocess() } } +QSGCurveGlyphAtlas *QSGDefaultRenderContext::curveGlyphAtlas(const QRawFont &font) +{ + QString key = fontKey(font, 0); + QSGCurveGlyphAtlas *atlas = m_curveGlyphAtlases.value(key, nullptr); + if (atlas == nullptr) { + atlas = new QSGCurveGlyphAtlas(font); + m_curveGlyphAtlases.insert(key, atlas); + } + + return atlas; +} + QSGDistanceFieldGlyphCache *QSGDefaultRenderContext::distanceFieldGlyphCache(const QRawFont &font, int renderTypeQuality) { QString key = fontKey(font, renderTypeQuality); |