---
name: "wayland_server_subcompositor_t"
section: "3"
platform: "linux"
package: "waylandpp-dev"
version: "1.0.0-6+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/wayland_server_subcompositor_t"
---

# wayland\_server\_subcompositor\_t(3)

sub-surface compositing

## NAME

wayland::server::subcompositor\_t - sub-surface compositing

## SYNOPSIS

`#include <wayland-server-protocol.hpp>`

Inherits wayland::server::resource\_t.

### Public Member Functions

std::function\< void()\> & **on\_destroy** ()\
 unbind from the subcompositor interface  std::function\< void(**subsurface\_t**, **surface\_t**, **surface\_t**)\> & **on\_get\_subsurface** ()\
 give a surface the role sub-surface  void **post\_bad\_surface** (std::string const &msg)\
 Post error: the to-be sub-surface is invalid.  bool **proxy\_has\_object** () const\
 Check whether this wrapper actually wraps an object.  void **post\_no\_memory** () const\
 uint32\_t **get\_id** () const\
 client\_t **get\_client** () const\
 unsigned int **get\_version** () const\
 std::string **get\_class** ()\

## Detailed Description

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.

Definition at line **4127** of file **wayland-server-protocol.hpp**.

## Member Function Documentation

### std::string wayland::server::resource\_t::get\_class ()` [inherited]`

Retrieve the interface name (class) of a resource object.

**Returns**

Interface name of the resource object.

### client\_t wayland::server::resource\_t::get\_client () const` [inherited]`

Get the associated client

**Returns**

the client that owns the resource.

### uint32\_t wayland::server::resource\_t::get\_id () const` [inherited]`

Get the internal ID of the resource

**Returns**

the internal ID of the resource

### unsigned int wayland::server::resource\_t::get\_version () const` [inherited]`

Get interface version

**Returns**

Interface version this resource has been constructed with.

### std::function\< void()\> & subcompositor\_t::on\_destroy ()

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.

Definition at line **3097** of file **wayland-server-protocol.cpp**.

### std::function\< void(subsurface\_t, surface\_t, surface\_t)\> & subcompositor\_t::on\_get\_subsurface ()

give a surface the role sub-surface

**Parameters**

*id* the new sub-surface object ID \
 *surface* the surface to be turned into a sub-surface \
 *parent* the parent 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.

Definition at line **3103** of file **wayland-server-protocol.cpp**.

### void subcompositor\_t::post\_bad\_surface (std::string const & msg)

Post error: the to-be sub-surface is invalid.

Definition at line **3109** of file **wayland-server-protocol.cpp**.

### void wayland::server::resource\_t::post\_no\_memory () const` [inherited]`

Post 'not enough memory' error to the client

If the compositor has not enough memory to fulfill a certail request of the client, this function can be called to notify the client of this circumstance.

### bool wayland::server::resource\_t::proxy\_has\_object () const` [inherited]`

Check whether this wrapper actually wraps an object.

**Returns**

true if there is an underlying object, false if this wrapper is empty

## Author

Generated automatically by Doxygen for Wayland++ from the source code.
