package wayland

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Sub-surface compositing.

The global interface exposing sub-surface compositing capabilities. A wl_surface, that has sub-surfaces associated, is called the parent surface. Sub-surfaces can be arbitrarily nested and create a tree of sub-surfaces.

The root surface in a tree of sub-surfaces is the main surface. The main surface cannot be a sub-surface, because sub-surfaces must always have a parent.

A main surface with its sub-surfaces forms a (compound) window. For window management purposes, this set of wl_surface objects is to be considered as a single window, and it should also behave as such.

The aim of sub-surfaces is to offload some of the compositing work within a window from clients to the compositor. A prime example is a video player with decorations and video in separate wl_surface objects. This should allow the compositor to pass YUV video buffer processing to dedicated overlay hardware when possible.

type 'v t = ([ `Wl_subcompositor ], 'v, [ `Client ]) Proxy.t

Version 1

val get_subsurface : [< `V1 ] as 'a t -> [[ `Wl_subsurface ], 'b, [ `Client ]] Proxy.Handler.t -> surface:([ `Wl_surface ], 'c, [ `Client ]) Proxy.t -> parent:([ `Wl_surface ], 'd, [ `Client ]) Proxy.t -> ([ `Wl_subsurface ], 'e, [ `Client ]) Proxy.t

Give a surface the role sub-surface.

Create a sub-surface interface for the given surface, and associate it with the given parent surface. This turns a plain wl_surface into a sub-surface.

The to-be sub-surface must not already have another role, and it must not have an existing wl_subsurface object. Otherwise a protocol error is raised.

Adding sub-surfaces to a parent is a double-buffered operation on the parent (see wl_surface.commit). The effect of adding a sub-surface becomes visible on the next time the state of the parent surface is applied.

This request modifies the behaviour of wl_surface.commit request on the sub-surface, see the documentation on wl_subsurface interface.

val destroy : [< `V1 ] t -> unit

Unbind from the subcompositor interface.

Informs the server that the client will not be using this protocol object anymore. This does not affect any other objects, wl_subsurface objects included.

Handlers

Note: Servers will always want to use v1.

class +'a v1 : object ... end

Handler for a proxy with version >= 1.