diff options
author | Kazumasa Mitsunari <knimitz@witz-inc.co.jp> | 2018-10-22 09:30:19 +0900 |
---|---|---|
committer | Kazumasa Mitsunari <knimitz@witz-inc.co.jp> | 2018-11-13 13:05:39 +0900 |
commit | 010ca3f3459a52e44deb5e70e94e9cd394814e3e (patch) | |
tree | 96b8cc678180df86c95f362049dc40e7ce09833b /src/wm_layer.hpp | |
parent | c2110a3ec8fa74f2fc37e4909db547aa4a36c851 (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.hpp | 64 |
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 |