parent
c11dd0704b
commit
0e1b4f5322
|
@ -13,17 +13,17 @@ typedef struct _E_Fm2_Op_Registry_Entry_Internal E_Fm2_Op_Registry_Entry_Interna
|
||||||
struct _E_Fm2_Op_Registry_Entry_Listener
|
struct _E_Fm2_Op_Registry_Entry_Listener
|
||||||
{
|
{
|
||||||
EINA_INLIST;
|
EINA_INLIST;
|
||||||
void (*cb)(void *data, const E_Fm2_Op_Registry_Entry *entry);
|
void (*cb)(void *data, const E_Fm2_Op_Registry_Entry *entry);
|
||||||
void *data;
|
void *data;
|
||||||
void (*free_data)(void *data);
|
void (*free_data)(void *data);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _E_Fm2_Op_Registry_Entry_Internal
|
struct _E_Fm2_Op_Registry_Entry_Internal
|
||||||
{
|
{
|
||||||
E_Fm2_Op_Registry_Entry entry;
|
E_Fm2_Op_Registry_Entry entry;
|
||||||
Eina_Inlist *listeners;
|
Eina_Inlist *listeners;
|
||||||
int references;
|
int references;
|
||||||
Ecore_Event *changed_event;
|
Ecore_Event *changed_event;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -41,7 +41,7 @@ _e_fm2_op_registry_entry_e_fm_monitor_start(const E_Fm2_Op_Registry_Entry *entry
|
||||||
if (!entry->e_fm) return;
|
if (!entry->e_fm) return;
|
||||||
evas_object_event_callback_add
|
evas_object_event_callback_add
|
||||||
(entry->e_fm, EVAS_CALLBACK_DEL,
|
(entry->e_fm, EVAS_CALLBACK_DEL,
|
||||||
_e_fm2_op_registry_entry_e_fm_deleted, entry);
|
_e_fm2_op_registry_entry_e_fm_deleted, entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -50,10 +50,9 @@ _e_fm2_op_registry_entry_e_fm_monitor_stop(const E_Fm2_Op_Registry_Entry *entry)
|
||||||
if (!entry->e_fm) return;
|
if (!entry->e_fm) return;
|
||||||
evas_object_event_callback_del_full
|
evas_object_event_callback_del_full
|
||||||
(entry->e_fm, EVAS_CALLBACK_DEL,
|
(entry->e_fm, EVAS_CALLBACK_DEL,
|
||||||
_e_fm2_op_registry_entry_e_fm_deleted, entry);
|
_e_fm2_op_registry_entry_e_fm_deleted, entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static inline E_Fm2_Op_Registry_Entry_Internal *
|
static inline E_Fm2_Op_Registry_Entry_Internal *
|
||||||
_e_fm2_op_registry_entry_internal_get(const E_Fm2_Op_Registry_Entry *entry)
|
_e_fm2_op_registry_entry_internal_get(const E_Fm2_Op_Registry_Entry *entry)
|
||||||
{
|
{
|
||||||
|
@ -67,11 +66,11 @@ _e_fm2_op_registry_entry_internal_free(E_Fm2_Op_Registry_Entry_Internal *e)
|
||||||
|
|
||||||
while (e->listeners)
|
while (e->listeners)
|
||||||
{
|
{
|
||||||
E_Fm2_Op_Registry_Entry_Listener *listener = (void *)e->listeners;
|
E_Fm2_Op_Registry_Entry_Listener *listener = (void *)e->listeners;
|
||||||
e->listeners = eina_inlist_remove(e->listeners, e->listeners);
|
e->listeners = eina_inlist_remove(e->listeners, e->listeners);
|
||||||
|
|
||||||
if (listener->free_data) listener->free_data(listener->data);
|
if (listener->free_data) listener->free_data(listener->data);
|
||||||
free(listener);
|
free(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
eina_stringshare_del(e->entry.src);
|
eina_stringshare_del(e->entry.src);
|
||||||
|
@ -108,7 +107,7 @@ _e_fm2_op_registry_entry_listeners_call(const E_Fm2_Op_Registry_Entry_Internal *
|
||||||
|
|
||||||
if (eina_inlist_count(e->listeners) < 1) return;
|
if (eina_inlist_count(e->listeners) < 1) return;
|
||||||
|
|
||||||
EINA_INLIST_FOREACH_SAFE(e->listeners, l, listener)
|
EINA_INLIST_FOREACH_SAFE (e->listeners, l, listener)
|
||||||
listener->cb(listener->data, &e->entry);
|
listener->cb(listener->data, &e->entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,7 +123,7 @@ _e_fm2_op_registry_entry_internal_event(E_Fm2_Op_Registry_Entry_Internal *e, int
|
||||||
{
|
{
|
||||||
_e_fm2_op_registry_entry_internal_ref(e);
|
_e_fm2_op_registry_entry_internal_ref(e);
|
||||||
ecore_event_add(event_type, &(e->entry),
|
ecore_event_add(event_type, &(e->entry),
|
||||||
_e_fm2_op_registry_entry_internal_unref_on_event, e);
|
_e_fm2_op_registry_entry_internal_unref_on_event, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
Eina_Bool
|
Eina_Bool
|
||||||
|
@ -145,8 +144,8 @@ e_fm2_op_registry_entry_add(int id, Evas_Object *e_fm, E_Fm_Op_Type op, E_Fm2_Op
|
||||||
|
|
||||||
if (!eina_hash_add(_e_fm2_op_registry, &id, e))
|
if (!eina_hash_add(_e_fm2_op_registry, &id, e))
|
||||||
{
|
{
|
||||||
free(e);
|
free(e);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
_e_fm2_op_registry_entry_e_fm_monitor_start(&(e->entry));
|
_e_fm2_op_registry_entry_e_fm_monitor_start(&(e->entry));
|
||||||
|
@ -191,8 +190,8 @@ e_fm2_op_registry_entry_changed(const E_Fm2_Op_Registry_Entry *entry)
|
||||||
if (e->changed_event) return;
|
if (e->changed_event) return;
|
||||||
_e_fm2_op_registry_entry_internal_ref(e);
|
_e_fm2_op_registry_entry_internal_ref(e);
|
||||||
e->changed_event = ecore_event_add
|
e->changed_event = ecore_event_add
|
||||||
(E_EVENT_FM_OP_REGISTRY_CHANGED, &(e->entry),
|
(E_EVENT_FM_OP_REGISTRY_CHANGED, &(e->entry),
|
||||||
_e_fm2_op_registry_entry_internal_unref_on_changed_event, e);
|
_e_fm2_op_registry_entry_internal_unref_on_changed_event, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -326,15 +325,15 @@ e_fm2_op_registry_entry_listener_add(E_Fm2_Op_Registry_Entry *entry, void (*cb)(
|
||||||
|
|
||||||
if ((!entry) || (!cb))
|
if ((!entry) || (!cb))
|
||||||
{
|
{
|
||||||
if (free_data) free_data((void *)data);
|
if (free_data) free_data((void *)data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
listener = malloc(sizeof(*listener));
|
listener = malloc(sizeof(*listener));
|
||||||
if (!listener)
|
if (!listener)
|
||||||
{
|
{
|
||||||
if (free_data) free_data((void *)data);
|
if (free_data) free_data((void *)data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
listener->cb = cb;
|
listener->cb = cb;
|
||||||
listener->data = (void *)data;
|
listener->data = (void *)data;
|
||||||
|
@ -346,9 +345,9 @@ e_fm2_op_registry_entry_listener_add(E_Fm2_Op_Registry_Entry *entry, void (*cb)(
|
||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
printf("could not add listener: %s\n", eina_error_msg_get(err));
|
printf("could not add listener: %s\n", eina_error_msg_get(err));
|
||||||
if (free_data) free_data((void *)data);
|
if (free_data) free_data((void *)data);
|
||||||
free(listener);
|
free(listener);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -374,10 +373,10 @@ e_fm2_op_registry_entry_listener_del(E_Fm2_Op_Registry_Entry *entry, void (*cb)(
|
||||||
EINA_INLIST_FOREACH(e->listeners, l)
|
EINA_INLIST_FOREACH(e->listeners, l)
|
||||||
if ((l->cb == cb) && (l->data == data))
|
if ((l->cb == cb) && (l->data == data))
|
||||||
{
|
{
|
||||||
e->listeners = eina_inlist_remove(e->listeners, EINA_INLIST_GET(l));
|
e->listeners = eina_inlist_remove(e->listeners, EINA_INLIST_GET(l));
|
||||||
if (l->free_data) l->free_data(l->data);
|
if (l->free_data) l->free_data(l->data);
|
||||||
free(l);
|
free(l);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -422,8 +421,8 @@ e_fm2_op_registry_get_all(void)
|
||||||
it = eina_hash_iterator_data_new(_e_fm2_op_registry);
|
it = eina_hash_iterator_data_new(_e_fm2_op_registry);
|
||||||
EINA_ITERATOR_FOREACH(it, e)
|
EINA_ITERATOR_FOREACH(it, e)
|
||||||
{
|
{
|
||||||
_e_fm2_op_registry_entry_internal_ref(e);
|
_e_fm2_op_registry_entry_internal_ref(e);
|
||||||
list = eina_list_append(list, &(e->entry));
|
list = eina_list_append(list, &(e->entry));
|
||||||
}
|
}
|
||||||
eina_iterator_free(it);
|
eina_iterator_free(it);
|
||||||
|
|
||||||
|
@ -450,7 +449,6 @@ e_fm2_op_registry_count(void)
|
||||||
return eina_hash_population(_e_fm2_op_registry);
|
return eina_hash_population(_e_fm2_op_registry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
EINTERN unsigned int
|
EINTERN unsigned int
|
||||||
e_fm2_op_registry_init(void)
|
e_fm2_op_registry_init(void)
|
||||||
{
|
{
|
||||||
|
@ -460,8 +458,8 @@ e_fm2_op_registry_init(void)
|
||||||
_e_fm2_op_registry = eina_hash_int32_new(NULL);
|
_e_fm2_op_registry = eina_hash_int32_new(NULL);
|
||||||
if (!_e_fm2_op_registry)
|
if (!_e_fm2_op_registry)
|
||||||
{
|
{
|
||||||
_e_fm2_init_count = 0;
|
_e_fm2_init_count = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (E_EVENT_FM_OP_REGISTRY_ADD == 0)
|
if (E_EVENT_FM_OP_REGISTRY_ADD == 0)
|
||||||
|
@ -493,5 +491,6 @@ e_fm2_op_registry_entry_abort(E_Fm2_Op_Registry_Entry *entry)
|
||||||
if (!entry) return;
|
if (!entry) return;
|
||||||
|
|
||||||
if (entry->func.abort)
|
if (entry->func.abort)
|
||||||
entry->func.abort(entry);
|
entry->func.abort(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue