* 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, TaskVisible visible)
+WMError AppList::setAction(unsigned req_num, shared_ptr<WMClient> client, const string &role, const string &area, TaskVisible visible)
{
std::lock_guard<std::mutex> lock(this->mtx);
WMError result = WMError::FAIL;
}
// 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};
+ WMAction action{req_num, client, role, area, visible, edraw_f};
x.sync_draw_req.push_back(action);
result = WMError::SUCCESS;
{
for (auto &y : x.sync_draw_req)
{
- if (y.appid == appid && y.role == role)
+ if (y.client->appID() == appid && y.role == role)
{
HMI_SEQ_INFO(req_num, "Role %s finish redraw", y.role.c_str());
y.end_draw_finished = true;
{
DUMP(
"Action : (APPID :%s, ROLE :%s, AREA :%s, VISIBLE : %s, END_DRAW_FINISHED: %d)",
- y.appid.c_str(),
+ y.client->appID().c_str(),
y.role.c_str(),
y.area.c_str(),
(y.visible == TaskVisible::INVISIBLE) ? "invisible" : "visible",
unsigned getRequestNumber(const std::string &appid) const;
unsigned addRequest(WMRequest req);
WMError setAction(unsigned req_num, const struct WMAction &action);
- WMError setAction(unsigned req_num, const std::string &appid,
+ WMError setAction(unsigned req_num, std::shared_ptr<WMClient> client,
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 WindowManager::startTransitionWrapper(vector<WMAction> &actions)
{
WMError ret;
+ // req_num is guaranteed by Window Manager
unsigned req_num = g_app_list.currentRequestNumber();
if (actions.empty())
goto error;
}
}
- act.appid = appid;
+ auto client = g_app_list.lookUpClient(appid);
+ act.req_num = req_num;
+ act.client = client;
}
ret = g_app_list.setAction(req_num, act);
// Make it deactivate here
for (const auto &x : actions)
{
- if (g_app_list.contains(x.appid))
+ this->lc->visibilityChange(x);
+ /* if (g_app_list.contains(x.appid))
{
auto client = g_app_list.lookUpClient(x.appid);
- this->deactivate(client->surfaceID(x.role));
- }
+ //this->deactivate(client->surfaceID(x.role));
+ } */
}
+ this->lc->commitChange();
ret = WMError::NO_LAYOUT_CHANGE;
}
return ret;
if(act.visible != TaskVisible::NO_CHANGE)
{
// layout change
- if(!g_app_list.contains(act.appid)){
- ret = WMError::NOT_REGISTERED;
- }
ret = this->lc->layoutChange(act);
if(ret != WMError::SUCCESS)
{
// Visibility is not change -> no redraw is required
return WMError::SUCCESS;
}
- auto client = g_app_list.lookUpClient(action.appid);
+ WMError ret = this->lc->layoutChange(action);
+ /* auto client = g_app_list.lookUpClient(action.appid);
unsigned surface = client->surfaceID(action.role);
if (surface == 0)
{
return WMError::NOT_REGISTERED;
}
// Layout Manager
- WMError ret = this->setSurfaceSize(surface, action.area);
+ WMError ret = this->setSurfaceSize(surface, action.area); */
return ret;
}
WMError WindowManager::visibilityChange(const WMAction &action)
{
HMI_SEQ_DEBUG(g_app_list.currentRequestNumber(), "Change visibility");
- if(!g_app_list.contains(action.appid)){
+ /* if(!g_app_list.contains(action.appid)){
return WMError::NOT_REGISTERED;
}
auto client = g_app_list.lookUpClient(action.appid);
HMI_SEQ_ERROR(g_app_list.currentRequestNumber(),
"client doesn't have surface with role(%s)", action.role.c_str());
return WMError::NOT_REGISTERED;
- }
+ } */
+ WMError ret = this->lc->visibilityChange(action);
- if (action.visible != TaskVisible::INVISIBLE)
+/* if (action.visible != TaskVisible::INVISIBLE)
{
this->activate(surface); // Layout Manager task
}
else
{
this->deactivate(surface); // Layout Manager task
- }
- return WMError::SUCCESS;
+ } */
+ return ret;
}
WMError WindowManager::setSurfaceSize(unsigned surface, const string &area)
{
if(action.visible != TaskVisible::INVISIBLE)
{
- json_object_array_add(jarray, json_object_new_string(action.appid.c_str()));
+ json_object_array_add(jarray, json_object_new_string(action.client->appID().c_str()));
}
}
json_object_object_add(j, kKeyIds, jarray);