forked from enlightenment/efl
elementary textpath: use job for deferred drawing task.
textpath performed drawing task multiple times unnecesarily. It should be performed only one time after all setting up.
This commit is contained in:
parent
d1cce82565
commit
9a25bad5bf
|
@ -67,6 +67,7 @@ struct _Efl_Ui_Textpath_Data
|
||||||
|
|
||||||
Eina_Inlist *segments;
|
Eina_Inlist *segments;
|
||||||
int total_length;
|
int total_length;
|
||||||
|
Ecore_Job *draw_text_job;
|
||||||
#ifdef EFL_UI_TEXTPATH_LINE_DEBUG
|
#ifdef EFL_UI_TEXTPATH_LINE_DEBUG
|
||||||
Eina_List *lines;
|
Eina_List *lines;
|
||||||
#endif
|
#endif
|
||||||
|
@ -315,8 +316,9 @@ _map_point_calc(Efl_Ui_Textpath_Data *pd)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_text_draw(Efl_Ui_Textpath_Data *pd)
|
_text_draw(void *data)
|
||||||
{
|
{
|
||||||
|
Efl_Ui_Textpath_Data *pd = data;
|
||||||
Efl_Ui_Textpath_Segment *seg;
|
Efl_Ui_Textpath_Segment *seg;
|
||||||
Evas_Map *map;
|
Evas_Map *map;
|
||||||
int w1, w2;
|
int w1, w2;
|
||||||
|
@ -383,6 +385,8 @@ _text_draw(Efl_Ui_Textpath_Data *pd)
|
||||||
evas_object_map_enable_set(pd->text_obj, EINA_TRUE);
|
evas_object_map_enable_set(pd->text_obj, EINA_TRUE);
|
||||||
evas_object_map_set(pd->text_obj, map);
|
evas_object_map_set(pd->text_obj, map);
|
||||||
evas_map_free(map);
|
evas_map_free(map);
|
||||||
|
|
||||||
|
pd->draw_text_job = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -501,7 +505,8 @@ _path_data_get(Eo *obj, Efl_Ui_Textpath_Data *pd, Eina_Bool set_min)
|
||||||
static void
|
static void
|
||||||
_sizing_eval(Efl_Ui_Textpath_Data *pd)
|
_sizing_eval(Efl_Ui_Textpath_Data *pd)
|
||||||
{
|
{
|
||||||
_text_draw(pd);
|
ecore_job_del(pd->draw_text_job);
|
||||||
|
pd->draw_text_job = ecore_job_add(_text_draw, pd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -615,6 +620,7 @@ _efl_ui_textpath_efl_object_destructor(Eo *obj, Efl_Ui_Textpath_Data *pd)
|
||||||
pd->segments = eina_inlist_remove(pd->segments, EINA_INLIST_GET(seg));
|
pd->segments = eina_inlist_remove(pd->segments, EINA_INLIST_GET(seg));
|
||||||
free(seg);
|
free(seg);
|
||||||
}
|
}
|
||||||
|
ecore_job_del(pd->draw_text_job);
|
||||||
|
|
||||||
#ifdef EFL_UI_TEXTPATH_LINE_DEBUG
|
#ifdef EFL_UI_TEXTPATH_LINE_DEBUG
|
||||||
Evas_Object *line;
|
Evas_Object *line;
|
||||||
|
@ -669,7 +675,7 @@ _efl_ui_textpath_efl_gfx_entity_position_set(Eo *obj, Efl_Ui_Textpath_Data *pd,
|
||||||
{
|
{
|
||||||
efl_gfx_entity_position_set(efl_super(obj, MY_CLASS), pos);
|
efl_gfx_entity_position_set(efl_super(obj, MY_CLASS), pos);
|
||||||
_path_data_get(obj, pd, EINA_FALSE);
|
_path_data_get(obj, pd, EINA_FALSE);
|
||||||
_text_draw(pd);
|
_sizing_eval(pd);
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
|
|
Loading…
Reference in New Issue