forked from enlightenment/efl
parent
17527c5307
commit
0395f7943c
|
@ -27,6 +27,7 @@ main(int argc, char *argv[])
|
||||||
eobj_init();
|
eobj_init();
|
||||||
|
|
||||||
Eobj *obj = eobj_add(SIMPLE_CLASS, NULL);
|
Eobj *obj = eobj_add(SIMPLE_CLASS, NULL);
|
||||||
|
Simple_Public_Data *pd = eobj_data_get(obj, SIMPLE_CLASS);
|
||||||
|
|
||||||
/* The order of these two is undetermined. */
|
/* The order of these two is undetermined. */
|
||||||
eobj_event_callback_priority_add(obj, SIG_A_CHANGED, EOBJ_CALLBACK_PRIORITY_BEFORE, _a_changed_cb, (void *) 2);
|
eobj_event_callback_priority_add(obj, SIG_A_CHANGED, EOBJ_CALLBACK_PRIORITY_BEFORE, _a_changed_cb, (void *) 2);
|
||||||
|
@ -40,7 +41,14 @@ main(int argc, char *argv[])
|
||||||
|
|
||||||
fail_if(cb_count != 3);
|
fail_if(cb_count != 3);
|
||||||
|
|
||||||
eobj_event_callback_del_full(obj, SIG_A_CHANGED, _a_changed_cb, NULL);
|
eobj_event_callback_del_full(obj, SIG_A_CHANGED, _a_changed_cb, (void *) 3);
|
||||||
|
fail_if(pd->cb_count != 3);
|
||||||
|
eobj_event_callback_del_full(obj, SIG_A_CHANGED, _a_changed_cb, (void *) 4);
|
||||||
|
fail_if(pd->cb_count != 2);
|
||||||
|
eobj_event_callback_del(obj, SIG_A_CHANGED, _a_changed_cb);
|
||||||
|
fail_if(pd->cb_count != 1);
|
||||||
|
eobj_event_callback_del(obj, SIG_A_CHANGED, _a_changed_cb);
|
||||||
|
fail_if(pd->cb_count != 0);
|
||||||
|
|
||||||
eobj_unref(obj);
|
eobj_unref(obj);
|
||||||
eobj_shutdown();
|
eobj_shutdown();
|
||||||
|
|
|
@ -5,6 +5,7 @@ EAPI Eobj_Op SIMPLE_BASE_ID = 0;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
Simple_Public_Data pub;
|
||||||
int a;
|
int a;
|
||||||
} Private_Data;
|
} Private_Data;
|
||||||
|
|
||||||
|
@ -29,6 +30,7 @@ _a_set(Eobj *obj, Eobj_Op op, va_list *list)
|
||||||
Eina_Bool
|
Eina_Bool
|
||||||
_cb_added(void *data, Eobj *obj, const Eobj_Event_Description *desc, void *event_info)
|
_cb_added(void *data, Eobj *obj, const Eobj_Event_Description *desc, void *event_info)
|
||||||
{
|
{
|
||||||
|
Simple_Public_Data *pd = eobj_data_get(obj, _my_class);
|
||||||
const Eobj_Event_Description *cb_desc = event_info;
|
const Eobj_Event_Description *cb_desc = event_info;
|
||||||
(void) data;
|
(void) data;
|
||||||
(void) desc;
|
(void) desc;
|
||||||
|
@ -36,16 +38,16 @@ _cb_added(void *data, Eobj *obj, const Eobj_Event_Description *desc, void *event
|
||||||
if (cb_desc != SIG_A_CHANGED)
|
if (cb_desc != SIG_A_CHANGED)
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
|
|
||||||
int count = (int) eobj_generic_data_get(obj, "cb_count") + 1;
|
pd->cb_count++;
|
||||||
eobj_generic_data_set(obj, "cb_count", (void *) count);
|
|
||||||
|
|
||||||
printf("Added SIG_A_CHANGED callback to %p. Count: %d\n", obj, count);
|
printf("Added SIG_A_CHANGED callback to %p. Count: %d\n", obj, pd->cb_count);
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Eina_Bool
|
Eina_Bool
|
||||||
_cb_deled(void *data, Eobj *obj, const Eobj_Event_Description *desc, void *event_info)
|
_cb_deled(void *data, Eobj *obj, const Eobj_Event_Description *desc, void *event_info)
|
||||||
{
|
{
|
||||||
|
Simple_Public_Data *pd = eobj_data_get(obj, _my_class);
|
||||||
const Eobj_Event_Description *cb_desc = event_info;
|
const Eobj_Event_Description *cb_desc = event_info;
|
||||||
(void) data;
|
(void) data;
|
||||||
(void) desc;
|
(void) desc;
|
||||||
|
@ -53,10 +55,9 @@ _cb_deled(void *data, Eobj *obj, const Eobj_Event_Description *desc, void *event
|
||||||
if (cb_desc != SIG_A_CHANGED)
|
if (cb_desc != SIG_A_CHANGED)
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
|
|
||||||
int count = (int) eobj_generic_data_get(obj, "cb_count") - 1;
|
pd->cb_count--;
|
||||||
eobj_generic_data_set(obj, "cb_count", (void *) count);
|
|
||||||
|
|
||||||
printf("Removed SIG_A_CHANGED callback from %p. Count: %d\n", obj, count);
|
printf("Removed SIG_A_CHANGED callback from %p. Count: %d\n", obj, pd->cb_count);
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,11 @@ enum {
|
||||||
SIMPLE_SUB_ID_LAST
|
SIMPLE_SUB_ID_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
int cb_count;
|
||||||
|
} Simple_Public_Data;
|
||||||
|
|
||||||
#define SIMPLE_ID(sub_id) (SIMPLE_BASE_ID + sub_id)
|
#define SIMPLE_ID(sub_id) (SIMPLE_BASE_ID + sub_id)
|
||||||
|
|
||||||
#define SIMPLE_A_SET(a) SIMPLE_ID(SIMPLE_SUB_ID_A_SET), EOBJ_TYPECHECK(int, a)
|
#define SIMPLE_A_SET(a) SIMPLE_ID(SIMPLE_SUB_ID_A_SET), EOBJ_TYPECHECK(int, a)
|
||||||
|
|
Loading…
Reference in New Issue