From: Marcus Fritzsch Date: Tue, 12 Sep 2017 09:29:37 +0000 (+0200) Subject: App: add layout_commit() X-Git-Tag: 4.99.1~86 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?p=staging%2Fwindowmanager.git;a=commitdiff_plain;h=260b142249baa6cbd9147473384d40f83f7db61e App: add layout_commit() Signed-off-by: Marcus Fritzsch --- diff --git a/src/app.cpp b/src/app.cpp index 3751fd3..9b6486a 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -235,9 +235,7 @@ int App::init_layers() { // Add layers to screen (XXX: are they sorted correctly?) s->set_render_order(this->layers.layers); - c->commit_changes(); - - this->display->flush(); + this->layout_commit(); return 0; } @@ -353,6 +351,11 @@ void App::surface_set_layout(int surface_id, optional sub_surface_id) { surface_id, layer_id, x, y, w, h); } +void App::layout_commit() { + this->controller->commit_changes(); + this->display->flush(); +} + char const *App::api_activate_surface(char const *drawing_name) { ST(); auto const &surface_id = this->lookup_id(drawing_name); @@ -401,8 +404,7 @@ char const *App::api_activate_surface(char const *drawing_name) { l.state.s = LayoutState::Single; if (flush) { - this->controller->commit_changes(); - this->display->flush(); + this->layout_commit(); } } @@ -418,11 +420,12 @@ char const *App::api_activate_surface(char const *drawing_name) { this->emit_syncdraw(drawing_name); this->surface_set_layout(*surface_id); - this->activate(*surface_id); + this->activate(*surface_id); // XXX do we need to activate after enddraw? state.main = *surface_id; state.sub = -1; state.s = LayoutState::Single; + this->layout_commit(); this->enqueue_flushdraw(state.main); } else { bool can_split = this->can_split(state, *surface_id); @@ -438,6 +441,7 @@ char const *App::api_activate_surface(char const *drawing_name) { this->activate(*surface_id); state.sub = *surface_id; + this->layout_commit(); this->enqueue_flushdraw(state.main); this->enqueue_flushdraw(state.sub); } @@ -452,15 +456,12 @@ char const *App::api_activate_surface(char const *drawing_name) { state.sub = -1; state.s = LayoutState::Single; + this->layout_commit(); this->enqueue_flushdraw(state.main); } } } - // commit changes - this->controller->commit_changes(); - this->display->flush(); - // no error return nullptr; } @@ -505,6 +506,7 @@ char const *App::api_deactivate_surface(char const *drawing_name) { state.sub = -1; state.s = LayoutState::Single; + this->layout_commit(); this->enqueue_flushdraw(state.sub); } else { this->deactivate(*surface_id); @@ -520,14 +522,12 @@ char const *App::api_deactivate_surface(char const *drawing_name) { state.sub = -1; state.s = LayoutState::Single; + this->layout_commit(); this->enqueue_flushdraw(state.main); } else { return "Surface is not active"; } - this->controller->commit_changes(); - this->display->flush(); - return nullptr; } diff --git a/src/app.hpp b/src/app.hpp index c12654d..3319081 100644 --- a/src/app.hpp +++ b/src/app.hpp @@ -163,6 +163,7 @@ private: int init_layers(); void surface_set_layout(int surface_id, optional sub_surface_id = nullopt); + void layout_commit(); // TMC WM Events to clients void emit_activated(char const *label);