diff --git a/data/edje/include/edje.inc b/data/edje/include/edje.inc index a75e3cf267..1cf7b89f84 100644 --- a/data/edje/include/edje.inc +++ b/data/edje/include/edje.inc @@ -60,6 +60,7 @@ native Float:fetch_float (id, pos); /********************/ native timer (Float:in, fname[], val); native cancel_timer(id); +native reset_timer(id); /*******************/ /* Edje anim calls */ diff --git a/src/lib/edje/edje_embryo.c b/src/lib/edje/edje_embryo.c index 5fa5ba308e..a22bc31b35 100644 --- a/src/lib/edje/edje_embryo.c +++ b/src/lib/edje/edje_embryo.c @@ -66,6 +66,7 @@ * set_str(id, str[]) * timer(Float:in, fname[], val) * cancel_timer(id) + * reset_timer(id) * anim(Float:len, fname[], val) * cancel_anim(id) * emit(sig[], src[]) @@ -635,6 +636,21 @@ _edje_embryo_fn_cancel_timer(Embryo_Program *ep, Embryo_Cell *params) return 0; } +/* reset_timer(id) */ +static Embryo_Cell +_edje_embryo_fn_reset_timer(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int id; + + CHKPARAM(1); + ed = embryo_program_data_get(ep); + id = params[1]; + if (id <= 0) return 0; + _edje_var_timer_del(ed, id); + return 0; +} + /* anim(Float:len, fname[], val) */ static Embryo_Cell _edje_embryo_fn_anim(Embryo_Program *ep, Embryo_Cell *params) @@ -3690,6 +3706,7 @@ _edje_embryo_script_init(Edje_Part_Collection *edc) embryo_program_native_call_add(ep, "timer", _edje_embryo_fn_timer); embryo_program_native_call_add(ep, "cancel_timer", _edje_embryo_fn_cancel_timer); + embryo_program_native_call_add(ep, "reset_timer", _edje_embryo_fn_reset_timer); embryo_program_native_call_add(ep, "anim", _edje_embryo_fn_anim); embryo_program_native_call_add(ep, "cancel_anim", _edje_embryo_fn_cancel_anim); diff --git a/src/lib/edje/edje_var.c b/src/lib/edje/edje_var.c index 5e40f627c7..10ac2dd64d 100644 --- a/src/lib/edje/edje_var.c +++ b/src/lib/edje/edje_var.c @@ -1022,6 +1022,16 @@ _edje_var_timer_del(Edje *ed, int id) free(et); } +void +_edje_var_timer_reset(Edje *ed, int id) +{ + Edje_Var_Timer *et; + + et = _edje_var_timer_find(ed, id); + if (et) + ecore_timer_reset(et->timer); +} + int _edje_var_anim_add(Edje *ed, double len, const char *fname, int val) {