summaryrefslogtreecommitdiff
path: root/src/lib/edje
diff options
context:
space:
mode:
authorSungtaek Hong <sth253.hong@samsung.com>2017-07-17 15:05:19 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2017-07-17 15:05:20 +0900
commitd545929845925997e8a8a4f0e4a43d7662e2a457 (patch)
tree575530e35c0cb004a63557e15bcb4e305aa698be /src/lib/edje
parent9baa8752a9170e68e9430474f26cc1e672677d8e (diff)
edje_signal: reduce member count when deleted edje_signal_callback is found
Summary: - when deleted callback is found _edje_signal_callback_move_last() is called in order to pack match array. - during _edje_signal_callback_move_last() index skips when another deleted callback is found, but does not reduce members_count. - this duplicates a remaining callback and calls the callback twice. Test Plan: 1. add multiple edje_signal_callback by edje_object_signal_callback_add() which have the same source, signal, func but different data. 2. delete first and last callback by edje_object_signal_callback_del/edje_object_signal_callback_del_full. 3. emit edje_signal. 4. observe one callback is called twice. Reviewers: SanghyeonLee, conr2d, jpeg Subscribers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D4985
Diffstat (limited to 'src/lib/edje')
-rw-r--r--src/lib/edje/edje_signal.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/lib/edje/edje_signal.c b/src/lib/edje/edje_signal.c
index 12f22ef791..0e381c17a6 100644
--- a/src/lib/edje/edje_signal.c
+++ b/src/lib/edje/edje_signal.c
@@ -363,6 +363,11 @@ _edje_signal_callback_move_last(Edje_Signal_Callback_Group *gp,
363 gp->custom_data[i] = gp->custom_data[j]; 363 gp->custom_data[i] = gp->custom_data[j];
364 return; 364 return;
365 } 365 }
366 else
367 {
368 _edje_signal_callback_unset(gp, j);
369 m->matches_count--;
370 }
366 } 371 }
367} 372}
368 373