wayland_server_subcompositor_t - Man Page

sub-surface compositing


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


Interface name of the resource object.

client_t wayland::server::resource_t::get_client () const [inherited]

Get the associated client


the client that owns the resource.

uint32_t wayland::server::resource_t::get_id () const [inherited]

Get the internal ID of the resource


the internal ID of the resource

unsigned int wayland::server::resource_t::get_version () const [inherited]

Get interface version


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


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.


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


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


Wed Oct 5 2022 Version 1.0.0 Wayland++