From 232bd0a05f517c55cfe15d509697b15b90dcfe6e Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 18 May 2020 09:30:10 +0200 Subject: [PATCH] Direct Write Font Engine: Fix leaking IDWriteFontFace instances Patch as contributed on bug report. Fixes: QTBUG-84265 Change-Id: I73d73cf7d1b46944767750bf0f0c727c7b00b1d7 Reviewed-by: Eskil Abrahamsen Blomfeldt (cherry picked from commit 26100ccb83ec9c4a2ee192170f1952956dd569d1) Reviewed-by: Qt Cherry-pick Bot --- .../fontdatabases/windows/qwindowsfontdatabase.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp index c456f01b283..6a997b35e83 100644 --- a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp +++ b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp @@ -1975,6 +1975,8 @@ QFontEngine *QWindowsFontDatabase::createEngine(const QFontDef &request, const Q reinterpret_cast(&directWriteFontFace2)))) { if (directWriteFontFace2->IsColorFont()) isColorFont = directWriteFontFace2->GetPaletteEntryCount() > 0; + + directWriteFontFace2->Release(); } #endif useDw = useDw || useDirectWrite(hintingPreference, fam, isColorFont); @@ -1996,9 +1998,8 @@ QFontEngine *QWindowsFontDatabase::createEngine(const QFontDef &request, const Q fedw->glyphFormat = QFontEngine::Format_ARGB; fedw->initFontInfo(fontDef, dpi); fe = fedw; - } else { - directWriteFontFace->Release(); } + directWriteFontFace->Release(); } else if (useDw) { const QString errorString = qt_error_string(int(hr)); qWarning().noquote().nospace() << "DirectWrite: CreateFontFaceFromHDC() failed ("