summaryrefslogtreecommitdiffstats
path: root/src/layers.hpp
diff options
context:
space:
mode:
authorKazumasa Mitsunari <knimitz@witz-inc.co.jp>2019-01-29 13:18:17 +0900
committerKazumasa Mitsunari <knimitz@witz-inc.co.jp>2019-02-04 19:54:01 +0900
commita0fa6394c0d8b7997343d6f2a44d9c2868f4be5f (patch)
tree33dee52eb43bfbf77fafbcecbe5e96a062179853 /src/layers.hpp
parentb72e372690e677c38fa9b5ae90fb7fbe5a575c76 (diff)
Fix top surface becomes invisible when background surface is crashed.
Fix top surface becomes invisible when surface on same layer, such like application layer, is crashed. To fix this issue, I refactored attaching app to layer. Originally, window manager attached app to surface. This patch is the backport of master branch. Bug-AGL : SPEC-1635 Change-Id: Ie6713e669a25662e8547aa7782551ddae60c7e01 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
Diffstat (limited to 'src/layers.hpp')
-rw-r--r--src/layers.hpp158
1 files changed, 0 insertions, 158 deletions
diff --git a/src/layers.hpp b/src/layers.hpp
deleted file mode 100644
index 3a16985..0000000
--- a/src/layers.hpp
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (c) 2017 TOYOTA MOTOR CORPORATION
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef TMCAGLWM_LAYERS_H
-#define TMCAGLWM_LAYERS_H
-
-#include <string>
-
-#include "../include/json.hpp"
-#include "layout.hpp"
-#include "result.hpp"
-#include "wayland_ivi_wm.hpp"
-
-namespace wm
-{
-
-struct layer
-{
- using json = nlohmann::json;
-
- // A more or less descriptive name?
- std::string name = "";
- // The actual layer ID
- int layer_id = -1;
- // The rectangular region surfaces are allowed to draw on
- // this layer.
- compositor::rect rect;
- // Specify a role prefix for surfaces that should be
- // put on this layer.
- std::string role;
-
- mutable struct LayoutState state;
-
- explicit layer(nlohmann::json const &j);
-
- json to_json() const;
-};
-
-struct layer_map
-{
- using json = nlohmann::json;
-
- using storage_type = std::map<int, struct layer>;
- using layers_type = std::vector<uint32_t>;
- using role_to_layer_map = std::vector<std::pair<std::string, int>>;
- using addsurf_layer_map = std::map<int, int>;
-
- storage_type mapping; // map surface_id to layer
- layers_type layers; // the actual layer IDs we have
- int main_surface;
- std::string main_surface_name;
- role_to_layer_map roles;
- addsurf_layer_map surfaces; // additional surfaces on layers
-
- optional<int> get_layer_id(int surface_id);
- optional<int> get_layer_id(std::string const &role);
- optional<struct LayoutState *> get_layout_state(int surface_id)
- {
- int layer_id = *this->get_layer_id(surface_id);
- auto i = this->mapping.find(layer_id);
- return i == this->mapping.end()
- ? nullopt
- : optional<struct LayoutState *>(&i->second.state);
- }
- optional<struct layer> get_layer(int layer_id)
- {
- auto i = this->mapping.find(layer_id);
- return i == this->mapping.end() ? nullopt
- : optional<struct layer>(i->second);
- }
-
- layers_type::size_type get_layers_count() const
- {
- return this->layers.size();
- }
-
- void add_surface(int surface_id, int layer_id)
- {
- this->surfaces[surface_id] = layer_id;
- }
-
- void remove_surface(int surface_id)
- {
- this->surfaces.erase(surface_id);
- }
-
- json to_json() const;
- void setupArea(double scaling);
- compositor::rect getAreaSize(const std::string &area);
- int loadAreaDb();
-
- private:
- std::unordered_map<std::string, compositor::rect> area2size;
-
- static const char *kDefaultAreaDb;
-};
-
-struct result<struct layer_map> to_layer_map(nlohmann::json const &j);
-
-static const nlohmann::json default_layers_json = {
- {"main_surface", {
- {"surface_role", "HomeScreen"}
- }},
- {"mappings", {
- {
- {"role", "^HomeScreen$"},
- {"name", "HomeScreen"},
- {"layer_id", 1000},
- {"area", {
- {"type", "full"}
- }}
- },
- {
- {"role", "MediaPlayer|Radio|Phone|Navigation|HVAC|Settings|Dashboard|POI|Mixer"},
- {"name", "apps"},
- {"layer_id", 1001},
- {"area", {
- {"type", "rect"},
- {"rect", {
- {"x", 0},
- {"y", 218},
- {"width", -1},
- {"height", -433}
- }}
- }}
- },
- {
- {"role", "^OnScreen.*"},
- {"name", "popups"},
- {"layer_id", 9999},
- {"area", {
- {"type", "rect"},
- {"rect", {
- {"x", 0},
- {"y", 760},
- {"width", -1},
- {"height", 400}
- }}
- }}
- }
- }}
-};
-} // namespace wm
-
-#endif // TMCAGLWM_LAYERS_H