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
This commit is contained in:
Derek Foreman 2018-05-08 12:26:02 -05:00
parent da8127e1f8
commit e12498f4d4
2 changed files with 11 additions and 3 deletions

View File

@ -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

View File

@ -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);
}