Bug 74222 - Lowered fullscreen surfaces get other unrelated surfaces between the fullscreen surface and its black view
Summary: Lowered fullscreen surfaces get other unrelated surfaces between the fullscre...
Alias: None
Product: Wayland
Classification: Unclassified
Component: weston (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Wayland bug list
QA Contact:
Depends on:
Reported: 2014-01-30 12:40 UTC by Emilio Pozuelo Monfort
Modified: 2014-04-29 23:34 UTC (History)
0 users

See Also:
i915 platform:
i915 features:

screencast (600.26 KB, video/webm)
2014-01-30 12:41 UTC, Emilio Pozuelo Monfort

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]
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.

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.