From 2cf1f0e6e358ff306fcc7ccc37b8289a52768a52 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 19 Feb 2016 13:20:45 -0500 Subject: [PATCH] edje: clear pending programs upon calling stop_programs_on() pending programs have not started yet, so they are not directly attached to the part. failing to remove them results in unexpected behavior from programs ref 71ce70bc3f97853f3cfeb07ab0a9d8c213e322b1 @fix --- src/lib/edje/edje_embryo.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/lib/edje/edje_embryo.c b/src/lib/edje/edje_embryo.c index a3fd566273..41e035483f 100644 --- a/src/lib/edje/edje_embryo.c +++ b/src/lib/edje/edje_embryo.c @@ -849,8 +849,22 @@ _edje_embryo_fn_stop_programs_on(Embryo_Program *ep, Embryo_Cell *params) rp = ed->table_parts[part_id % ed->table_parts_size]; if (rp) { + Eina_List *l, *ll, *lll; + Edje_Pending_Program *pp; + Edje_Program_Target *pt; /* there is only ever 1 program acting on a part at any time */ if (rp->program) _edje_program_end(ed, rp->program); + EINA_LIST_FOREACH_SAFE(ed->pending_actions, l, ll, pp) + { + EINA_LIST_FOREACH(pp->program->targets, lll, pt) + if (pt->id == part_id) + { + ed->pending_actions = eina_list_remove_list(ed->pending_actions, l); + ecore_timer_del(pp->timer); + free(pp); + break; + } + } } return 0; }