Interface WlSurfaceEventsV6
- All Superinterfaces:
WlSurfaceEvents
,WlSurfaceEventsV2
,WlSurfaceEventsV3
,WlSurfaceEventsV4
,WlSurfaceEventsV5
A surface is a rectangular area that may be displayed on zero or more outputs, and shown any number of times at the compositor's discretion. They can present wl_buffers, receive user input, and define a local coordinate system.
The size of a surface (and relative positions on it) is described in surface-local coordinates, which may differ from the buffer coordinates of the pixel content, in case a buffer_transform or a buffer_scale is used.
A surface without a "role" is fairly useless: a compositor does not know where, when or how to present it. The role is the purpose of a wl_surface. Examples of roles are a cursor for a pointer (as set by wl_pointer.set_cursor), a drag icon (wl_data_device.start_drag), a sub-surface (wl_subcompositor.get_subsurface), and a window as defined by a shell protocol (e.g. wl_shell.get_shell_surface).
A surface can have only one role at a time. Initially a wl_surface does not have a role. Once a wl_surface is given a role, it is set permanently for the whole lifetime of the wl_surface object. Giving the current role again is allowed, unless explicitly forbidden by the relevant interface specification.
Surface roles are given by requests in other interfaces such as wl_pointer.set_cursor. The request should explicitly mention that this request gives a role to a wl_surface. Often, this request also creates a new protocol object that represents the role and adds additional functionality to wl_surface. When a client wants to destroy a wl_surface, they must destroy this role object before the wl_surface, otherwise a defunct_role_object error is sent.
Destroying the role object does not remove the role from the wl_surface, but it may stop the wl_surface from "playing the role". For instance, if a wl_subsurface object is destroyed, the wl_surface it was created for will be unmapped and forget its position and z-order. It is allowed to create a wl_subsurface for the same wl_surface again, but it is not allowed to use the wl_surface as a cursor (cursor is a different role than sub-surface, and role switching is not allowed).
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionvoid
enter
(WlSurfaceProxy emitter, WlOutputProxy output) surface enters an outputvoid
leave
(WlSurfaceProxy emitter, WlOutputProxy output) surface leaves an outputvoid
preferredBufferScale
(WlSurfaceProxy emitter, int factor) preferred buffer scale for the surfacevoid
preferredBufferTransform
(WlSurfaceProxy emitter, int transform) preferred buffer transform for the surface
-
Field Details
-
VERSION
static final int VERSION- See Also:
-
-
Method Details
-
enter
surface enters an outputThis is emitted whenever a surface's creation, movement, or resizing results in some part of it being within the scanout region of an output.
Note that a surface may be overlapping with zero or more outputs.
- Specified by:
enter
in interfaceWlSurfaceEvents
- Specified by:
enter
in interfaceWlSurfaceEventsV2
- Specified by:
enter
in interfaceWlSurfaceEventsV3
- Specified by:
enter
in interfaceWlSurfaceEventsV4
- Specified by:
enter
in interfaceWlSurfaceEventsV5
- Parameters:
emitter
- The protocol object that emitted the event.output
- output entered by the surface
-
leave
surface leaves an outputThis is emitted whenever a surface's creation, movement, or resizing results in it no longer having any part of it within the scanout region of an output.
Clients should not use the number of outputs the surface is on for frame throttling purposes. The surface might be hidden even if no leave event has been sent, and the compositor might expect new surface content updates even if no enter event has been sent. The frame event should be used instead.
- Specified by:
leave
in interfaceWlSurfaceEvents
- Specified by:
leave
in interfaceWlSurfaceEventsV2
- Specified by:
leave
in interfaceWlSurfaceEventsV3
- Specified by:
leave
in interfaceWlSurfaceEventsV4
- Specified by:
leave
in interfaceWlSurfaceEventsV5
- Parameters:
emitter
- The protocol object that emitted the event.output
- output left by the surface
-
preferredBufferScale
preferred buffer scale for the surfaceThis event indicates the preferred buffer scale for this surface. It is sent whenever the compositor's preference changes.
Before receiving this event the preferred buffer scale for this surface is 1.
It is intended that scaling aware clients use this event to scale their content and use wl_surface.set_buffer_scale to indicate the scale they have rendered with. This allows clients to supply a higher detail buffer.
The compositor shall emit a scale value greater than 0.
- Parameters:
emitter
- The protocol object that emitted the event.factor
- preferred scaling factor
-
preferredBufferTransform
preferred buffer transform for the surfaceThis event indicates the preferred buffer transform for this surface. It is sent whenever the compositor's preference changes.
Before receiving this event the preferred buffer transform for this surface is normal.
Applying this transformation to the surface buffer contents and using wl_surface.set_buffer_transform might allow the compositor to use the surface buffer more efficiently.
- Parameters:
emitter
- The protocol object that emitted the event.transform
- preferred transform
-