aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzmike <michael.blumenkrantz@gmail.com>2014-09-04 21:05:05 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2014-09-04 21:10:16 -0400
commit093e48845078a250b6180dcf7bfb8b5df09846dc (patch)
tree68aba735b0b3e79a54e3b9dd69f27d548d7d11a1
parentefl 1.11 - remove ok dup var warning (diff)
downloadefl-093e48845078a250b6180dcf7bfb8b5df09846dc.tar.gz
edje embryo stop_program() should stop pending actions
ACTION_STOP already does this @fix
-rw-r--r--src/lib/edje/edje_embryo.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/lib/edje/edje_embryo.c b/src/lib/edje/edje_embryo.c
index 7924771c04..1a4e24d6a9 100644
--- a/src/lib/edje/edje_embryo.c
+++ b/src/lib/edje/edje_embryo.c
@@ -799,7 +799,8 @@ _edje_embryo_fn_stop_program(Embryo_Program *ep, Embryo_Cell *params)
Edje *ed;
int program_id = 0;
Edje_Running_Program *runp;
- Eina_List *l;
+ Edje_Pending_Program *pp;
+ Eina_List *l, *ll;
CHKPARAM(1);
ed = embryo_program_data_get(ep);
@@ -811,6 +812,13 @@ _edje_embryo_fn_stop_program(Embryo_Program *ep, Embryo_Cell *params)
EINA_LIST_FOREACH(ed->actions, l, runp)
if (program_id == runp->program->id)
_edje_program_end(ed, runp);
+ EINA_LIST_FOREACH_SAFE(ed->pending_actions, l, ll, pp)
+ if (program_id == pp->program->id)
+ {
+ ed->pending_actions = eina_list_remove_list(ed->pending_actions, l);
+ ecore_timer_del(pp->timer);
+ free(pp);
+ }
ed->walking_actions = EINA_FALSE;