diff options
author | Kazumasa Mitsunari <knimitz@witz-inc.co.jp> | 2018-12-20 10:34:08 +0900 |
---|---|---|
committer | Kazumasa Mitsunari <knimitz@witz-inc.co.jp> | 2019-01-25 13:36:37 +0900 |
commit | ceb1049ca57b0fd0ce41e9eca631557ffa46993a (patch) | |
tree | e3627816bb290a727f1da1ccf53e6f9043821f33 /src/wm_layer_control.cpp | |
parent | a33cbe3e083318a4f48d44a645ee24447536e3a6 (diff) |
Introduce changeAreaSize and getAreaList
In CES2019 demo, these features are introduced in demo3.
1. changeAreaSize : change area definition on runtime
2. getAreaList : get area definition list
v2. fix merge conflict
util.hpp
util.cpp
Bug-AGL : SPEC-2077
Change-Id: I1fa3c9e3648c69e14a3916cbeeb9775ed94c833a
Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
Diffstat (limited to 'src/wm_layer_control.cpp')
-rw-r--r-- | src/wm_layer_control.cpp | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/src/wm_layer_control.cpp b/src/wm_layer_control.cpp index 6c9aa6c..28d409f 100644 --- a/src/wm_layer_control.cpp +++ b/src/wm_layer_control.cpp @@ -394,7 +394,7 @@ WMError LayerControl::layoutChange(const WMAction& action) unsigned surface = action.client->surfaceID(); auto rect = this->getAreaSize(action.area); - HMI_DEBUG("Set layout %d, %d, %d, %d",rect.x, rect.y, rect.w, rect.h); + HMI_SEQ_INFO(action.req_num, "Set layout %d, %d, %d, %d",rect.x, rect.y, rect.w, rect.h); // Sometimes, ivi_wm_surface_size signal doesn't reach window manager, // then, Window Manager set set source size = 0. @@ -413,6 +413,7 @@ WMError LayerControl::layoutChange(const WMAction& action) ilm_surfaceSetDestinationRectangle(surface, rect.x, rect.y, rect.w, rect.h); ilm_commitChanges(); + action.client->setArea(action.area); for(auto &wm_layer: this->wm_layers) { // Store the state who is assigned to the area @@ -450,6 +451,48 @@ WMError LayerControl::visibilityChange(const WMAction& action) return ret; } +WMError LayerControl::updateAreaList(const ChangeAreaReq& req) +{ + // error check + for(const auto& elem : req.area_req) + { + if(this->area2size.find(elem.first) == this->area2size.end()) + { + HMI_ERROR("requested area %s is not registered in area list", elem.first.c_str()); + return WMError::NOT_REGISTERED; + } + } + // update list + for(const auto& elem : req.area_req) + { + this->area2size[elem.first] = elem.second; + } + if(req.save) + { + HMI_NOTICE("Not implemented"); + // TODO + } + return WMError::SUCCESS; +} + +WMError LayerControl::getUpdateAreaList(ChangeAreaReq *req) +{ + for(const auto& wm_layer : this->wm_layers) + { + // get area name and compare it with elem + for(const auto& area : req->area_req) + { + string app = wm_layer->attachedApp(area.first); + if(!app.empty()) + { + HMI_INFO("app %s changes area %s", app.c_str(), area.first.c_str()); + req->update_app2area[app] = area.first; + } + } + } + return WMError::SUCCESS; +} + void LayerControl::appTerminated(const shared_ptr<WMClient> client) { for(auto& l : this->wm_layers) |