summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYuta Doi <yuta-d@witz-inc.co.jp>2018-01-19 17:00:42 +0900
committerYuta Doi <yuta-d@witz-inc.co.jp>2018-01-19 08:19:14 +0000
commita40753a48f09c8ffcce43f324f5f91029a351a48 (patch)
treedff274f4ef8e4bb9c321b7435406ae2eeab69e89 /src
parent09a667b964e5b24b56805ac7d7ef7e66d9b22a3c (diff)
Fix for switching from half size to full size
This patch is for eel only because wayland-ivi-extension 2.x will be used in master. According to the modification of wayland-ivi-extension 1.13, WindowManager is fixed for correct switching from half size to full size. Related commit: https://gerrit.automotivelinux.org/gerrit/#/c/12399/ Bug-AGL: SPEC-986 Change-Id: If8fdae2206aa138f788d6c0929ab533c4123f153 Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
Diffstat (limited to 'src')
-rw-r--r--src/app.cpp33
-rw-r--r--src/wayland.cpp7
-rw-r--r--src/wayland.hpp2
3 files changed, 7 insertions, 35 deletions
diff --git a/src/app.cpp b/src/app.cpp
index 254214e..838908c 100644
--- a/src/app.cpp
+++ b/src/app.cpp
@@ -290,10 +290,6 @@ void App::surface_set_layout(int surface_id, optional<int> sub_surface_id) {
HMI_DEBUG("wm", "surface_set_layout for sub surface %u on layer %u",
*sub_surface_id, layer_id);
- // configure surface to wxh dimensions
- ss->set_configuration(w, h);
- // set source reactangle, even if we should not need to set it.
- ss->set_source_rectangle(0, 0, w, h);
// set destination to the display rectangle
ss->set_destination_rectangle(x + x_off, y + y_off, w, h);
@@ -302,11 +298,6 @@ void App::surface_set_layout(int surface_id, optional<int> sub_surface_id) {
HMI_DEBUG("wm", "surface_set_layout for surface %u on layer %u", surface_id,
layer_id);
- // configure surface to wxh dimensions
- s->set_configuration(w, h);
- // set source reactangle, even if we should not need to set it.
- s->set_source_rectangle(0, 0, w, h);
-
// set destination to the display rectangle
s->set_destination_rectangle(x, y, w, h);
@@ -382,14 +373,6 @@ char const *App::api_activate_surface(char const *drawing_name, char const *draw
// Commit for configuraton
this->layout_commit();
- if (!(layer->is_normal_layout_only)) {
- // Wait for configuration listener
- controller->is_configured = false;
- while (!(controller->is_configured)) {
- dispatch_pending_events();
- }
- }
-
std::string str_area = std::string(kNameLayoutNormal) + "." + std::string(kNameAreaFull);
this->emit_syncdraw(drawing_name, str_area.c_str());
this->enqueue_flushdraw(state.main);
@@ -423,15 +406,9 @@ char const *App::api_activate_surface(char const *drawing_name, char const *draw
}
state = nl;
- // Commit for configuraton and visibility(0)
+ // Commit for configuration and visibility(0)
this->layout_commit();
- // Wait for configuration listener
- controller->is_configured = false;
- while (!(controller->is_configured)) {
- dispatch_pending_events();
- }
-
std::string str_area_main = std::string(kNameLayoutSplit) + "." + std::string(kNameAreaMain);
std::string str_area_sub = std::string(kNameLayoutSplit) + "." + std::string(kNameAreaSub);
this->emit_syncdraw(main.c_str(), str_area_main.c_str());
@@ -458,14 +435,6 @@ char const *App::api_activate_surface(char const *drawing_name, char const *draw
// Commit for configuraton and visibility(0)
this->layout_commit();
- if (!(layer->is_normal_layout_only)) {
- // Wait for configuration listener
- controller->is_configured = false;
- while (!(controller->is_configured)) {
- dispatch_pending_events();
- }
- }
-
std::string str_area = std::string(kNameLayoutNormal) + "." + std::string(kNameAreaFull);
this->emit_syncdraw(drawing_name, str_area.c_str());
this->enqueue_flushdraw(state.main);
diff --git a/src/wayland.cpp b/src/wayland.cpp
index 53668d2..9e7408c 100644
--- a/src/wayland.cpp
+++ b/src/wayland.cpp
@@ -226,6 +226,9 @@ void controller::layer_create(uint32_t id, int32_t w, int32_t h) {
void controller::surface_create(uint32_t id) {
this->surfaces[id] = std::make_unique<struct surface>(id, this);
+
+ // configure surface to wxh dimensions
+ this->surfaces[id]->set_configuration(this->output_size.w, this->output_size.h);
}
void controller::controller_screen(uint32_t id,
@@ -251,6 +254,9 @@ void controller::controller_surface(uint32_t id) {
if (this->surfaces.find(id) == this->surfaces.end()) {
this->surfaces[id] = std::make_unique<struct surface>(id, this);
this->chooks->surface_created(id);
+
+ // configure surface to wxh dimensions
+ this->surfaces[id]->set_configuration(this->output_size.w, this->output_size.h);
}
}
@@ -628,7 +634,6 @@ void controller::surface_configuration(struct surface *s, int32_t width,
HMI_DEBUG("wm", "compositor::surface %s @ %d w %i h %i", __func__, s->id,
width, height);
this->sprops[s->id].size = size{uint32_t(width), uint32_t(height)};
- is_configured = true;
}
void controller::surface_orientation(struct surface *s, int32_t orientation) {
diff --git a/src/wayland.hpp b/src/wayland.hpp
index 59d7ade..619e47a 100644
--- a/src/wayland.hpp
+++ b/src/wayland.hpp
@@ -254,8 +254,6 @@ struct controller : public wayland_proxy<struct ivi_controller> {
wm::controller_hooks *chooks;
- bool is_configured;
-
void add_proxy_to_id_mapping(struct ivi_controller_surface *p, uint32_t id);
void remove_proxy_to_id_mapping(struct ivi_controller_surface *p);
void add_proxy_to_id_mapping(struct ivi_controller_layer *p, uint32_t id);