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>
This commit is contained in:
parent
7e81938628
commit
cbf4762426
@ -533,7 +533,7 @@ QWindowsFontEngineData::QWindowsFontEngineData()
|
|||||||
QWindowsFontEngineData::~QWindowsFontEngineData()
|
QWindowsFontEngineData::~QWindowsFontEngineData()
|
||||||
{
|
{
|
||||||
if (hdc)
|
if (hdc)
|
||||||
ReleaseDC(0, hdc);
|
DeleteDC(hdc);
|
||||||
#if !defined(QT_NO_DIRECTWRITE)
|
#if !defined(QT_NO_DIRECTWRITE)
|
||||||
if (directWriteGdiInterop)
|
if (directWriteGdiInterop)
|
||||||
directWriteGdiInterop->Release();
|
directWriteGdiInterop->Release();
|
||||||
|
@ -1110,7 +1110,7 @@ QWindowsNativeImage *QWindowsFontEngine::drawGDIGlyph(HFONT font, glyph_t glyph,
|
|||||||
|
|
||||||
SetGraphicsMode(hdc, GM_COMPATIBLE);
|
SetGraphicsMode(hdc, GM_COMPATIBLE);
|
||||||
SelectObject(hdc, old_font);
|
SelectObject(hdc, old_font);
|
||||||
ReleaseDC(0, hdc);
|
DeleteDC(hdc);
|
||||||
}
|
}
|
||||||
#else // else wince
|
#else // else wince
|
||||||
unsigned int options = 0;
|
unsigned int options = 0;
|
||||||
@ -1166,8 +1166,11 @@ QImage QWindowsFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &xfo
|
|||||||
mask_format = QImage::Format_RGB32;
|
mask_format = QImage::Format_RGB32;
|
||||||
|
|
||||||
QWindowsNativeImage *mask = drawGDIGlyph(font, glyph, 0, xform, mask_format);
|
QWindowsNativeImage *mask = drawGDIGlyph(font, glyph, 0, xform, mask_format);
|
||||||
if (mask == 0)
|
if (mask == 0) {
|
||||||
|
if (m_fontEngineData->clearTypeEnabled)
|
||||||
|
DeleteObject(font);
|
||||||
return QImage();
|
return QImage();
|
||||||
|
}
|
||||||
|
|
||||||
QImage indexed(mask->width(), mask->height(), QImage::Format_Indexed8);
|
QImage indexed(mask->width(), mask->height(), QImage::Format_Indexed8);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user