layout: Fix no-op check due to invalid checks 23/28723/2
authorMarius Vlad <marius.vlad@collabora.com>
Wed, 26 Apr 2023 06:49:08 +0000 (09:49 +0300)
committerMarius Vlad <marius.vlad@collabora.com>
Wed, 3 May 2023 15:46:19 +0000 (18:46 +0300)
Checking both width and height isn't a strict requirement, either can
different. This unties the check such that we can actually move
windows/applications between different outputs.

We also add here an explicit surface damage as we're removing the view
from the layer.

Bug-AGL: SPEC-4773
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ie91b8c0fd2e9357fe00fd693e2a70fa3b4b4d31a

src/layout.c

index a5e3b36..b7ef788 100644 (file)
@@ -430,8 +430,10 @@ ivi_layout_add_to_hidden_layer(struct ivi_surface *surf,
        if (surf->hidden_layer_output &&
            surf->hidden_layer_output != ivi_output) {
                weston_layer_entry_remove(&ev->layer_link);
+               weston_view_geometry_dirty(ev);
+               weston_surface_damage(ev->surface);
 
-               if (ivi_output->area.width != surf->hidden_layer_output->area.width &&
+               if (ivi_output->area.width != surf->hidden_layer_output->area.width ||
                    ivi_output->area.height != surf->hidden_layer_output->area.height) {
                        weston_desktop_surface_set_maximized(dsurf, true);
                        weston_desktop_surface_set_size(dsurf,