summaryrefslogtreecommitdiffstats
path: root/src/wm_layer_control.cpp
diff options
context:
space:
mode:
authorKazumasa Mitsunari <knimitz@witz-inc.co.jp>2018-12-20 10:34:08 +0900
committerKazumasa Mitsunari <knimitz@witz-inc.co.jp>2019-02-12 02:00:41 +0000
commit692208b29ec18373960928bcbfdf4474a1af7b7b (patch)
tree72130f4f8b99e9ba2e5473c1484198e4e9ef91be /src/wm_layer_control.cpp
parent923df38d358f8971cf16cc78365adb2b45182bc5 (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.cpp45
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)