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:
parent
c6aec7eda3
commit
232bd0a05f
@ -1975,6 +1975,8 @@ QFontEngine *QWindowsFontDatabase::createEngine(const QFontDef &request, const Q
|
|||||||
reinterpret_cast<void **>(&directWriteFontFace2)))) {
|
reinterpret_cast<void **>(&directWriteFontFace2)))) {
|
||||||
if (directWriteFontFace2->IsColorFont())
|
if (directWriteFontFace2->IsColorFont())
|
||||||
isColorFont = directWriteFontFace2->GetPaletteEntryCount() > 0;
|
isColorFont = directWriteFontFace2->GetPaletteEntryCount() > 0;
|
||||||
|
|
||||||
|
directWriteFontFace2->Release();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
useDw = useDw || useDirectWrite(hintingPreference, fam, isColorFont);
|
useDw = useDw || useDirectWrite(hintingPreference, fam, isColorFont);
|
||||||
@ -1996,9 +1998,8 @@ QFontEngine *QWindowsFontDatabase::createEngine(const QFontDef &request, const Q
|
|||||||
fedw->glyphFormat = QFontEngine::Format_ARGB;
|
fedw->glyphFormat = QFontEngine::Format_ARGB;
|
||||||
fedw->initFontInfo(fontDef, dpi);
|
fedw->initFontInfo(fontDef, dpi);
|
||||||
fe = fedw;
|
fe = fedw;
|
||||||
} else {
|
|
||||||
directWriteFontFace->Release();
|
|
||||||
}
|
}
|
||||||
|
directWriteFontFace->Release();
|
||||||
} else if (useDw) {
|
} else if (useDw) {
|
||||||
const QString errorString = qt_error_string(int(hr));
|
const QString errorString = qt_error_string(int(hr));
|
||||||
qWarning().noquote().nospace() << "DirectWrite: CreateFontFaceFromHDC() failed ("
|
qWarning().noquote().nospace() << "DirectWrite: CreateFontFaceFromHDC() failed ("
|
||||||
|
Loading…
x
Reference in New Issue
Block a user