mmi-fusion: add apis for getting a fusion handle, getting/setting state of the fusion 95/264095/1
authorSung-Jin Park <sj76.park@samsung.com>
Wed, 8 Sep 2021 12:21:35 +0000 (21:21 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Mon, 13 Sep 2021 11:26:46 +0000 (20:26 +0900)
Change-Id: I8b65301c816703a62c9afe5b3f0338882d9754c4
Signed-off-by: Sung-Jin Park <sj76.park@samsung.com>
src/mmi-fusion.c
src/mmi-fusion.h

index 00861d1..a0687e9 100644 (file)
@@ -35,6 +35,7 @@
 
 Eina_List *_fusion_list = NULL;
 int _loaded_fusion_cnt = 0;
+mmi_fusion_handle *_cur_fusion = NULL;
 
 int
 _fusion_load_module(const char *fusion_name)
@@ -74,7 +75,15 @@ _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);
 
@@ -115,6 +124,40 @@ _modality_fusions_lookup(void)
        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)
 {
@@ -154,4 +197,5 @@ modality_fusions_shutdown(void)
        _fusion_list = eina_list_free(_fusion_list);
        _fusion_list = NULL;
        _loaded_fusion_cnt = 0;
+       _cur_fusion = NULL;
 }
index 0c9c54c..328c85b 100644 (file)
 #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);