From: Kazumasa Mitsunari Date: Mon, 27 Aug 2018 10:15:30 +0000 (+0900) Subject: Update wm_client and applist X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=e5295c77d4c436212265edeca7f9a4818a5133e6;p=apps%2Fagl-service-windowmanager.git Update wm_client and applist Change-Id: I76a58f431b894f2db1a8864f620c48311807befc Signed-off-by: Kazumasa Mitsunari --- 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 lock(this->mtx); + shared_ptr client = std::make_shared(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 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 &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);