aboutsummaryrefslogtreecommitdiffstats
path: root/src/applist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/applist.cpp')
-rw-r--r--src/applist.cpp47
1 files changed, 28 insertions, 19 deletions
diff --git a/src/applist.cpp b/src/applist.cpp
index 919c099..5ca82fe 100644
--- a/src/applist.cpp
+++ b/src/applist.cpp
@@ -41,8 +41,8 @@ AppList::AppList()
app2client(),
current_req(1)
{
- app2client.reserve(kReserveClientSize);
- req_list.reserve(kReserveReqSize);
+ this->app2client.reserve(kReserveClientSize);
+ this->req_list.reserve(kReserveReqSize);
}
AppList::~AppList() {}
@@ -67,7 +67,7 @@ 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();
@@ -80,7 +80,7 @@ void AppList::addClient(const std::string &appid, unsigned layer, unsigned surfa
*/
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());
}
@@ -97,15 +97,21 @@ bool AppList::contains(const string &appid) const
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;
}
}
@@ -221,7 +227,7 @@ unsigned AppList::getRequestNumber(const string &appid) const
*/
unsigned AppList::addAllocateRequest(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;
@@ -305,7 +311,7 @@ const vector<struct WMAction> &AppList::getActions(unsigned req_num, bool* found
*/
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)
{
@@ -337,16 +343,16 @@ 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(mtx);
+ std::lock_guard<std::mutex> lock(this->mtx);
WMError result = WMError::FAIL;
for (auto &x : req_list)
{
@@ -354,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);
@@ -379,7 +386,7 @@ WMError AppList::setAction(unsigned req_num, const string &appid, const string &
*/
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)
{
@@ -393,6 +400,7 @@ bool AppList::setEndDrawFinished(unsigned req_num, const string &appid, const st
{
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;
}
@@ -443,7 +451,7 @@ bool AppList::endDrawFullfilled(unsigned req_num)
*/
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;
@@ -458,7 +466,7 @@ void AppList::removeRequest(unsigned 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)
{
@@ -494,7 +502,7 @@ void AppList::reqDump()
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(),
@@ -504,10 +512,11 @@ void AppList::reqDump()
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);
}
}