From 4663aca2e21dd4af39447b110c52acfee90f3bd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20Krezovi=C4=87?= Date: Thu, 30 Jun 2016 06:04:29 +0200 Subject: [PATCH] desktop-shell: update for manual surface/view mapping MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a follow up for desktop-shell to manually set mapped status for views/surfaces it controls v2: - Add manual mapping to shell_fade_create_surface() and shell_ensure_fullscreen_black_view() Signed-off-by: Armin Krezović Reviewed-by: Pekka Paalanen --- desktop-shell/input-panel.c | 2 ++ desktop-shell/shell.c | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/desktop-shell/input-panel.c b/desktop-shell/input-panel.c index 73eac5ce..0d003b1a 100644 --- a/desktop-shell/input-panel.c +++ b/desktop-shell/input-panel.c @@ -85,6 +85,8 @@ show_input_panel_surface(struct input_panel_surface *ipsurf) &ipsurf->view->layer_link); weston_view_geometry_dirty(ipsurf->view); weston_view_update_transform(ipsurf->view); + ipsurf->surface->is_mapped = true; + ipsurf->view->is_mapped = true; weston_surface_damage(ipsurf->surface); if (ipsurf->anim) diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c index c125d556..c72f801c 100644 --- a/desktop-shell/shell.c +++ b/desktop-shell/shell.c @@ -749,6 +749,7 @@ create_focus_surface(struct weston_compositor *ec, surface->configure = focus_surface_configure; surface->output = output; + surface->is_mapped = true; surface->configure_private = fsurf; weston_surface_set_label_func(surface, focus_surface_get_label); @@ -759,6 +760,7 @@ create_focus_surface(struct weston_compositor *ec, return NULL; } fsurf->view->output = output; + fsurf->view->is_mapped = true; weston_surface_set_size(surface, output->width, output->height); weston_view_set_position(fsurf->view, output->x, output->y); @@ -2854,6 +2856,7 @@ shell_ensure_fullscreen_black_view(struct shell_surface *shsurf) weston_view_geometry_dirty(shsurf->fullscreen.black_view); weston_surface_damage(shsurf->surface); + shsurf->fullscreen.black_view->is_mapped = true; shsurf->state.lowered = false; } @@ -3523,11 +3526,13 @@ shell_map_popup(struct shell_surface *shsurf) struct weston_touch *touch = weston_seat_get_touch(shseat->seat); shsurf->surface->output = parent_view->output; + shsurf->surface->is_mapped = true; shsurf->view->output = parent_view->output; weston_view_set_transform_parent(shsurf->view, parent_view); weston_view_set_position(shsurf->view, shsurf->popup.x, shsurf->popup.y); weston_view_update_transform(shsurf->view); + shsurf->view->is_mapped = true; if (pointer && pointer->grab_serial == shsurf->popup.serial) { @@ -4361,6 +4366,8 @@ configure_static_view(struct weston_view *ev, struct weston_layer *layer) } weston_view_set_position(ev, ev->output->x, ev->output->y); + ev->surface->is_mapped = true; + ev->is_mapped = true; if (wl_list_empty(&ev->layer_link.link)) { weston_layer_entry_insert(&layer->view_list, &ev->layer_link); @@ -4542,6 +4549,8 @@ lock_surface_configure(struct weston_surface *surface, int32_t sx, int32_t sy) weston_layer_entry_insert(&shell->lock_layer.view_list, &view->layer_link); weston_view_update_transform(view); + surface->is_mapped = true; + view->is_mapped = true; shell_fade(shell, FADE_IN); } } @@ -5380,6 +5389,8 @@ shell_fade_create_surface(struct desktop_shell *shell) weston_layer_entry_insert(&compositor->fade_layer.view_list, &view->layer_link); pixman_region32_init(&surface->input); + surface->is_mapped = true; + view->is_mapped = true; return view; } @@ -5686,6 +5697,7 @@ map(struct desktop_shell *shell, struct shell_surface *shsurf, if (shsurf->type != SHELL_SURFACE_NONE) { weston_view_update_transform(shsurf->view); + shsurf->view->is_mapped = true; if (shsurf->state.maximized) { shsurf->surface->output = shsurf->output; shsurf->view->output = shsurf->output; @@ -5797,6 +5809,7 @@ shell_surface_configure(struct weston_surface *es, int32_t sx, int32_t sy) if (!weston_surface_is_mapped(es)) { map(shell, shsurf, sx, sy); + es->is_mapped = true; } else if (type_changed || sx != 0 || sy != 0 || shsurf->last_width != es->width || shsurf->last_height != es->height) {