int MMI_EVENT_FEEDBACK;
static int _mmi_init_count = 0;
+Eina_List *listener_list = NULL;
MMIFW_API int
mmi_init(void)
ecore_init();
+ Eina_List *l = NULL;
+ mmi_event_listener *listener = NULL;
+
+ if (listener_list)
+ {
+ EINA_LIST_FOREACH(listener_list, l, listener)
+ ecore_event_handler_del(listener);
+
+ listener_list = eina_list_free(listener_list);
+ listener_list = NULL;
+ }
+
MMI_EVENT_FOCUS = ecore_event_type_new();
MMI_EVENT_STATE_CHANGE = ecore_event_type_new();
MMI_EVENT_WAKE_UP = ecore_event_type_new();
MMI_EVENT_ACTION = -1;
MMI_EVENT_FEEDBACK = -1;
+ Eina_List *l = NULL;
+ mmi_event_listener *listener = NULL;
+
+ if (listener_list)
+ {
+ EINA_LIST_FOREACH(listener_list, l, listener)
+ ecore_event_handler_del(listener);
+
+ listener_list = eina_list_free(listener_list);
+ listener_list = NULL;
+ }
+
ecore_shutdown();
return _mmi_init_count;
}
mmi_event_listener *listener;
(void) h;
- (void) ev_type;
- (void) func;
- (void) data;
+ listener = ecore_event_handler_add(ev_type, func, data);
+ listener_list = eina_list_append(listener_list, listener);
return listener;
}
return res;
}
-MMIFW_API void *
+MMIFW_API void
mmi_event_remove_listener(mmi_handle h, mmi_event_listener *listener)
{
(void) h;
- (void) listener;
- return (void *)0;
+ if (listener_list)
+ listener_list = eina_list_remove(listener_list, listener);
+ if (listener)
+ ecore_event_handler_del(listener);
}
MMIFW_API void
mmi_event_remove_all_listeners(mmi_handle h)
{
+ Eina_List *l = NULL;
+ mmi_event_listener *listener = NULL;
+
(void) h;
+
+ EINA_LIST_FOREACH(listener_list, l, listener)
+ ecore_event_handler_del(listener);
+
+ listener_list = eina_list_free(listener_list);
+ listener_list = NULL;
}
MMIFW_API void
MMIFW_API mmi_result mmi_request_send_get_focus(mmi_handle h);
MMIFW_API mmi_state mmi_state_get_current_state(mmi_handle h);
MMIFW_API mmi_result mmi_request_send_set_state(mmi_handle h, mmi_state state);
-MMIFW_API void *mmi_event_remove_listener(mmi_handle h, mmi_event_listener *listener);
+MMIFW_API void mmi_event_remove_listener(mmi_handle h, mmi_event_listener *listener);
MMIFW_API void mmi_event_remove_all_listeners(mmi_handle h);
#ifdef __cplusplus