From: Nikolay Sivov Subject: [PATCH 2/2] dwrite: Release run info as soon as it's rendered to save some memory Message-Id: <55C074E3.1060301@codeweavers.com> Date: Tue, 04 Aug 2015 11:16:35 +0300 --- From 150f4a7211a60812ff982a2a3ecb96101f38ef22 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Tue, 4 Aug 2015 10:27:03 +0300 Subject: [PATCH 2/2] dwrite: Release run info as soon as it's rendered to save some memory --- dlls/dwrite/font.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c index 707ef6d..aaa0f42 100644 --- a/dlls/dwrite/font.c +++ b/dlls/dwrite/font.c @@ -2907,7 +2907,8 @@ static ULONG WINAPI glyphrunanalysis_Release(IDWriteGlyphRunAnalysis *iface) TRACE("(%p)->(%u)\n", This, ref); if (!ref) { - IDWriteFontFace_Release(This->run.fontFace); + if (This->run.fontFace) + IDWriteFontFace_Release(This->run.fontFace); heap_free(This->glyphs); heap_free(This->advances); heap_free(This->offsets); @@ -3088,6 +3089,20 @@ static void glyphrunanalysis_render(struct dwrite_glyphrunanalysis *analysis, DW IDWriteFontFace2_Release(fontface2); analysis->ready |= RUNANALYSIS_BITMAP; + + /* we don't need this anymore */ + heap_free(analysis->glyphs); + heap_free(analysis->advances); + heap_free(analysis->offsets); + IDWriteFontFace_Release(analysis->run.fontFace); + + analysis->glyphs = NULL; + analysis->advances = NULL; + analysis->offsets = NULL; + analysis->run.glyphIndices = NULL; + analysis->run.glyphAdvances = NULL; + analysis->run.glyphOffsets = NULL; + analysis->run.fontFace = NULL; } static HRESULT WINAPI glyphrunanalysis_CreateAlphaTexture(IDWriteGlyphRunAnalysis *iface, DWRITE_TEXTURE_TYPE type, -- 2.1.4