X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fwm_client.cpp;h=e7cb55258bcc24c271eafdd25df1a09ce6c40fe2;hb=refs%2Fheads%2Fsandbox%2Fruke47%2Flifecycle;hp=a9ed54712fb2fa53948886c6b52ed9ccbfb90b90;hpb=847dde9621cef9b9a44eda95c63c0fe3f528468d;p=apps%2Fagl-service-windowmanager.git diff --git a/src/wm_client.cpp b/src/wm_client.cpp index a9ed547..e7cb552 100644 --- a/src/wm_client.cpp +++ b/src/wm_client.cpp @@ -16,7 +16,8 @@ #include #include "wm_client.hpp" -#include "hmi-debug.h" +#include "util.hpp" +#include #define INVALID_SURFACE_ID 0 @@ -47,9 +48,9 @@ WMClient::WMClient(const string &appid, unsigned layer, unsigned surface, const #if GTEST_ENABLED string ev = x; #else - afb_event ev = afb_daemon_make_event(x.c_str()); + afb_event_t ev = afb_api_make_event(afbBindingV3root, x.c_str()); #endif - event2list[x] = ev; + evname2list[x] = ev; } } @@ -57,7 +58,7 @@ WMClient::WMClient(const string &appid, const string &role) : id(appid), layer(0), role2surface(0), - event2list(0) + evname2list(0) { role2surface[role] = INVALID_SURFACE_ID; for (auto x : kWMEvents) @@ -65,14 +66,29 @@ WMClient::WMClient(const string &appid, const string &role) #if GTEST_ENABLED string ev = x; #else - afb_event ev = afb_daemon_make_event(x.c_str()); + afb_event_t ev = afb_api_make_event(afbBindingV3root, x.c_str()); #endif - event2list[x] = ev; + evname2list[x] = ev; } } -WMClient::~WMClient() +WMClient::WMClient(const string &appid, unsigned layer, const string &role) + : id(appid), + layer(layer), + main_role(role), + role2surface(0), + evname2list(0) { + role2surface[role] = INVALID_SURFACE_ID; + for (auto x : kWMEvents) + { +#if GTEST_ENABLED + string ev = x; +#else + afb_event_t ev = afb_api_make_event(afbBindingV3root, x.c_str()); +#endif + evname2list[x] = ev; + } } string WMClient::appID() const @@ -80,25 +96,9 @@ string WMClient::appID() const return this->id; } -unsigned WMClient::surfaceID(const string &role) const -{ - if (0 == this->role2surface.count(role)) - { - return INVALID_SURFACE_ID; - } - return this->role2surface.at(role); -} - -std::string WMClient::role(unsigned surface) const +string WMClient::role() const { - for(const auto& x : this->role2surface) - { - if(x.second == surface) - { - return x.first; - } - } - return std::string(""); + return this->main_role; } unsigned WMClient::layerID() const @@ -106,85 +106,54 @@ unsigned WMClient::layerID() const return this->layer; } -/** - * 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) +unsigned WMClient::surfaceID() const { - this->layer = layer; + return this->surface; } /** - * Add the pair of role and surface to the client + * Add surface to the client * - * This function set the pair of role and surface to the client. - * This function is used for the client which has multi surfaces. - * If the model and relationship for role and surface(layer) - * is changed, this function will be changed - * Current Window Manager doesn't use this function. + * This function add main surface to the client(ivi_layer). * * @param string[in] role - * @param unsigned[in] surface - * @return true + * @return WMError */ -bool WMClient::addSurface(const string &role, unsigned surface) +WMError WMClient::addSurface(unsigned surface) { - HMI_DEBUG("wm", "Add role %s with surface %d", role.c_str(), surface); - if (0 != this->role2surface.count(role)) - { - HMI_NOTICE("wm", "override surfaceID %d with %d", this->role2surface[role], surface); - } - this->role2surface[role] = surface; - return true; -} + this->surface = surface; + ilmErrorTypes err = ilm_layerAddSurface(this->layer, surface); -bool WMClient::removeSurfaceIfExist(unsigned surface) -{ - bool ret = false; - for (auto &x : this->role2surface) + if(err == ILM_SUCCESS) { - if (surface == x.second) - { - HMI_INFO("wm", "Remove surface from client %s: role %s, surface: %d", - this->id.c_str(), x.first.c_str(), x.second); - this->role2surface.erase(x.first); - ret = true; - break; - } + err = ilm_commitChanges(); } - return ret; + return (err == ILM_SUCCESS) ? WMError::SUCCESS : WMError::FAIL; } -bool WMClient::removeRole(const string &role) +bool WMClient::removeSurfaceIfExist(unsigned surface) { bool ret = false; - if (this->role2surface.count(role) != 0) + if(surface == this->surface) { - this->role2surface.erase(role); + this->surface = INVALID_SURFACE_ID; ret = true; } return ret; } -#ifndef GTEST_ENABLED -bool WMClient::subscribe(afb_req req, const string &evname) + +#if GTEST_ENABLED +bool WMClient::subscribe(afb_req_t req, const string &evname) { if(evname != kKeyError){ - HMI_DEBUG("wm", "error is only enabeled for now"); + HMI_DEBUG("error is only enabeled for now"); return false; } - int ret = afb_req_subscribe(req, this->event2list[evname]); + int ret = afb_req_subscribe(req, this->evname2list[evname]); if (ret) { - HMI_DEBUG("wm", "Failed to subscribe %s", evname.c_str()); + HMI_DEBUG("Failed to subscribe %s", evname.c_str()); return false; } return true; @@ -192,19 +161,19 @@ bool WMClient::subscribe(afb_req req, const string &evname) void WMClient::emitError(WM_CLIENT_ERROR_EVENT ev) { - if (!afb_event_is_valid(this->event2list[kKeyError])){ - HMI_ERROR("wm", "event err is not valid"); + if (!afb_event_is_valid(this->evname2list[kKeyError])){ + HMI_ERROR("event err is not valid"); return; } json_object *j = json_object_new_object(); json_object_object_add(j, kKeyError, json_object_new_int(ev)); json_object_object_add(j, kKeyErrorDesc, json_object_new_string(kErrorDescription[ev].c_str())); - HMI_DEBUG("wm", "error: %d, description:%s", ev, kErrorDescription[ev].c_str()); + HMI_DEBUG("error: %d, description:%s", ev, kErrorDescription[ev].c_str()); - int ret = afb_event_push(this->event2list[kKeyError], j); + int ret = afb_event_push(this->evname2list[kKeyError], j); if (ret != 0) { - HMI_DEBUG("wm", "afb_event_push failed: %m"); + HMI_DEBUG("afb_event_push failed: %m"); } } #endif