Re: cairo_font_face_t not freeing

Louis M <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
On 05/02/2017 04:31 PM, Lawrence D'Oliveiro wrote:
> So presumably Cairo knows to clean it up
> properly when you call font_face_destroy...
Ok, just to be sure, I tried the the "cairo_font_face_set_user_data"
functionality that can set a destructor to the font face. Here the code:

void font_destroy(void* user_data){
    printf("Font face freed\n");
}

int main(void){
    static const cairo_user_data_key_t key;
    int temp;
    cairo_scaled_font_t * scaled_font;

    // Creating ressources
    cairo_font_face_t * font_face = cairo_toy_font_face_create("",
                            CAIRO_FONT_SLANT_NORMAL,
                            CAIRO_FONT_WEIGHT_NORMAL);
    cairo_font_face_set_user_data (font_face, &key,
                &temp, (cairo_destroy_func_t) font_destroy);
    cairo_surface_t * surface = cairo_pdf_surface_create("test.pdf",
300, 300);
    cairo_t * context = cairo_create(surface);
    cairo_set_font_face(context, font_face);
    cairo_set_font_size(context, 30);
    scaled_font = cairo_get_scaled_font(context);

    // Freeing ressources
    cairo_destroy(context);
    cairo_surface_destroy(surface);
    printf("Refcount=%d\n", cairo_font_face_get_reference_count(font_face));
    cairo_font_face_destroy(font_face);

    return 0;
}

The "font_destroy" is never launch. But if I put two
"cairo_font_face_destroy" instead of one, I see the "Font face freed"
message. Do you think that I should fill a bug report. It do not seems
to be a misuse from my part if a understand correctly.

Thanks again,

Louis M

-- 
cairo mailing list
[email protected]
https://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.