[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [ft] Does FT_Done_FreeType() call FT_Done_Face() on all open faces?
From: |
Andreas Falkenhahn |
Subject: |
Re: [ft] Does FT_Done_FreeType() call FT_Done_Face() on all open faces? |
Date: |
Wed, 16 Aug 2017 19:27:04 +0200 |
On 16.08.2017 at 07:17 Werner LEMBERG wrote:
>> The documentation of FT_Done_FreeType() says:
>> Destroy a given FreeType library object and all of its children,
>> including resources, drivers, faces, sizes, etc.
>> So let's suppose there is a sloppy program which doesn't call
>> FT_Done_Face() on every face it opened using FT_New_Face(). Will
>> FT_Done_FreeType() automatically call FT_Done_Face() for every face
>> still open in that case?
> Yes.
>> From my observations this doesn't seem to be the case with a
>> snapshot version of freetype 2.5.4 currently used by me although the
>> doc makes it sound like it will do it.
> Really? I tried the small test program below, and everything gets
> freed properly. However, it seems that you have a more specific
> problem, so please provide a similar code snippet that exhibits your
> issue.
Ok, I debugged it and cairo was the culprit. It is leaking memory
unless you call cairo_debug_reset_static_data(). If you don't call
cairo_debug_reset_static_data() then FT_Done_FreeType() is never
called by cairo and some faces remain open.
--
Best regards,
Andreas Falkenhahn mailto:address@hidden