aboutsummaryrefslogtreecommitdiffstats
path: root/src/wm_layer_control.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wm_layer_control.cpp')
-rw-r--r--src/wm_layer_control.cpp18
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
{