Update wm_layer
[apps/agl-service-windowmanager-2017.git] / src / wm_layer_control.cpp
index e0800f8..1d591f0 100644 (file)
@@ -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
         {