Use cairo_image_surface_create_for_data(). On Fri, Jul 5, 2019 at 6:37 AM Moazin Khatri <[email protected]> wrote:
> Hi, > > I'm trying to fix all of the memory leaks in the work that I have > done so far and one very important memory leak is that of the whole > image buffer data. > > For example, in my `resvg' port, after the SVG document has been > rendered to a cairo surface, I use `cairo_image_surface_get_data' > to get a pointer to the actual image data and just set the > `slot->bitmap.buffer' to this pointer. This works, but the problem > is freeing this memory later on. All of this memory was allocated > by cairo and the right way to free is by `cairo_surface_destroy'. > But we don't wanna free it immediately, only after the user has > done their thing with the data. > > We could solve this by creating another hook that will be triggered > for clearing the surface, but this method is tedious. An easier way > could be to allocate a new memory block by using `FT_Memory', copy > the image data there, free all the cairo resources and set the flag > `FT_GLYPH_OWN_BITMAP' at `slot->internal->flags'. Now, FreeType can > easily handle freeing this memory whenever it wants to. > > This approach works fine as long as the client program is linking to > FreeType statically. Turns out, the functions `ft_mem_alloc' and > `ft_mem_free' don't make it to the dynamic symbol table and thus are > not accessible to my rendering port if the client program is linking > dynamically. This is simply because `ft_mem_*' functions are not > exported and cannot be used from outside. > > Any ideas on what I should do here? Is it a bad idea to get access > to `ft_mem_*' functions from inside my ports? > > Regards, > > Moazin > _______________________________________________ > Freetype-devel mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/freetype-devel > -- behdad http://behdad.org/
_______________________________________________ Freetype-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/freetype-devel
