layout: Remove black surface when trying to use migrate views to other 59/24659/1
authorMarius Vlad <marius.vlad@collabora.com>
Mon, 1 Jun 2020 18:04:18 +0000 (21:04 +0300)
committerMarius Vlad <marius.vlad@collabora.com>
Mon, 8 Jun 2020 20:19:29 +0000 (23:19 +0300)
outputs

We install a black surface in the fullscreen layer for each output, and
we need to remove is 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 fac7ab9..d1c1f75 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);