summaryrefslogtreecommitdiff
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:08:08 -0400
commit71ce70bc3f97853f3cfeb07ab0a9d8c213e322b1 (patch)
treeca8eed4857bb26cbc7f0c4bfab429ddade1e2901
parentc3e2750408d3a13320099038268bcca400c22123 (diff)
downloadefl-71ce70bc3f97853f3cfeb07ab0a9d8c213e322b1.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;