summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2012-11-05 13:00:34 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-11-05 15:16:01 +0100
commitcbf476242608a575595651a2eb8c40588a4631a4 (patch)
tree44185be6f20dbee8bc37cd52e1023ec75b79bdf2
parent7e819386283c2ef7f0af1fc9eec6cf7227aa1524 (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.cpp2
-rw-r--r--src/plugins/platforms/windows/qwindowsfontengine.cpp7
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);