Bug 74222

Summary: Lowered fullscreen surfaces get other unrelated surfaces between the fullscreen surface and its black view
Product: Wayland Reporter: Emilio Pozuelo Monfort <pochu27>
Component: westonAssignee: Wayland bug list <wayland-bugs>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: screencast

Description Emilio Pozuelo Monfort 2014-01-30 12:40:53 UTC
To reproduce this you need a client which can go fullscreen but won't cover the whole screen - that's what the black view is there for.

Steps to reproduce:

Launch some random client (e.g. weston-terminal)
Launch the client as specified above and make it fullscreen
Mod+tab to go to the first client. Mod+tab to go back to the fullscreen client

At this point you expect the fullscreen client to be on the screen, with the black view right behind it, covering what the client doesn't. However what you'll have is: [ fullscreen client ] [ other client ] [ black view ].

In the video, I launch gnome-terminal and make it fullscreen with mod-shift-f.

This is a problem related to lower_fullscreen_layer never being reversed, I'll send a patch to the list in a bit.
Comment 1 Emilio Pozuelo Monfort 2014-01-30 12:41:35 UTC
Created attachment 93054 [details]
screencast
Comment 2 Kristian Høgsberg 2014-04-29 23:34:53 UTC
commit 9e7c7598aa44a9caaa5ebd525426623e8e86880e
Author: Emilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk>
Date:   Thu Jan 30 14:01:10 2014 +0100

    desktop-shell: Properly handle lowered fullscreen surfaces
    
    lower_fullscreen_surface() was removing fullscreen surfaces from
    the fullscreen layer and inserting them in the normal workspace
    layer. However, those fullscreen surfaces were never put back in
    the fullscreen layer, causing bugs such as unrelated surfaces
    being drawn between a fullscreen surface and its black view.
    
    Change the lower_fullscreen_surface() logic so that it lowers
    fullscreen surfaces to the workspace layer *and* hides the
    black views. Make this reversible by re-configuring the lowered
    fullscreen surface: when it is re-configured, the black view
    will be shown again and the surface will be restacked in the
    fullscreen layer.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=73575
    https://bugs.freedesktop.org/show_bug.cgi?id=74221
    https://bugs.freedesktop.org/show_bug.cgi?id=74222

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.