From: Marcus Fritzsch Date: Thu, 27 Jul 2017 22:36:46 +0000 (+0200) Subject: layers: move get_layer_for_surface() to .cpp X-Git-Tag: 4.99.1~224 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=4eec91fcd22a1ff5473f3721feed1f15095682e3;p=staging%2Fwindowmanager.git layers: move get_layer_for_surface() to .cpp Signed-off-by: Marcus Fritzsch --- diff --git a/src/layers.cpp b/src/layers.cpp index 8bd9b8f..07586ad 100644 --- a/src/layers.cpp +++ b/src/layers.cpp @@ -2,8 +2,10 @@ // Created by m on 7/27/17. // -#include "layers.hpp" +#include + #include "json_helper.hpp" +#include "layers.hpp" #include "util.hpp" namespace wm { @@ -45,4 +47,25 @@ struct result to_surface_id_to_layer_map( } } +// Helper to allow std::lower_bound with a int key only +inline bool + operator<(struct surface_id_to_layer const &a, int b) { + return a.id_max < b; +} + +optional surface_id_to_layer_map::get_layer_for_surface(int surface_id) { + auto i = std::lower_bound(std::cbegin(this->mapping), + std::cend(this->mapping), surface_id); + + if (i != this->mapping.end()) { + // std::less only checks for surface_id_to_layer::id_max, so check + // that we are actually inside of an interval here. + if (i->id_min <= surface_id) { + return optional(i->layer_id); + } + } + + return nullopt; +} + } // namespace wm diff --git a/src/layers.hpp b/src/layers.hpp index 7b35c63..9dd2036 100644 --- a/src/layers.hpp +++ b/src/layers.hpp @@ -5,8 +5,6 @@ #ifndef TMCAGLWM_LAYERS_H #define TMCAGLWM_LAYERS_H -#include -#include #include #include #include @@ -28,27 +26,14 @@ struct surface_id_to_layer { } }; -inline bool operator<(struct surface_id_to_layer const &a, int b) { - return a.id_max < b; -} - +// 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 map_type; - - map_type mapping; + typedef std::set surface_to_layer_map_type; - std::experimental::optional get_layer_for_surface(int surface_id) { - auto i = std::lower_bound(std::cbegin(this->mapping), - std::cend(this->mapping), surface_id); + surface_to_layer_map_type mapping; - if (i != this->mapping.end()) { - if (i->id_min <= surface_id) { - return std::experimental::optional(i->layer_id); - } - } - - return std::experimental::nullopt; - } + optional get_layer_for_surface(int surface_id); }; struct result to_surface_id_to_layer_map(