summaryrefslogtreecommitdiffstats
path: root/src/app.cpp
diff options
context:
space:
mode:
authorMarcus Fritzsch <marcus_fritzsch@mentor.com>2017-08-25 10:08:22 +0200
committerMarcus Fritzsch <marcus_fritzsch@mentor.com>2017-09-04 16:53:58 +0200
commit8516faf0b1b835f337ff06a7c731f797beffbb3b (patch)
tree85eef0d7e6c4409b4d5d140db87caa560bba0326 /src/app.cpp
parent55d7af4407d3bef99d3de4a5453d5241cac280ca (diff)
app/id_alloc: remove destroyed surfaces
Also, make away with those overloaded operators for generation and lookup. Signed-off-by: Marcus Fritzsch <marcus_fritzsch@mentor.com>
Diffstat (limited to 'src/app.cpp')
-rw-r--r--src/app.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/app.cpp b/src/app.cpp
index 2fd11dc..07747b9 100644
--- a/src/app.cpp
+++ b/src/app.cpp
@@ -382,6 +382,9 @@ void App::surface_created(uint32_t surface_id) {
void App::surface_removed(uint32_t surface_id) {
logdebug("surface_id is %u", surface_id);
+
+ this->add_task("remove surface ID",
+ [surface_id, this] { this->id_alloc.remove_id(surface_id); });
}
result<int> App::request_surface(char const *drawing_name) {
@@ -391,10 +394,10 @@ result<int> App::request_surface(char const *drawing_name) {
return Err<int>("Drawing name does not match any role");
}
- auto rname = this->id_alloc[drawing_name];
+ auto rname = this->id_alloc.lookup(drawing_name);
if (!rname) {
// name does not exist yet, allocate surface id...
- auto id = int(this->id_alloc(drawing_name));
+ auto id = int(this->id_alloc.generate_id(drawing_name));
this->layers.add_surface(id, lid.value());
// XXX: you should fix this!
@@ -413,7 +416,7 @@ result<int> App::request_surface(char const *drawing_name) {
}
char const *App::activate_surface(char const *drawing_name) {
- auto osid = this->id_alloc[drawing_name];
+ auto osid = this->id_alloc.lookup(drawing_name);
if (osid) {
logdebug("ativate surface with name %s and id %u", drawing_name,