diff options
Diffstat (limited to 'src/wm_layer_control.cpp')
-rw-r--r-- | src/wm_layer_control.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/wm_layer_control.cpp b/src/wm_layer_control.cpp index e0800f8..1d591f0 100644 --- a/src/wm_layer_control.cpp +++ b/src/wm_layer_control.cpp @@ -125,8 +125,11 @@ void LayerControl::createNewLayer(unsigned id) ilm_layerSetSourceRectangle(id, rct.x, rct.y, rct.w, rct.h); //ilm_layerSetDestinationRectangle(id, rct.x, rct.y, rct.w, rct.h); ilm_layerSetOpacity(id, 1.0); - ilm_layerSetVisibility(id, ILM_TRUE); + ilm_layerSetVisibility(id, ILM_FALSE); ilm_commitChanges(); + auto wm_layer = getWMLayer(id); + wm_layer->addLayer(id); + this->commitChange(); } unsigned LayerControl::getNewLayerID(const string& role, string* layer_name) @@ -138,12 +141,20 @@ unsigned LayerControl::getNewLayerID(const string& role, string* layer_name) if(ret != 0) { *layer_name = l->layerName(); + unsigned uid = l->getUuid(); + this->lid2wmlid[ret] = uid; break; } } return ret; } +shared_ptr<WMLayer> LayerControl::getWMLayer(unsigned layer) +{ + unsigned uuid = this->lid2wmlid[layer]; + return this->wm_layers[uuid]; +} + struct rect LayerControl::getAreaSize(const std::string& area) { return area2size[area]; @@ -219,6 +230,7 @@ WMError LayerControl::commitChange() this->undoUpdate(); rc = WMError::FAIL; } + ilm_commitChanges(); delete id_array; return rc; } @@ -252,8 +264,9 @@ WMError LayerControl::loadLayerSetting(const string &path) json_object *json_tmp = json_object_array_get_idx(json_cfg, i); HMI_DEBUG("> json_tmp dump:%s", json_object_get_string(json_tmp)); - this->wm_layers.emplace_back(std::make_shared<WMLayer>(json_tmp)); + this->wm_layers.emplace_back(std::make_shared<WMLayer>(json_tmp, i)); } + json_object_put(json_obj); return WMError::SUCCESS; } @@ -394,6 +407,7 @@ void LayerControl::dispatchCreateEvent(ilmObjectType object, unsigned id, bool c this->cb.surfaceCreated(sp.creatorPid, id); ilm_surfaceAddNotification(id, surfaceCallback_static); ilm_surfaceSetSourceRectangle(id, 0, 0, sp.origSourceWidth, sp.origSourceHeight); + ilm_surfaceSetVisibility(id, ILM_TRUE); } else { |