X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fapp.cpp;h=f8d216b75b7f37fa11b3d7aabb5a3ef7bd19730c;hb=6bb5acd014a60508e142725fa6f8b9b6a1e4543c;hp=c0cb1008747115013270ddb48a100a975490e129;hpb=7da386db79a2f10ce0a357a76001638ff3310b70;p=staging%2Fwindowmanager.git diff --git a/src/app.cpp b/src/app.cpp index c0cb100..f8d216b 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -386,14 +386,17 @@ 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); - struct LayoutState &state = **this->layers.get_layout_state(*surface_id); + auto layer_id = this->layers.get_layer_id(*surface_id); - logdebug("state @ %p = { %d, %d, %d }", &state, state.main, state.sub, state.s); + if (! layer_id) { + return "Surface is not on any layer!"; + } + + struct LayoutState &state = **this->layers.get_layout_state(*surface_id); // 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; } @@ -500,8 +503,6 @@ char const *App::deactivate_surface(char const *drawing_name) { return nullptr; } - logdebug("state @ %p = { %d, %d, %d }", &state, state.main, state.sub, state.s); - if (state.main == *surface_id) { if (state.sub != -1) { this->emit_syncdraw(this->lookup_name(state.sub)->c_str()); @@ -545,7 +546,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()); @@ -578,7 +584,7 @@ void App::emit_syncdraw(char const *label) { } void App::emit_flushdraw(char const *label) { - this->api.send_event("syncdraw", label); + this->api.send_event("flushdraw", label); } void App::emit_visible(char const *label, bool is_visible) {