diff options
author | 2018-08-27 19:15:30 +0900 | |
---|---|---|
committer | 2018-08-27 19:17:24 +0900 | |
commit | e5295c77d4c436212265edeca7f9a4818a5133e6 (patch) | |
tree | 79b38046d79add27328816d97be94baff6e303c5 | |
parent | a5106227c3c9ddbe2b07fbc2ecfc4e2ae1e4de74 (diff) |
Update wm_client and applist
Change-Id: I76a58f431b894f2db1a8864f620c48311807befc
Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
-rw-r--r-- | src/applist.cpp | 17 | ||||
-rw-r--r-- | src/applist.hpp | 6 | ||||
-rw-r--r-- | src/wm_client.cpp | 33 | ||||
-rw-r--r-- | src/wm_client.hpp | 4 |
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); |