app: check layer <-> surface assoc more thoroughly
authorMarcus Fritzsch <marcus_fritzsch@mentor.com>
Tue, 12 Sep 2017 09:29:33 +0000 (11:29 +0200)
committerMarcus Fritzsch <marcus_fritzsch@mentor.com>
Tue, 12 Sep 2017 09:29:33 +0000 (11:29 +0200)
Signed-off-by: Marcus Fritzsch <marcus_fritzsch@mentor.com>
src/app.cpp

index c0cb100..d371af1 100644 (file)
@@ -386,14 +386,20 @@ char const *App::activate_surface(char const *drawing_name) {
       return "Surface does not exist in controller!";
    }
 
-   auto layer_id = *this->layers.get_layer_id(*surface_id);
+   auto layer_id = this->layers.get_layer_id(*surface_id);
+
+   if (! layer_id) {
+      logdebug("Surface %d has no associated layer!", *surface_id);
+      return "Surface is not on any layer!";
+   }
+
    struct LayoutState &state = **this->layers.get_layout_state(*surface_id);
 
    logdebug("state @ %p = { %d, %d, %d }", &state, state.main, state.sub, state.s);
 
    // disable layers that are above our current layer
    for (auto const &l : this->layers.mapping) {
-      if (l.layer_id <= layer_id) {
+      if (l.layer_id <= *layer_id) {
          continue;
       }
 
@@ -545,7 +551,12 @@ char const *App::deactivate_surface(char const *drawing_name) {
 // |_|
 void App::surface_created(uint32_t surface_id) {
    auto layer_id = this->layers.get_layer_id(surface_id);
-   logdebug("surface_id is %u, layer_id is %u", surface_id, layer_id ? *layer_id : -1u);
+   if (! layer_id) {
+      logdebug("Newly created surfce %d is not associated with any layer!", surface_id);
+      return;
+   }
+
+   logdebug("surface_id is %u, layer_id is %u", surface_id, *layer_id);
 
    this->controller->layers[*layer_id]
            ->add_surface(this->controller->surfaces[surface_id].get());