summaryrefslogtreecommitdiffstats
path: root/src/wm_layer.hpp
diff options
context:
space:
mode:
authorKazumasa Mitsunari <knimitz@witz-inc.co.jp>2018-10-22 09:30:19 +0900
committerKazumasa Mitsunari <knimitz@witz-inc.co.jp>2018-11-13 13:05:39 +0900
commit010ca3f3459a52e44deb5e70e94e9cd394814e3e (patch)
tree96b8cc678180df86c95f362049dc40e7ce09833b /src/wm_layer.hpp
parentc2110a3ec8fa74f2fc37e4909db547aa4a36c851 (diff)
Attach application to ivi-layer not to surface
Window Manager expresses the application in ivi-layer. So for, Window Manager tied the surface and role applied by the application. This patch associates the application with the ivi-layer, and the role and surface are the attributes that makes up the application. Bug-AGL: SPEC-1818, SPEC-1635 Change-Id: Ice1e398e1db037577b0721c16da6603ec5437561 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
Diffstat (limited to 'src/wm_layer.hpp')
-rw-r--r--src/wm_layer.hpp64
1 files changed, 53 insertions, 11 deletions
diff --git a/src/wm_layer.hpp b/src/wm_layer.hpp
index 1d9435b..83a5e74 100644
--- a/src/wm_layer.hpp
+++ b/src/wm_layer.hpp
@@ -28,24 +28,66 @@ struct json_object;
namespace wm
{
+class WMClient;
+class LayerState
+{
+ public:
+ LayerState();
+ ~LayerState() = default;
+ const std::vector<unsigned> getIviIdList();
+ void addLayer(unsigned layer);
+ void removeLayer(unsigned layer);
+ void attachAppToArea(const std::string& app, const std::string& area);
+
+ // Debug
+ void dump();
+
+ private:
+ std::vector<unsigned> render_order;
+ std::unordered_map<std::string, std::string> area2appid;
+};
+
class WMLayer
{
public:
- explicit WMLayer(json_object* j);
+ explicit WMLayer(json_object* j, unsigned wm_layer_id);
~WMLayer() = default;
- // A more or less descriptive name?
- const std::string& layerName(){ return this->role_list;}
- unsigned layerID(){ return this->layer_id;}
- const std::string& roleList();
+
+ // Status & Setting API
+ unsigned getNewLayerID(const std::string& role);
+ unsigned idBegin() { return this->id_begin; }
+ unsigned idEnd() { return this->id_end; }
+ unsigned getWMLayerID() { return this->wm_layer_id; }
+ const std::string& layerName();
+ void appendArea(const std::string& area);
+ LayerState& getLayerState() { return tmp_state; }
+ WMError setLayerState(const LayerState& l);
+ bool hasLayerID(unsigned id);
bool hasRole(const std::string& role);
- private:
- std::string name = "";
- // The actual layer ID
- int layer_id = 0;
- // Specify a role prefix for surfaces that should be
- // put on this layer.
+ // Manipulation
+ void addLayerToState(unsigned layer);
+ void removeLayerFromState(unsigned layer);
+ void attachAppToArea(const std::string& app, const std::string& area);
+ void update();
+ void undo();
+
+ // Event
+ void appTerminated(unsigned layer);
+
+ // Debug
+ void dump();
+
+ private:
+ LayerState tmp_state;
+ LayerState state;
+ unsigned wm_layer_id;
+ std::string name = ""; // Layer name
std::string role_list;
+ std::vector<std::string> area_list;
+ std::vector<unsigned> id_list;
+ unsigned id_begin;
+ unsigned id_end;
};
} // namespace wm