forked from enlightenment/efl
edje: Edje_Edit - Improved speed generate source code for program.
Summary: _edje_generate_source_program gets Edje_Program pointer from _edje_program_get_byname at start of function,but in body calls public methods for get parameters of programs. Each of this methods calls _edje_program_get_byname, what make generation of source whole program is slow. Replaced public API calls with using fields of Edje_Program structure. Reviewers: cedric, raster, seoz, Hermet Reviewed By: cedric CC: reutskiy.v.v, cedric Differential Revision: https://phab.enlightenment.org/D950 Signed-off-by: Cedric BAIL <c.bail@partner.samsung.com>
This commit is contained in:
parent
5cbceec23f
commit
793cef0d04
|
@ -6579,14 +6579,13 @@ edje_edit_program_action_set(Evas_Object *obj, const char *prog, Edje_Action_Typ
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI Eina_List *
|
static Eina_List *
|
||||||
edje_edit_program_targets_get(Evas_Object *obj, const char *prog)
|
_edje_program_targets_get(Evas_Object *obj, Edje_Program *epr)
|
||||||
{
|
{
|
||||||
Eina_List *l, *targets = NULL;
|
Eina_List *l, *targets = NULL;
|
||||||
Edje_Program_Target *t;
|
Edje_Program_Target *t;
|
||||||
|
|
||||||
GET_ED_OR_RETURN(NULL);
|
GET_ED_OR_RETURN(NULL);
|
||||||
GET_EPR_OR_RETURN(NULL);
|
|
||||||
|
|
||||||
//printf("GET TARGETS for program: %s [count: %d]\n", prog, eina_list_count(epr->targets));
|
//printf("GET TARGETS for program: %s [count: %d]\n", prog, eina_list_count(epr->targets));
|
||||||
EINA_LIST_FOREACH(epr->targets, l, t)
|
EINA_LIST_FOREACH(epr->targets, l, t)
|
||||||
|
@ -6615,6 +6614,15 @@ edje_edit_program_targets_get(Evas_Object *obj, const char *prog)
|
||||||
return targets;
|
return targets;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI Eina_List *
|
||||||
|
edje_edit_program_targets_get(Evas_Object *obj, const char *prog)
|
||||||
|
{
|
||||||
|
GET_EPR_OR_RETURN(NULL);
|
||||||
|
|
||||||
|
return _edje_program_targets_get(obj, epr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
EAPI Eina_Bool
|
||||||
edje_edit_program_targets_clear(Evas_Object *obj, const char *prog)
|
edje_edit_program_targets_clear(Evas_Object *obj, const char *prog)
|
||||||
{
|
{
|
||||||
|
@ -6711,14 +6719,13 @@ edje_edit_program_target_del(Evas_Object *obj, const char *prog, const char *tar
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI Eina_List *
|
static Eina_List *
|
||||||
edje_edit_program_afters_get(Evas_Object *obj, const char *prog)
|
_edje_program_afters_get(Evas_Object *obj, Edje_Program *epr)
|
||||||
{
|
{
|
||||||
Eina_List *l, *afters = NULL;
|
Eina_List *l, *afters = NULL;
|
||||||
Edje_Program_After *a;
|
Edje_Program_After *a;
|
||||||
|
|
||||||
GET_ED_OR_RETURN(NULL);
|
GET_ED_OR_RETURN(NULL);
|
||||||
GET_EPR_OR_RETURN(NULL);
|
|
||||||
|
|
||||||
// printf("GET AFTERS for program: %s [count: %d]\n", prog, eina_list_count(epr->after));
|
// printf("GET AFTERS for program: %s [count: %d]\n", prog, eina_list_count(epr->after));
|
||||||
EINA_LIST_FOREACH(epr->after, l, a)
|
EINA_LIST_FOREACH(epr->after, l, a)
|
||||||
|
@ -6735,6 +6742,14 @@ edje_edit_program_afters_get(Evas_Object *obj, const char *prog)
|
||||||
return afters;
|
return afters;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI Eina_List *
|
||||||
|
edje_edit_program_afters_get(Evas_Object *obj, const char *prog)
|
||||||
|
{
|
||||||
|
GET_EPR_OR_RETURN(NULL);
|
||||||
|
|
||||||
|
return _edje_program_afters_get(obj, epr);
|
||||||
|
}
|
||||||
|
|
||||||
EAPI Eina_Bool
|
EAPI Eina_Bool
|
||||||
edje_edit_program_afters_clear(Evas_Object *obj, const char *prog)
|
edje_edit_program_afters_clear(Evas_Object *obj, const char *prog)
|
||||||
{
|
{
|
||||||
|
@ -7698,27 +7713,27 @@ _edje_generate_source_of_program(Evas_Object *obj, const char *program, Eina_Str
|
||||||
BUF_APPENDF(I3"program { name: \"%s\";\n", program);
|
BUF_APPENDF(I3"program { name: \"%s\";\n", program);
|
||||||
|
|
||||||
/* Signal */
|
/* Signal */
|
||||||
if ((s = edje_edit_program_signal_get(obj, program)))
|
if ((s = eina_stringshare_add(epr->signal)))
|
||||||
{
|
{
|
||||||
BUF_APPENDF(I4"signal: \"%s\";\n", s);
|
BUF_APPENDF(I4"signal: \"%s\";\n", s);
|
||||||
edje_edit_string_free(s);
|
edje_edit_string_free(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Source */
|
/* Source */
|
||||||
if ((s = edje_edit_program_source_get(obj, program)))
|
if ((s = eina_stringshare_add(epr->source)))
|
||||||
{
|
{
|
||||||
BUF_APPENDF(I4"source: \"%s\";\n", s);
|
BUF_APPENDF(I4"source: \"%s\";\n", s);
|
||||||
edje_edit_string_free(s);
|
edje_edit_string_free(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Action */
|
/* Action */
|
||||||
switch (edje_edit_program_action_get(obj, program))
|
switch (epr->action)
|
||||||
{
|
{
|
||||||
case EDJE_ACTION_TYPE_ACTION_STOP:
|
case EDJE_ACTION_TYPE_ACTION_STOP:
|
||||||
BUF_APPEND(I4"action: ACTION_STOP;\n");
|
BUF_APPEND(I4"action: ACTION_STOP;\n");
|
||||||
break;
|
break;
|
||||||
case EDJE_ACTION_TYPE_STATE_SET:
|
case EDJE_ACTION_TYPE_STATE_SET:
|
||||||
if ((s = edje_edit_program_state_get(obj, program)))
|
if ((s = eina_stringshare_add(epr->state)))
|
||||||
{
|
{
|
||||||
BUF_APPENDF(I4"action: STATE_SET \"%s\" %.2f;\n", s,
|
BUF_APPENDF(I4"action: STATE_SET \"%s\" %.2f;\n", s,
|
||||||
edje_edit_program_value_get(obj, program));
|
edje_edit_program_value_get(obj, program));
|
||||||
|
@ -7726,8 +7741,8 @@ _edje_generate_source_of_program(Evas_Object *obj, const char *program, Eina_Str
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EDJE_ACTION_TYPE_SIGNAL_EMIT:
|
case EDJE_ACTION_TYPE_SIGNAL_EMIT:
|
||||||
s = edje_edit_program_state_get(obj, program);
|
s = eina_stringshare_add(epr->state);
|
||||||
s2 = edje_edit_program_state2_get(obj, program);
|
s2 = eina_stringshare_add(epr->state2);
|
||||||
if (s && s2)
|
if (s && s2)
|
||||||
{
|
{
|
||||||
BUF_APPENDF(I4"action: SIGNAL_EMIT \"%s\" \"%s\";\n", s, s2);
|
BUF_APPENDF(I4"action: SIGNAL_EMIT \"%s\" \"%s\";\n", s, s2);
|
||||||
|
@ -7763,8 +7778,8 @@ _edje_generate_source_of_program(Evas_Object *obj, const char *program, Eina_Str
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Transition */
|
/* Transition */
|
||||||
db = edje_edit_program_transition_time_get(obj, program);
|
db = TO_DOUBLE(epr->tween.time);
|
||||||
switch (edje_edit_program_transition_get(obj, program))
|
switch (epr->tween.mode)
|
||||||
{
|
{
|
||||||
case EDJE_TWEEN_MODE_LINEAR:
|
case EDJE_TWEEN_MODE_LINEAR:
|
||||||
if (db)
|
if (db)
|
||||||
|
@ -7784,13 +7799,13 @@ _edje_generate_source_of_program(Evas_Object *obj, const char *program, Eina_Str
|
||||||
}
|
}
|
||||||
|
|
||||||
/* In */
|
/* In */
|
||||||
db = edje_edit_program_in_from_get(obj, program);
|
db = epr->in.from;
|
||||||
db2 = edje_edit_program_in_range_get(obj, program);
|
db2 = epr->in.range;
|
||||||
if (db || db2)
|
if (db || db2)
|
||||||
BUF_APPENDF(I4"in: %.5f %.5f;\n", db, db2);
|
BUF_APPENDF(I4"in: %.5f %.5f;\n", db, db2);
|
||||||
|
|
||||||
/* Targets */
|
/* Targets */
|
||||||
if ((ll = edje_edit_program_targets_get(obj, program)))
|
if ((ll = _edje_program_targets_get(obj, epr)))
|
||||||
{
|
{
|
||||||
EINA_LIST_FOREACH(ll, l, data)
|
EINA_LIST_FOREACH(ll, l, data)
|
||||||
BUF_APPENDF(I4"target: \"%s\";\n", data);
|
BUF_APPENDF(I4"target: \"%s\";\n", data);
|
||||||
|
@ -7798,7 +7813,7 @@ _edje_generate_source_of_program(Evas_Object *obj, const char *program, Eina_Str
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Afters */
|
/* Afters */
|
||||||
if ((ll = edje_edit_program_afters_get(obj, program)))
|
if ((ll = _edje_program_afters_get(obj, epr)))
|
||||||
{
|
{
|
||||||
EINA_LIST_FOREACH(ll, l, data)
|
EINA_LIST_FOREACH(ll, l, data)
|
||||||
BUF_APPENDF(I4"after: \"%s\";\n", data);
|
BUF_APPENDF(I4"after: \"%s\";\n", data);
|
||||||
|
@ -7807,8 +7822,8 @@ _edje_generate_source_of_program(Evas_Object *obj, const char *program, Eina_Str
|
||||||
|
|
||||||
// TODO Support script {}
|
// TODO Support script {}
|
||||||
/* api */
|
/* api */
|
||||||
api_name = edje_edit_program_api_name_get(obj, program);
|
api_name = eina_stringshare_add(epr->api.name);
|
||||||
api_description = edje_edit_program_api_description_get(obj, program);
|
api_description = eina_stringshare_add(epr->api.description);
|
||||||
|
|
||||||
if (api_name || api_description)
|
if (api_name || api_description)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue