layout: Remove black surface when trying to use migrate views to other 59/24659/4
authorMarius Vlad <marius.vlad@collabora.com>
Mon, 1 Jun 2020 18:04:18 +0000 (21:04 +0300)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Mon, 15 Jun 2020 10:08:51 +0000 (10:08 +0000)
outputs

We install a black surface in the fullscreen layer for each output, and
we need to remove it before adding the new surfaces/views. We did that
aleady for 'remote' type of surfaces when categorizing the type, but
here we use the configuration file to determine the output, but we were
missing the black surface for that output. This verifies that the black
surface for that output is in use, and removes the black surface if so.

Bug-AGL: SPEC-3280

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I3c4ae90ee0983bc424c932715d9a1ff082117bef

src/layout.c

index 57992ca..079325e 100644 (file)
@@ -324,6 +324,13 @@ ivi_layout_desktop_committed(struct ivi_surface *surf)
                /* check first if there aren't any outputs being set */
                r_output = ivi_layout_find_app_id(app_id, surf->ivi);
 
+               if (r_output) {
+                       struct weston_view *view = r_output->fullscreen_view.fs->view;
+                       if (view->is_mapped || view->surface->is_mapped)
+                               remove_black_surface(r_output);
+               }
+
+
                /* try finding an output with a background and use that */
                if (!r_output)
                        r_output = ivi_layout_find_bg_output(surf->ivi);