app2client(),
current_req(1)
{
- app2client.reserve(kReserveClientSize);
- req_list.reserve(kReserveReqSize);
+ this->app2client.reserve(kReserveClientSize);
+ this->req_list.reserve(kReserveReqSize);
}
AppList::~AppList() {}
*/
void AppList::addClient(const std::string &appid, unsigned layer, unsigned surface, const std::string &role)
{
- std::lock_guard<std::mutex> lock(mtx);
+ std::lock_guard<std::mutex> lock(this->mtx);
shared_ptr<WMClient> client = std::make_shared<WMClient>(appid, layer, surface, role);
this->app2client[appid] = client;
this->clientDump();
*/
void AppList::removeClient(const string &appid)
{
- std::lock_guard<std::mutex> lock(mtx);
+ std::lock_guard<std::mutex> lock(this->mtx);
this->app2client.erase(appid);
HMI_INFO("wm", "Remove client %s", appid.c_str());
}
return (this->app2client.end() != result) ? true : false;
}
-void AppList::removeSurface(unsigned surface_id){
+/**
+ * Remove surface from client
+ *
+ * @param unsigned[in] surface id.
+ * @return None
+ */
+void AppList::removeSurface(unsigned surface){
// This function may be very slow
- std::lock_guard<std::mutex> lock(mtx);
+ std::lock_guard<std::mutex> lock(this->mtx);
bool ret = false;
for (auto &x : this->app2client)
{
- ret = x.second->removeSurfaceIfExist(surface_id);
+ ret = x.second->removeSurfaceIfExist(surface);
if(ret){
- HMI_DEBUG("wm", "remove surface %d from Client %s finish", surface_id, x.second->appID().c_str());
+ HMI_DEBUG("wm", "remove surface %d from Client %s finish",
+ surface, x.second->appID().c_str());
break;
}
}
*
* @param unsigned[in] surfaceID
* @param string[in] role
- * @param bool[in,out] (key)
- * @return WMClient object
+ * @param bool[in,out] AppID is found or not
+ * @return AppID
* @attention If AppID is not found, param found will be false.
*/
string AppList::getAppID(unsigned surface, const string& role, bool* found) const
* @attention If the request number is different with curent request number,
* it means the previous request is not finished.
*/
-unsigned AppList::addAllocateRequest(WMRequest req)
+unsigned AppList::addRequest(WMRequest req)
{
- std::lock_guard<std::mutex> lock(mtx);
+ std::lock_guard<std::mutex> lock(this->mtx);
if (this->req_list.size() == 0)
{
req.req_num = current_req;
*/
WMError AppList::setAction(unsigned req_num, const struct WMAction &action)
{
- std::lock_guard<std::mutex> lock(mtx);
+ std::lock_guard<std::mutex> lock(this->mtx);
WMError result = WMError::FAIL;
for (auto &x : this->req_list)
{
* @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(mtx);
+ std::lock_guard<std::mutex> lock(this->mtx);
WMError result = WMError::FAIL;
for (auto &x : req_list)
{
{
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);
*/
bool AppList::setEndDrawFinished(unsigned req_num, const string &appid, const string &role)
{
- std::lock_guard<std::mutex> lock(mtx);
+ std::lock_guard<std::mutex> lock(this->mtx);
bool result = false;
for (auto &x : req_list)
{
{
if (y.appid == appid && y.role == role)
{
+ HMI_SEQ_INFO(req_num, "Role %s finish redraw", y.role.c_str());
y.end_draw_finished = true;
result = true;
}
*/
void AppList::removeRequest(unsigned req_num)
{
- std::lock_guard<std::mutex> lock(mtx);
+ std::lock_guard<std::mutex> lock(this->mtx);
this->req_list.erase(remove_if(this->req_list.begin(), this->req_list.end(),
[req_num](WMRequest x) {
return x.req_num == req_num;
*/
void AppList::next()
{
- std::lock_guard<std::mutex> lock(mtx);
+ std::lock_guard<std::mutex> lock(this->mtx);
++this->current_req;
if (0 == this->current_req)
{
DUMP("current request : %d", current_req);
for (const auto &x : req_list)
{
- DUMP("requested with : %d", x.req_num);
+ DUMP("requested : %d", x.req_num);
DUMP("Trigger : (APPID :%s, ROLE :%s, AREA :%s, TASK: %d)",
x.trigger.appid.c_str(),
x.trigger.role.c_str(),
for (const auto &y : x.sync_draw_req)
{
DUMP(
- "Action : (APPID :%s, ROLE :%s, AREA :%s, END_DRAW_FINISHED: %d)",
+ "Action : (APPID :%s, ROLE :%s, AREA :%s, VISIBLE : %s, END_DRAW_FINISHED: %d)",
y.appid.c_str(),
y.role.c_str(),
y.area.c_str(),
+ (y.visible == TaskVisible::INVISIBLE) ? "invisible" : "visible",
y.end_draw_finished);
}
}
- DUMP("======= req dump end =====\n");
+ DUMP("======= req dump end =====");
}
-} // namespace wm
\ No newline at end of file
+} // namespace wm