mmi-manager: implement set_state() for a given client 97/264097/1
authorSung-Jin Park <sj76.park@samsung.com>
Wed, 8 Sep 2021 12:27:16 +0000 (21:27 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Mon, 13 Sep 2021 11:26:50 +0000 (20:26 +0900)
Change-Id: I086675ba251783bf640bfe8aee58c8c6ca2100da
Signed-off-by: Sung-Jin Park <sj76.park@samsung.com>
src/mmi-manager.c

index 86c6ce8..34a0d3f 100644 (file)
@@ -107,6 +107,8 @@ mmi_manager_set_focus_client(mmi_client *client)
 int
 mmi_manager_set_state(mmi_client *client, mmi_state state)
 {
+       mmi_fusion_handle *fusion = NULL;
+
        if (!client)
                return -1;
 
@@ -118,6 +120,25 @@ mmi_manager_set_state(mmi_client *client, mmi_state state)
 
        LOGI("...");
 
+       fusion = modality_fusions_get_client_fusion(client);
+       if (!fusion)
+       {
+               LOGE("Failed to get fusion handle from client(%p)\n", client);
+               return 0;
+       }
+
+       if (state == modality_fusion_get_state(fusion))
+       {
+               LOGE("Given state equals to existing state(%d) of fusion !\n", state);
+               return 0;
+       }
+
+       if (state != modality_fusion_set_state(fusion, state))
+       {
+               LOGE("Failed to set state(%d) on fusion !\n", state);
+               return 0;
+       }
+
        mmi_manager_event_state_change *ev = NULL;
        ev = calloc(1, sizeof(mmi_manager_event_state_change));