The wl_subcompositor interface

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

## Macros

#define | WL_SUBCOMPOSITOR_DESTROY_SINCE_VERSION 1
#define | WL_SUBCOMPOSITOR_GET_SUBSURFACE_SINCE_VERSION 1

## Functions

static void | wl_subcompositor_set_user_data (struct wl_subcompositor *wl_subcompositor, void *user_data)
static void * | wl_subcompositor_get_user_data (struct wl_subcompositor *wl_subcompositor)
static void | wl_subcompositor_destroy (struct wl_subcompositor *wl_subcompositor)
static struct wl_subsurface * | wl_subcompositor_get_subsurface (struct wl_subcompositor *wl_subcompositor, struct wl_surface *surface, struct wl_surface *parent)

## Detailed Description

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.

## Macro Definition Documentation

## WL_SUBCOMPOSITOR_DESTROY_SINCE_VERSION

#define WL_SUBCOMPOSITOR_DESTROY_SINCE_VERSION 1

Definition at line 5318 of file wayland-client-protocol.h.

## WL_SUBCOMPOSITOR_GET_SUBSURFACE_SINCE_VERSION

#define WL_SUBCOMPOSITOR_GET_SUBSURFACE_SINCE_VERSION 1

Definition at line 5322 of file wayland-client-protocol.h.

## Function Documentation

## wl_subcompositor_destroy()

static void wl_subcompositor_destroy | ( | struct wl_subcompositor * | wl_subcompositor | ) |

inline static

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 5352 of file wayland-client-protocol.h.

{
wl_proxy_marshal((struct wl_proxy *) wl_subcompositor,
WL_SUBCOMPOSITOR_DESTROY);
wl_proxy_destroy((struct wl_proxy *) wl_subcompositor);
}

References WL_SUBCOMPOSITOR_DESTROY.

## wl_subcompositor_get_subsurface()

static struct wl_subsurface* wl_subcompositor_get_subsurface | ( | struct wl_subcompositor * | wl_subcompositor,
|  | struct wl_surface * | surface,
|  | struct wl_surface * | parent
| ) |  |

inline static

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.

Definition at line 5372 of file wayland-client-protocol.h.

{
struct wl_proxy *id;
id = wl_proxy_marshal_constructor((struct wl_proxy *) wl_subcompositor,
WL_SUBCOMPOSITOR_GET_SUBSURFACE, &wl_subsurface_interface, NULL, surface, parent);
return (struct wl_subsurface *) id;
}

References NULL, WL_SUBCOMPOSITOR_GET_SUBSURFACE, and wl_subsurface_interface.

## wl_subcompositor_get_user_data()

static void* wl_subcompositor_get_user_data | ( | struct wl_subcompositor * | wl_subcompositor | ) |

inline static

Definition at line 5333 of file wayland-client-protocol.h.

{
return wl_proxy_get_user_data((struct wl_proxy *) wl_subcompositor);
}

## wl_subcompositor_set_user_data()

static void wl_subcompositor_set_user_data | ( | struct wl_subcompositor * | wl_subcompositor,
|  | void * | user_data
| ) |  |

inline static

Definition at line 5326 of file wayland-client-protocol.h.

{
wl_proxy_set_user_data((struct wl_proxy *) wl_subcompositor, user_data);
}
NULL
#define NULL
Definition: begin_code.h:167
surface
EGLSurface surface
Definition: eglext.h:248
WL_SUBCOMPOSITOR_DESTROY
#define WL_SUBCOMPOSITOR_DESTROY
Definition: wayland-client-protocol.h:5311
wl_subsurface_interface
const struct wl_interface wl_subsurface_interface
Definition: wayland-protocol.c:502
id
GLuint id
Definition: SDL_opengl_glext.h:528
WL_SUBCOMPOSITOR_GET_SUBSURFACE
#define WL_SUBCOMPOSITOR_GET_SUBSURFACE
Definition: wayland-client-protocol.h:5312