aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazumasa Mitsunari <knimitz@witz-inc.co.jp>2018-08-27 19:15:30 +0900
committerKazumasa Mitsunari <knimitz@witz-inc.co.jp>2018-08-27 19:17:24 +0900
commite5295c77d4c436212265edeca7f9a4818a5133e6 (patch)
tree79b38046d79add27328816d97be94baff6e303c5
parenta5106227c3c9ddbe2b07fbc2ecfc4e2ae1e4de74 (diff)
Update wm_client and applist
Change-Id: I76a58f431b894f2db1a8864f620c48311807befc Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
-rw-r--r--src/applist.cpp17
-rw-r--r--src/applist.hpp6
-rw-r--r--src/wm_client.cpp33
-rw-r--r--src/wm_client.hpp4
4 files changed, 39 insertions, 21 deletions
diff --git a/src/applist.cpp b/src/applist.cpp
index 391a3ce..644e41e 100644
--- a/src/applist.cpp
+++ b/src/applist.cpp
@@ -73,6 +73,14 @@ void AppList::addClient(const string &appid, unsigned layer, unsigned surface, c
this->clientDump();
}
+void AppList::addClient(const string &appid, unsigned layer, const string& layer_name, unsigned surface, const string &role)
+{
+ std::lock_guard<std::mutex> lock(this->mtx);
+ shared_ptr<WMClient> client = std::make_shared<WMClient>(appid, layer, layer_name, surface, role);
+ this->app2client[appid] = client;
+ this->clientDump();
+}
+
/**
* Remove WMClient from the list
*
@@ -228,16 +236,15 @@ void AppList::removeFloatingSurface(unsigned surface)
this->floating_surfaces.erase(fwd_itr, this->floating_surfaces.end());
}
-WMError AppList::appendRole(const string &id, const string &role, unsigned surface)
+WMError AppList::appendRole(const string &id, const string &role)
{
WMError wm_err = WMError::NO_ENTRY;
- HMI_ERROR("This function is disabled");
- /* if (this->contains(id))
+ if (this->contains(id))
{
auto x = this->lookUpClient(id);
- x->addSurface(role, surface);
+ x->appendRole(role);
wm_err = WMError::SUCCESS;
- } */
+ }
return wm_err;
}
diff --git a/src/applist.hpp b/src/applist.hpp
index fef4d65..9e86b83 100644
--- a/src/applist.hpp
+++ b/src/applist.hpp
@@ -50,14 +50,16 @@ class AppList
If the WMClient should be more flexible, I think this param should be WMClient class
*/
void addClient(const std::string &appid, unsigned layer,
- unsigned surface,const std::string &role);
+ unsigned surface, const std::string &role);
+ void addClient(const std::string &appid, unsigned layer,
+ const std::string& layer_name, unsigned surface, const std::string &role);
void removeClient(const std::string &appid);
bool contains(const std::string &appid) const;
int countClient() const;
std::shared_ptr<WMClient> lookUpClient(const std::string &appid);
void removeSurface(unsigned surface);
std::string getAppID(unsigned surface, const std::string &role, bool *found) const;
- WMError appendRole(const std::string &appid, const std::string &role, unsigned surface);
+ WMError appendRole(const std::string &appid, const std::string &role);
// Floating surface
void addFloatingClient(const std::string &appid, unsigned layer, const std::string &role);
diff --git a/src/wm_client.cpp b/src/wm_client.cpp
index 4aecbf4..7245549 100644
--- a/src/wm_client.cpp
+++ b/src/wm_client.cpp
@@ -71,6 +71,23 @@ WMClient::WMClient(const string &appid, const string &role)
}
}
+WMClient::WMClient(const string &appid, unsigned layer,
+ const string& layer_name, unsigned surface, const string &role)
+ : id(appid), layer(layer), wm_layer_name(layer_name),
+ role2surface(0)
+{
+ role2surface[role] = surface;
+ for (auto x : kWMEvents)
+ {
+#if GTEST_ENABLED
+ string ev = x;
+#else
+ afb_event ev = afb_daemon_make_event(x.c_str());
+#endif
+ evname2afb_event[x] = ev;
+ }
+}
+
string WMClient::appID() const
{
return this->id;
@@ -114,23 +131,13 @@ const string& WMClient::getWMLayerName()
void WMClient::setRole(const string& role)
{
+ this->role_list.clear();
this->role_list.push_back(role);
}
-/**
- * Set layerID the client belongs to
- *
- * This function set layerID the client belongs to.
- * But this function may not used because the layer should be fixed at constructor.
- * So this function will be used to change layer by some reasons.
- *
- * @param unsigned[in] layerID
- * @return None
- * @attention WMClient can't have multiple layer
- */
-void WMClient::registerLayer(unsigned layer)
+void WMClient::appendRole(const string& role)
{
- this->layer = layer;
+ this->role_list.push_back(role);
}
/**
diff --git a/src/wm_client.hpp b/src/wm_client.hpp
index 0b5abe1..369f084 100644
--- a/src/wm_client.hpp
+++ b/src/wm_client.hpp
@@ -42,6 +42,8 @@ class WMClient
WMClient(const std::string &appid, unsigned layer,
unsigned surface, const std::string &role);
WMClient(const std::string &appid, const std::string &role);
+ WMClient(const std::string &appid, unsigned layer,
+ const std::string& layer_name, unsigned surface, const std::string &role);
~WMClient() = default;
std::string appID() const;
@@ -53,7 +55,7 @@ class WMClient
std::string role(unsigned surface) const;
const std::vector<std::string> &roles() const;
void setRole(const std::string& role);
- void registerLayer(unsigned layer);
+ void appendRole(const std::string& role);
bool addSurface(const std::string& role, unsigned surface);
bool removeSurfaceIfExist(unsigned surface);
bool removeRole(const std::string& role);