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 <eskil.abrahamsen-blomfeldt@qt.io>
(cherry picked from commit 26100ccb83ec9c4a2ee192170f1952956dd569d1)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Friedemann Kleint 2020-05-18 09:30:10 +02:00 committed by Qt Cherry-pick Bot
parent c6aec7eda3
commit 232bd0a05f

View File

@ -1975,6 +1975,8 @@ QFontEngine *QWindowsFontDatabase::createEngine(const QFontDef &request, const Q
reinterpret_cast<void **>(&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 ("