forked from enlightenment/efl
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:
parent
da8127e1f8
commit
e12498f4d4
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue