summaryrefslogtreecommitdiff
path: root/src/lib/edje/edje_embryo.c
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2016-02-19 13:20:45 -0500
committerMike Blumenkrantz <zmike@osg.samsung.com>2016-02-19 13:24:30 -0500
commit2cf1f0e6e358ff306fcc7ccc37b8289a52768a52 (patch)
tree5b64be8667184c6f6a445aaf3511570bd9609363 /src/lib/edje/edje_embryo.c
parent0e44209215a89d84e7e755178d439471a51bb4e7 (diff)
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
Diffstat (limited to 'src/lib/edje/edje_embryo.c')
-rw-r--r--src/lib/edje/edje_embryo.c14
1 files changed, 14 insertions, 0 deletions
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)
849 rp = ed->table_parts[part_id % ed->table_parts_size]; 849 rp = ed->table_parts[part_id % ed->table_parts_size];
850 if (rp) 850 if (rp)
851 { 851 {
852 Eina_List *l, *ll, *lll;
853 Edje_Pending_Program *pp;
854 Edje_Program_Target *pt;
852 /* there is only ever 1 program acting on a part at any time */ 855 /* there is only ever 1 program acting on a part at any time */
853 if (rp->program) _edje_program_end(ed, rp->program); 856 if (rp->program) _edje_program_end(ed, rp->program);
857 EINA_LIST_FOREACH_SAFE(ed->pending_actions, l, ll, pp)
858 {
859 EINA_LIST_FOREACH(pp->program->targets, lll, pt)
860 if (pt->id == part_id)
861 {
862 ed->pending_actions = eina_list_remove_list(ed->pending_actions, l);
863 ecore_timer_del(pp->timer);
864 free(pp);
865 break;
866 }
867 }
854 } 868 }
855 return 0; 869 return 0;
856} 870}