From d2fe9e8e49a0970986282162b04d335c57845ac3 Mon Sep 17 00:00:00 2001 From: Marcus Fritzsch Date: Tue, 1 Aug 2017 16:16:29 +0200 Subject: [PATCH] layers: rename surface_id_to_layer and surface_id_to_layer_map Signed-off-by: Marcus Fritzsch --- src/app.cpp | 21 ++++++++++----------- src/app.hpp | 2 +- src/layers.cpp | 37 ++++++++++++++++--------------------- src/layers.hpp | 19 +++++++++---------- 4 files changed, 36 insertions(+), 43 deletions(-) diff --git a/src/app.cpp b/src/app.cpp index 1c9b3c2..f925e3d 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -86,17 +86,17 @@ struct result load_layout(char const *filename) { return Ok(layouts); } -struct result +struct result load_layer_ids(char const *filename) { DB("loading IDs from " << filename); auto j = file_to_json(filename); if (j.is_err()) { - return Err(j.unwrap_err()); + return Err(j.unwrap_err()); } json jids = j.unwrap(); - return to_surface_id_to_layer_map(jids); + return to_layer_map(jids); } } // namespace @@ -114,14 +114,14 @@ App::App(wl::display *d) controller{}, outputs(), layouts(), - surface2layer() { + layers() { assert(g_app == nullptr); g_app = this; { auto l = load_layer_ids("../ids.json"); if (l.is_ok()) { - this->surface2layer = l.unwrap(); + this->layers = l.unwrap(); } else { logerror("%s", l.err().value()); } @@ -144,7 +144,7 @@ int App::init() { return -1; } - if (this->surface2layer.mapping.empty()) { + if (this->layers.mapping.empty()) { logerror("No surface -> layer mapping loaded"); return -1; } @@ -230,7 +230,7 @@ int App::init_layout() { // Quick and dirty setup of layers // XXX: This likely needs to be sorted by order (note, we don't (yet?) // do any zorder arrangement). - for (auto const &i : this->surface2layer.mapping) { + for (auto const &i : this->layers.mapping) { c->layer_create(i.layer_id, o->width, o->height); auto &l = layers[i.layer_id]; l->set_destination_rectangle(0, 0, o->width, o->height); @@ -240,7 +240,7 @@ int App::init_layout() { } // Add layers to screen (XXX: are they sorted correctly?) - s->set_render_order(this->surface2layer.layers); + s->set_render_order(this->layers.layers); c->commit_changes(); @@ -257,13 +257,12 @@ int App::init_layout() { // |_| void App::surface_created(uint32_t surface_id) { DB("surface_id is " << surface_id); - int layer_id = - this->surface2layer.get_layer_for_surface(surface_id).value_or(-1); + int layer_id = this->layers.get_layer_id(surface_id).value_or(-1); if (layer_id == -1) { logerror("Surface %d (0x%x) is not part of any layer!", surface_id, surface_id); } else { - auto rect = this->surface2layer.get_rect_for_surface(surface_id).value(); + auto rect = this->layers.get_layer_rect(surface_id).value(); this->controller->add_task( "fullscreen surface", [layer_id, surface_id, rect](struct genivi::controller *c) { diff --git a/src/app.hpp b/src/app.hpp index 247f772..7b9164f 100644 --- a/src/app.hpp +++ b/src/app.hpp @@ -36,7 +36,7 @@ struct App { std::vector> outputs; layouts_type layouts; - surface_id_to_layer_map surface2layer; + layer_map layers; App(wl::display *d); ~App(); diff --git a/src/layers.cpp b/src/layers.cpp index 7cc2f00..1e44a1b 100644 --- a/src/layers.cpp +++ b/src/layers.cpp @@ -12,7 +12,7 @@ namespace wm { using json = nlohmann::json; -surface_id_to_layer::surface_id_to_layer(nlohmann::json const &j) { +layer::layer(nlohmann::json const &j) { DB(j); if (j["type"] == "range") { this->id_min = get(j["first_surface_id"]); @@ -32,29 +32,26 @@ surface_id_to_layer::surface_id_to_layer(nlohmann::json const &j) { } } -struct result to_surface_id_to_layer_map( - nlohmann::json const &j) { +struct result to_layer_map(nlohmann::json const &j) { DB(j); try { - surface_id_to_layer_map stl{}; + layer_map stl{}; auto m = j["mappings"]; stl.layers.reserve(m.size()); std::transform(std::cbegin(m), std::cend(m), std::inserter(stl.mapping, stl.mapping.end()), [&stl](nlohmann::json const &j) { - auto k = surface_id_to_layer(j); + auto k = layer(j); stl.layers.push_back(unsigned(k.layer_id)); return k; }); // XXX need to sort layers? for (auto i : stl.mapping) { if (i.name.empty()) { - return Err( - "Found mapping w/o name"); + return Err("Found mapping w/o name"); } if (i.layer_id == -1 || i.id_min == -1 || i.id_max == -1) { - return Err( - "Found invalid/unset IDs in mapping"); + return Err("Found invalid/unset IDs in mapping"); } } @@ -73,39 +70,38 @@ struct result to_surface_id_to_layer_map( }); for (auto sid : tests) { - int lid = stl.get_layer_for_surface(sid.first).value_or(-1); + int lid = stl.get_layer_id(sid.first).value_or(-1); DB("this=" << sid.first << ", that=" << lid << ", expect=" << sid.second); if (lid != sid.second) { - return Err( - "ID Map embedded test failed!"); + return Err("ID Map embedded test failed!"); } } } return Ok(stl); } catch (std::exception &e) { - return Err(e.what()); + return Err(e.what()); } } // Helper to allow std::lower_bound with a int key only inline bool - operator<(struct surface_id_to_layer const &a, int b) { + operator<(struct layer const &a, int b) { return a.id_max < b; } namespace { -optional get_surface_id_to_layer( - struct surface_id_to_layer_map const *s2l, int surface_id) { +optional get_surface_id_to_layer(struct layer_map const *s2l, + int surface_id) { auto i = std::lower_bound(std::cbegin(s2l->mapping), std::cend(s2l->mapping), surface_id); if (i != s2l->mapping.end()) { - // std::less only checks for surface_id_to_layer::id_max, so check + // std::less only checks for layer::id_max, so check // that we are actually inside of an interval here. if (i->id_min <= surface_id) { - return optional(*i); + return optional(*i); } } @@ -113,13 +109,12 @@ optional get_surface_id_to_layer( } } -optional surface_id_to_layer_map::get_layer_for_surface(int surface_id) { +optional layer_map::get_layer_id(int surface_id) { auto e = get_surface_id_to_layer(this, surface_id); return e ? optional(e->layer_id) : nullopt; } -optional surface_id_to_layer_map::get_rect_for_surface( - int surface_id) { +optional layer_map::get_layer_rect(int surface_id) { auto e = get_surface_id_to_layer(this, surface_id); return e ? optional(e->rect) : nullopt; } diff --git a/src/layers.hpp b/src/layers.hpp index a3cb2a9..e2d2bf5 100644 --- a/src/layers.hpp +++ b/src/layers.hpp @@ -14,7 +14,7 @@ namespace wm { -struct surface_id_to_layer { +struct layer { // Min and max surface ID mapped to this layer int id_min = -1; int id_max = -1; @@ -31,31 +31,30 @@ struct surface_id_to_layer { genivi::rect rect; // XXX perhaps a zorder is needed here? - explicit surface_id_to_layer(nlohmann::json const &j); + explicit layer(nlohmann::json const &j); - bool operator<(struct surface_id_to_layer const &rhs) const { + bool operator<(struct layer const &rhs) const { return this->id_max < rhs.id_max; } }; // Actually, we shouldn't need a struct here ... but let's just keep it at that // for now, to contain its mapping type and the _single_ useful method. -struct surface_id_to_layer_map { - typedef std::set surface_to_layer_map_type; +struct layer_map { + typedef std::set storage_type; typedef std::vector layers_type; - surface_to_layer_map_type mapping; + storage_type mapping; layers_type layers; - optional get_layer_for_surface(int surface_id); - optional get_rect_for_surface(int surface_id); + optional get_layer_id(int surface_id); + optional get_layer_rect(int surface_id); layers_type::size_type get_layers_count() const { return this->layers.size(); } }; -struct result to_surface_id_to_layer_map( - nlohmann::json const &j); +struct result to_layer_map(nlohmann::json const &j); } // namespace wm -- 2.16.6