diff options
-rw-r--r-- | src/app.cpp | 30 | ||||
-rw-r--r-- | src/applist.cpp | 7 | ||||
-rw-r--r-- | src/applist.hpp | 2 | ||||
-rw-r--r-- | src/request.hpp | 9 |
4 files changed, 28 insertions, 20 deletions
diff --git a/src/app.cpp b/src/app.cpp index f1c9ed3..c42ae9c 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -578,13 +578,12 @@ WMError App::checkPolicy(unsigned req_num) 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 visible = true; bool end_draw_finished = false; WMAction split_action{ add_name, add_role, add_area, - visible, + TaskVisible::VISIBLE, end_draw_finished}; WMError ret = g_app_list.setAction(req_num, split_action); if (ret != WMError::SUCCESS) @@ -610,8 +609,9 @@ WMError App::checkPolicy(unsigned req_num) /* get new status from Policy Manager */ HMI_SEQ_NOTICE(req_num, "ATM, Policy manager does't exist, then set WMAction as is"); + TaskVisible task_visible = (trigger.task == Task::TASK_ALLOCATE) ? TaskVisible::VISIBLE : TaskVisible::INVISIBLE; - ret = g_app_list.setAction(req_num, trigger.appid, trigger.role, req_area, trigger.task); + ret = g_app_list.setAction(req_num, trigger.appid, trigger.role, req_area, task_visible); g_app_list.reqDump(); return ret; @@ -632,7 +632,7 @@ WMError App::startTransition(unsigned req_num) for (const auto &y : actions) { - if (y.visible) + if (y.visible != TaskVisible::INVISIBLE) { sync_draw_happen = true; this->emit_syncdraw(y.role, y.area); @@ -676,7 +676,7 @@ WMError App::setInvisibleTask(const std::string &role, bool split) std::string add_name, add_role; std::string add_area = ""; int surface; - bool visible = false; + TaskVisible task_visible = TaskVisible::INVISIBLE; bool end_draw_finished = true; bool found = false; @@ -696,7 +696,7 @@ WMError App::setInvisibleTask(const std::string &role, bool split) return WMError::NOT_REGISTERED; } HMI_SEQ_INFO(req, "Invisible %s", add_name.c_str()); - WMAction act{add_name, add_role, add_area, visible, end_draw_finished}; + WMAction act{add_name, add_role, add_area, task_visible, end_draw_finished}; g_app_list.setAction(req, act); l.second.state.main = -1; } @@ -712,7 +712,7 @@ WMError App::setInvisibleTask(const std::string &role, bool split) return WMError::NOT_REGISTERED; } HMI_SEQ_INFO(req, "Invisible %s", add_name.c_str()); - WMAction act{add_name, add_role, add_area, visible, end_draw_finished}; + WMAction act{add_name, add_role, add_area, task_visible, end_draw_finished}; g_app_list.setAction(req, act); l.second.state.sub = -1; } @@ -756,7 +756,7 @@ WMError App::setInvisibleTask(const std::string &role, bool split) HMI_SEQ_DEBUG(req, "sub surface ddoesn't exist"); return WMError::NOT_REGISTERED; } - deact_sub.visible = visible; + deact_sub.visible = task_visible; deact_sub.end_draw_finished = end_draw_finished; HMI_SEQ_DEBUG(req, "sub surface ddoesn't exist"); g_app_list.setAction(req, deact_sub); @@ -782,7 +782,7 @@ WMError App::setInvisibleTask(const std::string &role, bool split) HMI_SEQ_DEBUG(req, "sub surface ddoesn't exist"); return WMError::NOT_REGISTERED; } - deact_main.visible = visible; + deact_main.visible = task_visible; deact_main.end_draw_finished = end_draw_finished; HMI_SEQ_DEBUG(req, "sub surface doesn't exist"); g_app_list.setAction(req, deact_main); @@ -802,7 +802,7 @@ WMError App::setInvisibleTask(const std::string &role, bool split) HMI_SEQ_DEBUG(req, "sub surface ddoesn't exist"); return WMError::NOT_REGISTERED; } - deact_sub.visible = visible; + deact_sub.visible = task_visible; deact_sub.end_draw_finished = end_draw_finished; HMI_SEQ_DEBUG(req, "sub surface ddoesn't exist"); g_app_list.setAction(req, deact_sub); @@ -812,7 +812,6 @@ WMError App::setInvisibleTask(const std::string &role, bool split) } } } - return WMError::SUCCESS; } @@ -1051,7 +1050,7 @@ WMError App::doEndDraw(unsigned req_num) for(const auto &act_flush : actions) { - if(act_flush.visible) + if(act_flush.visible != TaskVisible::INVISIBLE) { this->emit_flushdraw(act_flush.role.c_str()); } @@ -1069,8 +1068,9 @@ WMError App::setSurfaceSize(unsigned surface, const std::string &area) WMError App::layoutChange(const WMAction &action) { - if (action.visible == false) + if (action.visible == TaskVisible::INVISIBLE) { + // Visibility is not change -> no redraw is required return WMError::SUCCESS; } auto client = g_app_list.lookUpClient(action.appid); @@ -1097,7 +1097,7 @@ WMError App::visibilityChange(const WMAction &action) return WMError::NOT_REGISTERED; } - if (action.visible) + if (action.visible != TaskVisible::INVISIBLE) { this->activate(surface); // Layout Manager task } @@ -1125,7 +1125,7 @@ WMError App::changeCurrentState(unsigned req_num) for(const auto &action : actions) { - if(action.visible) + if(action.visible != TaskVisible::INVISIBLE) { // visible == true -> layout changes areas.push_back(action.area); diff --git a/src/applist.cpp b/src/applist.cpp index 130eb61..d3a839c 100644 --- a/src/applist.cpp +++ b/src/applist.cpp @@ -343,14 +343,14 @@ WMError AppList::setAction(unsigned req_num, const struct WMAction &action) * @param string[in] application id * @param string[in] role * @param string[in] area - * @param bool[in] the role should be visible or not. + * @param Task[in] the role should be visible or not. * @return WMError If request number is not valid, FAIL will be returned. * @attention This function set action with parameters, then caller doesn't need to create WMAction object. * If visible is true, it means app should be visible, so enddraw_finished parameter will be false. * otherwise (visible is false) app should be invisible. Then enddraw_finished param is set to true. * This function doesn't support actions for focus yet. */ -WMError AppList::setAction(unsigned req_num, const string &appid, const string &role, const string &area, bool visible) +WMError AppList::setAction(unsigned req_num, const string &appid, const string &role, const string &area, TaskVisible visible) { std::lock_guard<std::mutex> lock(this->mtx); WMError result = WMError::FAIL; @@ -360,7 +360,8 @@ WMError AppList::setAction(unsigned req_num, const string &appid, const string & { continue; } - bool edraw_f = (visible) ? false : true; + // If visible task is not invisible, redraw is required -> true + bool edraw_f = (visible != TaskVisible::INVISIBLE) ? false : true; WMAction action{appid, role, area, visible, edraw_f}; x.sync_draw_req.push_back(action); diff --git a/src/applist.hpp b/src/applist.hpp index 6305a4b..9431ff6 100644 --- a/src/applist.hpp +++ b/src/applist.hpp @@ -55,7 +55,7 @@ class AppList unsigned getRequestNumber(const std::string &appid) const; unsigned addAllocateRequest(WMRequest req); WMError setAction(unsigned req_num, const struct WMAction &action); - WMError setAction(unsigned req_num, const std::string &appid, const std::string &role, const std::string &area, bool visible = true); + WMError setAction(unsigned req_num, const std::string &appid, const std::string &role, const std::string &area, TaskVisible visible); bool setEndDrawFinished(unsigned req_num, const std::string &appid, const std::string &role); bool endDrawFullfilled(unsigned req_num); void removeRequest(unsigned req_num); diff --git a/src/request.hpp b/src/request.hpp index ded2c02..6b2bda1 100644 --- a/src/request.hpp +++ b/src/request.hpp @@ -30,6 +30,13 @@ enum Task TASK_INVALID }; +enum TaskVisible +{ + VISIBLE, + INVISIBLE, + NO_CHANGE +}; + struct WMTrigger { std::string appid; @@ -43,7 +50,7 @@ struct WMAction std::string appid; std::string role; std::string area; - bool visible; + TaskVisible visible; bool end_draw_finished; }; |