datetime : Enhance launching time more by reducing calls of sizing_eval()

elm_layout_content_set() calls elm_layout_sizing_eval() internally.
So, there are many calls in _field_list_arrange() and it takes long time.
This commit is contained in:
Ryuan Choi 2014-03-05 23:52:53 +09:00
parent 06274f1c60
commit 2d4b6cd81b
2 changed files with 12 additions and 0 deletions

View File

@ -217,9 +217,12 @@ _field_list_arrange(Evas_Object *obj)
Datetime_Field *field;
char buf[BUFFER_SIZE];
int idx;
Eina_Bool freeze;
ELM_DATETIME_DATA_GET(obj, sd);
freeze = sd->freeze_sizing;
sd->freeze_sizing = EINA_TRUE;
for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++)
{
field = sd->field_list + idx;
@ -233,6 +236,7 @@ _field_list_arrange(Evas_Object *obj)
else
evas_object_hide(elm_layout_content_unset(obj, buf));
}
sd->freeze_sizing = freeze;
elm_layout_sizing_eval(obj);
_field_list_display(obj);
@ -502,6 +506,8 @@ _elm_datetime_smart_sizing_eval(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
Evas_Coord minw = -1, minh = -1;
Elm_Datetime_Smart_Data *sd = _pd;
if (sd->freeze_sizing) return;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
if (sd->enabled_field_count)
@ -829,6 +835,7 @@ _elm_datetime_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
}
}
priv->freeze_sizing = EINA_TRUE;
if (!elm_layout_theme_set(obj, "datetime", "base",
elm_widget_style_get(obj)))
CRI("Failed to set layout!");
@ -838,6 +845,7 @@ _elm_datetime_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
elm_widget_can_focus_set(obj, EINA_TRUE);
priv->freeze_sizing = EINA_FALSE;
elm_layout_sizing_eval(obj);
// ACCESS
@ -992,6 +1000,7 @@ _field_visible_set(Eo *obj, void *_pd, va_list *list)
field->visible = visible;
sd->freeze_sizing = EINA_TRUE;
if (visible)
{
sd->enabled_field_count++;
@ -1025,6 +1034,7 @@ _field_visible_set(Eo *obj, void *_pd, va_list *list)
snprintf(buf, sizeof(buf), EDC_PART_FIELD_STR, field->location);
evas_object_hide(elm_layout_content_unset(obj, buf));
}
sd->freeze_sizing = EINA_FALSE;
elm_layout_sizing_eval(obj);

View File

@ -65,6 +65,8 @@ struct _Elm_Datetime_Smart_Data
Eina_Bool user_format : 1; /* whether user set
* format or default
* format. */
Eina_Bool freeze_sizing : 1; /* freeze sizing_eval to
* reduce unnecessary sizing */
};
struct _Format_Map