Eina_List *_fusion_list = NULL;
int _loaded_fusion_cnt = 0;
+mmi_fusion_handle *_cur_fusion = NULL;
int
_fusion_load_module(const char *fusion_name)
//FIXME: init() of a fusion module needs to be called in mmi-manager
//Right now, we initiate a fusion module found for the first time.
if (_loaded_fusion_cnt == 1)
- fusion->module_info->fusion_init();
+ {
+ fusion->module_data = fusion->module_info->fusion_init();
+ if (!fusion->module_data)
+ {
+ LOGE("Failed to init of a fusion module (name:%s) !\n", fusion->module_info->name);
+ goto err;
+ }
+ _cur_fusion = fusion;
+ }
_fusion_list = eina_list_append(_fusion_list, fusion);
return cnt;
}
+mmi_fusion_handle *
+modality_fusions_get_client_fusion(mmi_client *client)
+{
+ return _cur_fusion;
+}
+
+mmi_state
+modality_fusion_get_state(mmi_fusion_handle *fusion)
+{
+ mmi_state state = MMI_STATE_NONE;
+
+ if (!fusion)
+ {
+ LOGE("Given fusion handle is invalid !\n");
+ return state;
+ }
+
+ state = fusion->module_data->get_state();
+ return state;
+}
+
+mmi_state
+modality_fusion_set_state(mmi_fusion_handle *fusion, mmi_state state)
+{
+ if (!fusion)
+ {
+ LOGE("Given fusion handle is invalid !\n");
+ return MMI_STATE_NONE;
+ }
+
+ return fusion->module_data->set_state(state);
+}
+
+
void
modality_fusions_init(void)
{
_fusion_list = eina_list_free(_fusion_list);
_fusion_list = NULL;
_loaded_fusion_cnt = 0;
+ _cur_fusion = NULL;
}
#ifndef __MMI_FUSION_H__
#define __MMI_FUSION_H__
+#include "mmi-common.h"
+#include "mmi-client.h"
+
+mmi_fusion_handle *modality_fusions_get_client_fusion(mmi_client *client);
+mmi_state modality_fusion_get_state(mmi_fusion_handle *fusion);
+mmi_state modality_fusion_set_state(mmi_fusion_handle *fusion, mmi_state state);
+
void modality_fusions_init(void);
void modality_fusions_shutdown(void);