path: root/src/lib/evas/common/evas_draw_main.c
diff options
authorYoungbok Shin <>2017-03-08 19:33:15 +0900
committerJean-Philippe Andre <>2017-03-08 19:35:03 +0900
commitf83ce20e1c72c3a645553feeea640e0c4b69e6c1 (patch)
tree50e5634b68cfd67d5f7ecee92616750f50ef65c0 /src/lib/evas/common/evas_draw_main.c
parent437ae4a3d3b0d00a279fb93f4341c9205d785c36 (diff)
evas: clean up GL images for emojis when GL context is free'd
If GL context is free'd before processing font shutdown, textures for emoji glyph's GL images will be free'd without clean up its GL images. It causes eina mempool infinite loop issue when emoji's GL images are free'd in shutdown process. So, the patch will make a list for emoji's GL images in context and clean up them when the context is free'd. Just like font textures in context. @fix Differential Revision: Signed-off-by: Jean-Philippe Andre <>
Diffstat (limited to 'src/lib/evas/common/evas_draw_main.c')
1 files changed, 3 insertions, 3 deletions
diff --git a/src/lib/evas/common/evas_draw_main.c b/src/lib/evas/common/evas_draw_main.c
index d7c26c73f5..d6b0a8942b 100644
--- a/src/lib/evas/common/evas_draw_main.c
+++ b/src/lib/evas/common/evas_draw_main.c
@@ -216,15 +216,15 @@ evas_common_draw_context_font_ext_set(RGBA_Draw_Context *dc,
216 void *(*gl_new) (void *data, RGBA_Font_Glyph *fg), 216 void *(*gl_new) (void *data, RGBA_Font_Glyph *fg),
217 void (*gl_free) (void *ext_dat), 217 void (*gl_free) (void *ext_dat),
218 void (*gl_draw) (void *data, void *dest, void *context, RGBA_Font_Glyph *fg, int x, int y), 218 void (*gl_draw) (void *data, void *dest, void *context, RGBA_Font_Glyph *fg, int x, int y),
219 void *(*gl_image_new_from_data) (void *gc, unsigned int w, unsigned int h, DATA32 *image_data, int alpha, Evas_Colorspace cspace), 219 void *(*gl_image_new) (void *gc, RGBA_Font_Glyph *fg, int alpha, Evas_Colorspace cspace),
220 void (*gl_image_free) (void *image), 220 void (*gl_image_free) (void *image),
221 void (*gl_image_draw) (void *gc, void *im, int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh, int smooth)) 221 void (*gl_image_draw) (void *gc, void *im, int dx, int dy, int dw, int dh, int smooth))
222{ 222{
223 dc-> = data; 223 dc-> = data;
224 dc->font_ext.func.gl_new = gl_new; 224 dc->font_ext.func.gl_new = gl_new;
225 dc->font_ext.func.gl_free = gl_free; 225 dc->font_ext.func.gl_free = gl_free;
226 dc->font_ext.func.gl_draw = gl_draw; 226 dc->font_ext.func.gl_draw = gl_draw;
227 dc->font_ext.func.gl_image_new_from_data = gl_image_new_from_data; 227 dc->font_ext.func.gl_image_new = gl_image_new;
228 dc->font_ext.func.gl_image_free = gl_image_free; 228 dc->font_ext.func.gl_image_free = gl_image_free;
229 dc->font_ext.func.gl_image_draw = gl_image_draw; 229 dc->font_ext.func.gl_image_draw = gl_image_draw;
230} 230}