+ HMI_SEQ_ERROR(g_app_list.currentRequestNumber(),
+ "client doesn't have surface with role(%s)", action.role.c_str());
+ return WMError::NOT_REGISTERED;
+ }
+ // Layout Manager
+ WMError ret = this->setSurfaceSize(surface, action.area);
+ return ret;
+}
+
+WMError App::visibilityChange(const WMAction &action)
+{
+ HMI_SEQ_DEBUG(g_app_list.currentRequestNumber(), "Change visibility");
+ if(!g_app_list.contains(action.appid)){
+ return WMError::NOT_REGISTERED;
+ }
+ auto client = g_app_list.lookUpClient(action.appid);
+ unsigned surface = client->surfaceID(action.role);
+ if(surface == 0)
+ {
+ HMI_SEQ_ERROR(g_app_list.currentRequestNumber(),
+ "client doesn't have surface with role(%s)", action.role.c_str());
+ return WMError::NOT_REGISTERED;
+ }
+
+ if (action.visible != TaskVisible::INVISIBLE)
+ {
+ this->activate(surface); // Layout Manager task
+ }
+ else
+ {
+ this->deactivate(surface); // Layout Manager task
+ }
+ return WMError::SUCCESS;
+}
+
+WMError App::changeCurrentState(unsigned req_num)
+{
+ HMI_SEQ_DEBUG(req_num, "Change current layout state");
+ bool trigger_found = false, action_found = false;
+ auto trigger = g_app_list.getRequest(req_num, &trigger_found);
+ auto actions = g_app_list.getActions(req_num, &action_found);
+ if (!trigger_found || !action_found)
+ {
+ HMI_SEQ_ERROR(req_num, "Action not found");
+ return WMError::LAYOUT_CHANGE_FAIL;
+ }
+
+ // Layout state reset
+ struct LayoutState reset_state{-1, -1};
+ HMI_SEQ_DEBUG(req_num,"Reset layout state");
+ for (const auto &action : actions)
+ {
+ if(!g_app_list.contains(action.appid)){
+ return WMError::NOT_REGISTERED;
+ }
+ auto client = g_app_list.lookUpClient(action.appid);
+ auto pCurState = *this->layers.get_layout_state((int)client->surfaceID(action.role));
+ if(pCurState == nullptr)