derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e12498f4d4e5dfb63052ac81ea4bc39056b8baa0
commit e12498f4d4e5dfb63052ac81ea4bc39056b8baa0 Author: Derek Foreman <der...@osg.samsung.com> Date: Tue May 8 12:26:02 2018 -0500 edje: Add seat data to extra data struct Summary: Since the extra data struct is already nicely refcounted, it's easy to add the seat data to it instead of making a new struct with almost identical code. Depends on D6112 Reviewers: zmike, cedric Reviewed By: zmike Tags: #efl Differential Revision: https://phab.enlightenment.org/D6113 --- src/lib/edje/edje_private.h | 2 ++ src/lib/edje/edje_program.c | 12 +++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h index d723dac578..6ebfaee95f 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h @@ -2201,6 +2201,8 @@ struct _Edje_Message_Signal_Data int ref; void *data; void (*free_func)(void *); + void *seat_data; + void (*seat_free_func)(void *); }; struct _Edje_Message_Signal diff --git a/src/lib/edje/edje_program.c b/src/lib/edje/edje_program.c index 6d21e6f146..06f28afb06 100644 --- a/src/lib/edje/edje_program.c +++ b/src/lib/edje/edje_program.c @@ -129,11 +129,11 @@ _edje_emit_child(Edje *ed, Edje_Real_Part *rp, const char *part, const char *sig } static Edje_Message_Signal_Data * -_edje_signal_data_setup(void *data, Ecore_Cb free_func) +_edje_signal_data_setup(void *data, Ecore_Cb free_func, void *seat_data, Ecore_Cb seat_free_func) { Edje_Message_Signal_Data *out = NULL; - if (data) + if (data || seat_data) { out = calloc(1, sizeof(*out)); if (!out) return NULL; @@ -141,6 +141,8 @@ _edje_signal_data_setup(void *data, Ecore_Cb free_func) out->ref = 1; out->data = data; out->free_func = free_func; + out->seat_data = seat_data; + out->seat_free_func = seat_free_func; } return out; } @@ -155,6 +157,10 @@ _edje_signal_data_free(Edje_Message_Signal_Data *mdata) { mdata->free_func(mdata->data); } + if (mdata->seat_free_func) + { + mdata->seat_free_func(mdata->seat_data); + } free(mdata); } @@ -1296,7 +1302,7 @@ _edje_emit_full(Edje *ed, const char *sig, const char *src, void *data, void (*f else broadcast = ed->collection->broadcast_signal; - mdata = _edje_signal_data_setup(data, free_func); + mdata = _edje_signal_data_setup(data, free_func, NULL, NULL); _edje_emit_send(ed, broadcast, sig, src, mdata); } --