From 9c22413aa8bb7be28f1868f06c8684e4dc8eb9b3 Mon Sep 17 00:00:00 2001 From: tsauerbeck Date: Mon, 12 Jan 2004 18:12:41 +0000 Subject: [PATCH] free the freetype handle after we're done with it. SVN revision: 8356 --- legacy/evas/src/lib/engines/buffer/evas_engine.c | 2 ++ .../evas/src/lib/engines/common/evas_font_main.c | 14 +++++++++++++- .../src/lib/engines/directfb/evas_engine_dfb.c | 2 ++ legacy/evas/src/lib/engines/fb/evas_engine.c | 2 ++ legacy/evas/src/lib/engines/gl_x11/evas_engine.c | 2 ++ .../src/lib/engines/software_qtopia/evas_engine.c | 2 ++ .../src/lib/engines/software_x11/evas_engine.c | 2 ++ legacy/evas/src/lib/include/evas_common.h | 1 + 8 files changed, 26 insertions(+), 1 deletion(-) diff --git a/legacy/evas/src/lib/engines/buffer/evas_engine.c b/legacy/evas/src/lib/engines/buffer/evas_engine.c index f4852bf2d8..f5df5d9b14 100644 --- a/legacy/evas/src/lib/engines/buffer/evas_engine.c +++ b/legacy/evas/src/lib/engines/buffer/evas_engine.c @@ -296,6 +296,8 @@ evas_engine_buffer_output_free(void *data) evas_common_tilebuf_free(re->tb); if (re->rects) evas_common_tilebuf_free_render_rects(re->rects); free(re); + + evas_common_font_shutdown(); } static void diff --git a/legacy/evas/src/lib/engines/common/evas_font_main.c b/legacy/evas/src/lib/engines/common/evas_font_main.c index 1632ae6610..181fe4af2b 100644 --- a/legacy/evas/src/lib/engines/common/evas_font_main.c +++ b/legacy/evas/src/lib/engines/common/evas_font_main.c @@ -1,11 +1,11 @@ #include "evas_common.h" FT_Library ft_lib; +static int initialised = 0; void evas_common_font_init(void) { - static int initialised = 0; int error; if (initialised) return; @@ -14,6 +14,18 @@ evas_common_font_init(void) initialised = 1; } +void +evas_common_font_shutdown(void) +{ + int error; + + if (!initialised) return; + + error = FT_Done_FreeType(ft_lib); + if (error) return; + initialised = 0; +} + int evas_common_font_ascent_get(RGBA_Font *fn) { diff --git a/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.c b/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.c index d1db60d89d..d527d627f7 100644 --- a/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.c +++ b/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.c @@ -208,6 +208,8 @@ evas_engine_directfb_output_free(void *data) re->backbuf->Release(re->backbuf); evas_common_image_free(re->rgba_image); free(re); + + evas_common_font_shutdown(); } void diff --git a/legacy/evas/src/lib/engines/fb/evas_engine.c b/legacy/evas/src/lib/engines/fb/evas_engine.c index 1eedbd3f87..ba0345c400 100644 --- a/legacy/evas/src/lib/engines/fb/evas_engine.c +++ b/legacy/evas/src/lib/engines/fb/evas_engine.c @@ -242,6 +242,8 @@ evas_engine_fb_output_free(void *data) evas_common_tilebuf_free(re->tb); if (re->rects) evas_common_tilebuf_free_render_rects(re->rects); free(re); + + evas_common_font_shutdown(); } static void diff --git a/legacy/evas/src/lib/engines/gl_x11/evas_engine.c b/legacy/evas/src/lib/engines/gl_x11/evas_engine.c index f67dc2c8e0..d7bf0ce849 100644 --- a/legacy/evas/src/lib/engines/gl_x11/evas_engine.c +++ b/legacy/evas/src/lib/engines/gl_x11/evas_engine.c @@ -257,6 +257,8 @@ evas_engine_gl_x11_output_free(void *data) re = (Render_Engine *)data; free(re); + + evas_common_font_shutdown(); } static void diff --git a/legacy/evas/src/lib/engines/software_qtopia/evas_engine.c b/legacy/evas/src/lib/engines/software_qtopia/evas_engine.c index bf2ffbef9e..df9bdb5de0 100644 --- a/legacy/evas/src/lib/engines/software_qtopia/evas_engine.c +++ b/legacy/evas/src/lib/engines/software_qtopia/evas_engine.c @@ -258,6 +258,8 @@ evas_engine_software_qtopia_output_free(void *data) evas_common_tilebuf_free(re->tb); if (re->rects) evas_common_tilebuf_free_render_rects(re->rects); free(re); + + evas_common_font_shutdown(); } static void diff --git a/legacy/evas/src/lib/engines/software_x11/evas_engine.c b/legacy/evas/src/lib/engines/software_x11/evas_engine.c index 84e7a5427f..a5bfd26d79 100644 --- a/legacy/evas/src/lib/engines/software_x11/evas_engine.c +++ b/legacy/evas/src/lib/engines/software_x11/evas_engine.c @@ -301,6 +301,8 @@ evas_engine_software_x11_output_free(void *data) evas_common_tilebuf_free(re->tb); if (re->rects) evas_common_tilebuf_free_render_rects(re->rects); free(re); + + evas_common_font_shutdown(); } static void diff --git a/legacy/evas/src/lib/include/evas_common.h b/legacy/evas/src/lib/include/evas_common.h index d1f78051fe..0c4135a29e 100644 --- a/legacy/evas/src/lib/include/evas_common.h +++ b/legacy/evas/src/lib/include/evas_common.h @@ -803,6 +803,7 @@ void evas_common_blit_rectangle (RGBA_Image *src, RGBA_Image * /****/ void evas_common_font_init (void); +void evas_common_font_shutdown (void); RGBA_Font *evas_common_font_load (const char *name, int size); void evas_common_font_free (RGBA_Font *fn);