diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2012-11-05 13:00:34 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-05 15:16:01 +0100 |
commit | cbf476242608a575595651a2eb8c40588a4631a4 (patch) | |
tree | 44185be6f20dbee8bc37cd52e1023ec75b79bdf2 | |
parent | 7e819386283c2ef7f0af1fc9eec6cf7227aa1524 (diff) |
Fix GDI leaks in fontengine
GDI objects that are created need to be deleted once no longer needed,
instead of just released.
Task-number: QTBUG-27812
Task-number: QTBUG-27825
Change-Id: I53b04b54cea9e2aaa8fc72365c215f516c5682e6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
-rw-r--r-- | src/plugins/platforms/windows/qwindowsfontdatabase.cpp | 2 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsfontengine.cpp | 7 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp index 323cff1646..76fe5f1a43 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp +++ b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp @@ -533,7 +533,7 @@ QWindowsFontEngineData::QWindowsFontEngineData() QWindowsFontEngineData::~QWindowsFontEngineData() { if (hdc) - ReleaseDC(0, hdc); + DeleteDC(hdc); #if !defined(QT_NO_DIRECTWRITE) if (directWriteGdiInterop) directWriteGdiInterop->Release(); diff --git a/src/plugins/platforms/windows/qwindowsfontengine.cpp b/src/plugins/platforms/windows/qwindowsfontengine.cpp index 0e592aee7b..578a0cd20b 100644 --- a/src/plugins/platforms/windows/qwindowsfontengine.cpp +++ b/src/plugins/platforms/windows/qwindowsfontengine.cpp @@ -1110,7 +1110,7 @@ QWindowsNativeImage *QWindowsFontEngine::drawGDIGlyph(HFONT font, glyph_t glyph, SetGraphicsMode(hdc, GM_COMPATIBLE); SelectObject(hdc, old_font); - ReleaseDC(0, hdc); + DeleteDC(hdc); } #else // else wince unsigned int options = 0; @@ -1166,8 +1166,11 @@ QImage QWindowsFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &xfo mask_format = QImage::Format_RGB32; QWindowsNativeImage *mask = drawGDIGlyph(font, glyph, 0, xform, mask_format); - if (mask == 0) + if (mask == 0) { + if (m_fontEngineData->clearTypeEnabled) + DeleteObject(font); return QImage(); + } QImage indexed(mask->width(), mask->height(), QImage::Format_Indexed8); |