EAPI RGBA_Font_Glyph *evas_common_font_int_cache_glyph_get (RGBA_Font_Int *fi, FT_UInt index);
EAPI FT_UInt evas_common_get_char_index (RGBA_Font_Int* fi, Eina_Unicode gl);
EAPI void evas_common_font_draw_init (void);
-EAPI void evas_common_font_draw_prepare (const Evas_Text_Props *text_props);
+EAPI void evas_common_font_draw_prepare (Evas_Text_Props *text_props);
/* load */
EAPI void evas_common_font_dpi_set (int dpi);
}
EAPI void
-evas_common_font_draw_prepare(const Evas_Text_Props *text_props)
+evas_common_font_draw_prepare(Evas_Text_Props *text_props)
{
RGBA_Font_Int *fi;
EVAS_FONT_WALK_TEXT_INIT();
fg = evas_common_font_int_cache_glyph_get(fi, idx);
}
EVAS_FONT_WALK_TEXT_END();
+
+ text_props->generation = fi->generation;
}
EAPI void
_evas_common_font_int_clear(RGBA_Font_Int *fi)
{
int i, j, k;
-
+
LKL(fi->ft_mutex);
if (!fi->fash)
{
}
if (fi->inuse) fonts_use_usage -= fi->usage;
fi->usage = 0;
+ fi->generation++;
LKU(fi->ft_mutex);
}
const Evas_Text_Props *tmp_props;
const Eina_List *l;
- if (!text_props->changed) return ;
+ fi = text_props->font_instance;
+ if (!fi) return ;
+
+ if (!text_props->changed && text_props->generation == fi->generation)
+ return ;
fi = text_props->font_instance;
if (!fi) return ;
Evas_Text_Props_Info *info;
void *font_instance;
+ int generation;
Eina_Bool changed : 1;
};
in order to comply with the wanted_rend. */
Eina_List *task;
+
+ int generation;
+
unsigned char sizeok : 1;
unsigned char inuse : 1;
};