+ if (split)
+ {
+ HMI_SEQ_DEBUG(req_num, "Split happens");
+ // Get current visible role
+ std::string add_role = this->lookup_name(state.main).value();
+ // Set next area
+ std::string add_area = std::string(kNameLayoutSplit) + "." + std::string(kNameAreaMain);
+ // Change request area
+ req_area = std::string(kNameLayoutSplit) + "." + std::string(kNameAreaSub);
+ HMI_SEQ_NOTICE(req_num, "Change request area from %s to %s, because split is happen",
+ trigger.area, req_area);
+ // set another action
+ std::string add_name = g_app_list.getAppID(curernt_sid, add_role, &found);
+ if (!found)
+ {
+ HMI_SEQ_ERROR(req_num, "Couldn't widhdraw with surfaceID : %s", curernt_sid);
+ ret = WMError::NOT_REGISTERED;
+ return ret;
+ }
+ HMI_SEQ_INFO(req_num, "Additional split app %s, role: %s, area: %s",
+ add_name.c_str(), add_role.c_str(), add_area.c_str());
+ // Set split action
+ bool end_draw_finished = false;
+ WMAction split_action{
+ add_name,
+ add_role,
+ add_area,
+ TaskVisible::VISIBLE,
+ end_draw_finished};
+ WMError ret = g_app_list.setAction(req_num, split_action);
+ if (ret != WMError::SUCCESS)
+ {
+ HMI_SEQ_ERROR(req_num, "Failed to set action");
+ return ret;
+ }
+ g_app_list.reqDump();
+ }
+ }
+ else
+ {
+ HMI_SEQ_DEBUG(req_num, "split doesn't happen");
+ }
+
+ // Set invisible task(Remove if policy manager finish)
+ ret = this->setInvisibleTask(trigger.role, split);
+ if(ret != WMError::SUCCESS)
+ {
+ HMI_SEQ_ERROR(req_num, "Failed to set invisible task: %s", errorDescription(ret));
+ return ret;
+ }
+
+ /* get new status from Policy Manager */
+ HMI_SEQ_NOTICE(req_num, "ATM, Policy manager does't exist, then set WMAction as is");
+ if(trigger.role == "HomeScreen")
+ {
+ // TODO : Remove when Policy Manager completed
+ HMI_SEQ_NOTICE(req_num, "Hack. This process will be removed. Change HomeScreen code!!");
+ req_area = "fullscreen";