e/connman: use notifier function instead of event

For handling manager in/out inside the module, use a notifier function
instead of an event.



SVN revision: 76034
This commit is contained in:
Lucas De Marchi 2012-09-03 21:58:31 +00:00
parent 0bb82b9d1b
commit ea95cb673f
3 changed files with 16 additions and 55 deletions

View File

@ -74,5 +74,6 @@ unsigned int e_connman_system_shutdown(void);
/* UI calls from econnman */
void econnman_mod_manager_update(struct Connman_Manager *cm);
void econnman_mod_manager_inout(struct Connman_Manager *cm, bool in);
#endif /* E_CONNMAN_H */

View File

@ -397,6 +397,7 @@ static struct Connman_Manager *_manager_new(void)
static inline void _e_connman_system_name_owner_exit(void)
{
econnman_mod_manager_inout(connman_manager, false);
_manager_free(connman_manager);
connman_manager = NULL;
@ -411,6 +412,7 @@ static inline void _e_connman_system_name_owner_enter(const char *owner)
bus_owner = strdup(owner);
connman_manager = _manager_new();
ecore_event_add(E_CONNMAN_EVENT_MANAGER_IN, NULL, NULL, NULL);
econnman_mod_manager_inout(connman_manager, true);
}
static void _e_connman_system_name_owner_changed(void *data __UNUSED__,

View File

@ -117,6 +117,19 @@ static void _econnman_gadget_setup(E_Connman_Instance *inst)
return;
}
void econnman_mod_manager_inout(struct Connman_Manager *cm, bool in)
{
E_Connman_Module_Context *ctxt = connman_mod->data;
const Eina_List *l;
E_Connman_Instance *inst;
DBG("Manager %s", in ? "in" : "out");
ctxt->has_manager = in;
EINA_LIST_FOREACH(ctxt->instances, l, inst)
_econnman_gadget_setup(inst);
}
static void
_connman_cb_mouse_down(void *data, Evas *evas __UNUSED__,
Evas_Object *obj __UNUSED__, void *event)
@ -248,40 +261,6 @@ static const E_Gadcon_Client_Class _gc_class =
EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, _e_connman_Name };
static Eina_Bool
_econnman_event_manager_in(void *data, int type __UNUSED__,
void *event __UNUSED__)
{
E_Connman_Module_Context *ctxt = data;
const Eina_List *l;
E_Connman_Instance *inst;
DBG("Manager in");
ctxt->has_manager = EINA_TRUE;
EINA_LIST_FOREACH(ctxt->instances, l, inst)
_econnman_gadget_setup(inst);
return ECORE_CALLBACK_PASS_ON;
}
static Eina_Bool
_econnman_event_manager_out(void *data, int type __UNUSED__,
void *event __UNUSED__)
{
E_Connman_Module_Context *ctxt = data;
const Eina_List *l;
E_Connman_Instance *inst;
DBG("Manager out");
ctxt->has_manager = EINA_FALSE;
EINA_LIST_FOREACH(ctxt->instances, l, inst)
_econnman_gadget_setup(inst);
return ECORE_CALLBACK_PASS_ON;
}
static E_Config_Dialog * _econnman_config(E_Container *con,
const char *params __UNUSED__)
{
@ -320,24 +299,6 @@ _econnman_configure_registry_unregister(void)
e_configure_registry_category_del(_reg_cat);
}
static void
_econnman_events_register(E_Connman_Module_Context *ctxt)
{
ctxt->event.manager_in = ecore_event_handler_add
(E_CONNMAN_EVENT_MANAGER_IN, _econnman_event_manager_in, ctxt);
ctxt->event.manager_out = ecore_event_handler_add
(E_CONNMAN_EVENT_MANAGER_OUT, _econnman_event_manager_out, ctxt);
}
static void
_econnman_events_unregister(E_Connman_Module_Context *ctxt)
{
if (ctxt->event.manager_in)
ecore_event_handler_del(ctxt->event.manager_in);
if (ctxt->event.manager_out)
ecore_event_handler_del(ctxt->event.manager_out);
}
EAPI void *
e_modapi_init(E_Module *m)
{
@ -370,8 +331,6 @@ e_modapi_init(E_Module *m)
_econnman_configure_registry_register();
e_gadcon_provider_register(&_gc_class);
_econnman_events_register(ctxt);
return ctxt;
error_log_domain:
@ -406,7 +365,6 @@ e_modapi_shutdown(E_Module *m)
if (!ctxt)
return 0;
_econnman_events_unregister(ctxt);
_econnman_instances_free(ctxt);
_econnman_configure_registry_unregister();
e_gadcon_provider_unregister(&_gc_class);