[PATCH weston 09/11] shell: Manage toplevel surfaces on all workspaces in one list

Jonas Ådahl jadahl at gmail.com
Sat Jan 26 08:49:14 PST 2013

On Sat, Jan 26, 2013 at 5:34 PM, Bill Spitzak <spitzak at gmail.com> wrote:
> On 01/26/2013 06:33 AM, Jonas Ådahl wrote:
>> Instead of linking and unlinking per-workspace layers to the output
>> cycle, keep all toplevel surfaces in one per-shell list. Shell surfaces
>> now has a visibility flag, and surfaces that has visibility set to true
>> will be added to a reintroduced toplevel layer.
>> Changing active workspace corresponds to updating the visibility flag
>> and marking the toplevel layer as dirty. Before an output repaint, if
>> the toplevel has been marked as dirty, the shell will repopulate the
>> toplevel surface with visible surfaces.
>> Structuring surfaces this way as the benefit of simple stacking order
>> across outputs.
>> Black surfaces are currently managed as a special case, stacked on the
>> toplevel layer beneath a fullscreen surface in the pre output repaint
>> hook.
> Could fullscreen be considered a "workspace" rather than using this black
> window? Ie showing a fullscreen window is as though you switched that output
> to a workspace that contains only that window. This would get rid of the
> black surface, instead the desktop surface would be used for this.

Having a "fullscreen workspace" I don't think makes much sense, and it
wouldn't get rid of the black surface as it would still be needed to
hide the desktop background, panel etc just as now.

> I personally feel that fullscreen should mean "it goes above the panel" and
> thus transparent areas will still show the panel, other windows, and the
> desktop. If you want full speed of direct mapping then the fullscreen window
> should be opaque (or at least claim to be opaque by setting the opaque
> region to the full size).

A fullscreen surface and its black surface are usually stacked in the
fullscreen layer. When using the alt-tab switcher binding the
fullscreen layer gets "lowered" i.e. the surfaces in it gets stacked
together with toplevel surfaces, which is what the special case was
about. When a fullscreen surface is activated, it gets restacked in
the fullscreen layer.. The fullscreen layer is always above the panel
layer and the toplevel layer.

> But if fullscreen is intended to hide everything else, it sure sounds like a
> "workspace" to me.

Workspaces in weston are used to group the surfaces usually are placed
in the toplevel layer of the desktop shell plugin. That is not the
same as fullscreen.


More information about the wayland-devel mailing list