wayland: Update to 1.22.0
This commit is contained in:
parent
d3352813ea
commit
292df42c3f
|
@ -986,6 +986,14 @@ void WaylandThread::_wl_surface_on_leave(void *data, struct wl_surface *wl_surfa
|
||||||
DEBUG_LOG_WAYLAND_THREAD(vformat("Window left output %x.\n", (size_t)wl_output));
|
DEBUG_LOG_WAYLAND_THREAD(vformat("Window left output %x.\n", (size_t)wl_output));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Add support to this event.
|
||||||
|
void WaylandThread::_wl_surface_on_preferred_buffer_scale(void *data, struct wl_surface *wl_surface, int32_t factor) {
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Add support to this event.
|
||||||
|
void WaylandThread::_wl_surface_on_preferred_buffer_transform(void *data, struct wl_surface *wl_surface, uint32_t transform) {
|
||||||
|
}
|
||||||
|
|
||||||
void WaylandThread::_wl_output_on_geometry(void *data, struct wl_output *wl_output, int32_t x, int32_t y, int32_t physical_width, int32_t physical_height, int32_t subpixel, const char *make, const char *model, int32_t transform) {
|
void WaylandThread::_wl_output_on_geometry(void *data, struct wl_output *wl_output, int32_t x, int32_t y, int32_t physical_width, int32_t physical_height, int32_t subpixel, const char *make, const char *model, int32_t transform) {
|
||||||
ScreenState *ss = (ScreenState *)data;
|
ScreenState *ss = (ScreenState *)data;
|
||||||
ERR_FAIL_NULL(ss);
|
ERR_FAIL_NULL(ss);
|
||||||
|
@ -1699,6 +1707,10 @@ void WaylandThread::_wl_pointer_on_axis_discrete(void *data, struct wl_pointer *
|
||||||
void WaylandThread::_wl_pointer_on_axis_value120(void *data, struct wl_pointer *wl_pointer, uint32_t axis, int32_t value120) {
|
void WaylandThread::_wl_pointer_on_axis_value120(void *data, struct wl_pointer *wl_pointer, uint32_t axis, int32_t value120) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Add support to this event.
|
||||||
|
void WaylandThread::_wl_pointer_on_axis_relative_direction(void *data, struct wl_pointer *wl_pointer, uint32_t axis, uint32_t direction) {
|
||||||
|
}
|
||||||
|
|
||||||
void WaylandThread::_wl_keyboard_on_keymap(void *data, struct wl_keyboard *wl_keyboard, uint32_t format, int32_t fd, uint32_t size) {
|
void WaylandThread::_wl_keyboard_on_keymap(void *data, struct wl_keyboard *wl_keyboard, uint32_t format, int32_t fd, uint32_t size) {
|
||||||
ERR_FAIL_COND_MSG(format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1, "Unsupported keymap format announced from the Wayland compositor.");
|
ERR_FAIL_COND_MSG(format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1, "Unsupported keymap format announced from the Wayland compositor.");
|
||||||
|
|
||||||
|
|
|
@ -502,6 +502,8 @@ private:
|
||||||
|
|
||||||
static void _wl_surface_on_enter(void *data, struct wl_surface *wl_surface, struct wl_output *wl_output);
|
static void _wl_surface_on_enter(void *data, struct wl_surface *wl_surface, struct wl_output *wl_output);
|
||||||
static void _wl_surface_on_leave(void *data, struct wl_surface *wl_surface, struct wl_output *wl_output);
|
static void _wl_surface_on_leave(void *data, struct wl_surface *wl_surface, struct wl_output *wl_output);
|
||||||
|
static void _wl_surface_on_preferred_buffer_scale(void *data, struct wl_surface *wl_surface, int32_t factor);
|
||||||
|
static void _wl_surface_on_preferred_buffer_transform(void *data, struct wl_surface *wl_surface, uint32_t transform);
|
||||||
|
|
||||||
static void _frame_wl_callback_on_done(void *data, struct wl_callback *wl_callback, uint32_t callback_data);
|
static void _frame_wl_callback_on_done(void *data, struct wl_callback *wl_callback, uint32_t callback_data);
|
||||||
|
|
||||||
|
@ -527,6 +529,7 @@ private:
|
||||||
static void _wl_pointer_on_axis_stop(void *data, struct wl_pointer *wl_pointer, uint32_t time, uint32_t axis);
|
static void _wl_pointer_on_axis_stop(void *data, struct wl_pointer *wl_pointer, uint32_t time, uint32_t axis);
|
||||||
static void _wl_pointer_on_axis_discrete(void *data, struct wl_pointer *wl_pointer, uint32_t axis, int32_t discrete);
|
static void _wl_pointer_on_axis_discrete(void *data, struct wl_pointer *wl_pointer, uint32_t axis, int32_t discrete);
|
||||||
static void _wl_pointer_on_axis_value120(void *data, struct wl_pointer *wl_pointer, uint32_t axis, int32_t value120);
|
static void _wl_pointer_on_axis_value120(void *data, struct wl_pointer *wl_pointer, uint32_t axis, int32_t value120);
|
||||||
|
static void _wl_pointer_on_axis_relative_direction(void *data, struct wl_pointer *wl_pointer, uint32_t axis, uint32_t direction);
|
||||||
|
|
||||||
static void _wl_keyboard_on_keymap(void *data, struct wl_keyboard *wl_keyboard, uint32_t format, int32_t fd, uint32_t size);
|
static void _wl_keyboard_on_keymap(void *data, struct wl_keyboard *wl_keyboard, uint32_t format, int32_t fd, uint32_t size);
|
||||||
static void _wl_keyboard_on_enter(void *data, struct wl_keyboard *wl_keyboard, uint32_t serial, struct wl_surface *surface, struct wl_array *keys);
|
static void _wl_keyboard_on_enter(void *data, struct wl_keyboard *wl_keyboard, uint32_t serial, struct wl_surface *surface, struct wl_array *keys);
|
||||||
|
@ -619,6 +622,8 @@ private:
|
||||||
static constexpr struct wl_surface_listener wl_surface_listener = {
|
static constexpr struct wl_surface_listener wl_surface_listener = {
|
||||||
.enter = _wl_surface_on_enter,
|
.enter = _wl_surface_on_enter,
|
||||||
.leave = _wl_surface_on_leave,
|
.leave = _wl_surface_on_leave,
|
||||||
|
.preferred_buffer_scale = _wl_surface_on_preferred_buffer_scale,
|
||||||
|
.preferred_buffer_transform = _wl_surface_on_preferred_buffer_transform,
|
||||||
};
|
};
|
||||||
|
|
||||||
static constexpr struct wl_callback_listener frame_wl_callback_listener {
|
static constexpr struct wl_callback_listener frame_wl_callback_listener {
|
||||||
|
@ -654,6 +659,7 @@ private:
|
||||||
.axis_stop = _wl_pointer_on_axis_stop,
|
.axis_stop = _wl_pointer_on_axis_stop,
|
||||||
.axis_discrete = _wl_pointer_on_axis_discrete,
|
.axis_discrete = _wl_pointer_on_axis_discrete,
|
||||||
.axis_value120 = _wl_pointer_on_axis_value120,
|
.axis_value120 = _wl_pointer_on_axis_value120,
|
||||||
|
.axis_relative_direction = _wl_pointer_on_axis_relative_direction,
|
||||||
};
|
};
|
||||||
|
|
||||||
static constexpr struct wl_keyboard_listener wl_keyboard_listener = {
|
static constexpr struct wl_keyboard_listener wl_keyboard_listener = {
|
||||||
|
|
|
@ -934,7 +934,7 @@ Patches in the `patches` directory should be re-applied after updates.
|
||||||
## wayland
|
## wayland
|
||||||
|
|
||||||
- Upstream: https://gitlab.freedesktop.org/wayland/wayland
|
- Upstream: https://gitlab.freedesktop.org/wayland/wayland
|
||||||
- Version: 1.21.0 (8135e856ebd79872f886466e9cee39affb7d9ee8, 2022)
|
- Version: 1.22.0 (b2649cb3ee6bd70828a17e50beb16591e6066288, 2023)
|
||||||
- License: MIT
|
- License: MIT
|
||||||
|
|
||||||
Files extracted from upstream source:
|
Files extracted from upstream source:
|
||||||
|
|
|
@ -177,6 +177,9 @@
|
||||||
<description summary="callback object">
|
<description summary="callback object">
|
||||||
Clients can handle the 'done' event to get notified when
|
Clients can handle the 'done' event to get notified when
|
||||||
the related request is done.
|
the related request is done.
|
||||||
|
|
||||||
|
Note, because wl_callback objects are created from multiple independent
|
||||||
|
factory interfaces, the wl_callback interface is frozen at version 1.
|
||||||
</description>
|
</description>
|
||||||
|
|
||||||
<event name="done" type="destructor">
|
<event name="done" type="destructor">
|
||||||
|
@ -187,7 +190,7 @@
|
||||||
</event>
|
</event>
|
||||||
</interface>
|
</interface>
|
||||||
|
|
||||||
<interface name="wl_compositor" version="5">
|
<interface name="wl_compositor" version="6">
|
||||||
<description summary="the compositor singleton">
|
<description summary="the compositor singleton">
|
||||||
A compositor. This object is a singleton global. The
|
A compositor. This object is a singleton global. The
|
||||||
compositor is in charge of combining the contents of multiple
|
compositor is in charge of combining the contents of multiple
|
||||||
|
@ -453,6 +456,9 @@
|
||||||
If the buffer uses a format that has an alpha channel, the alpha channel
|
If the buffer uses a format that has an alpha channel, the alpha channel
|
||||||
is assumed to be premultiplied in the color channels unless otherwise
|
is assumed to be premultiplied in the color channels unless otherwise
|
||||||
specified.
|
specified.
|
||||||
|
|
||||||
|
Note, because wl_buffer objects are created from multiple independent
|
||||||
|
factory interfaces, the wl_buffer interface is frozen at version 1.
|
||||||
</description>
|
</description>
|
||||||
|
|
||||||
<request name="destroy" type="destructor">
|
<request name="destroy" type="destructor">
|
||||||
|
@ -624,8 +630,9 @@
|
||||||
<event name="source_actions" since="3">
|
<event name="source_actions" since="3">
|
||||||
<description summary="notify the source-side available actions">
|
<description summary="notify the source-side available actions">
|
||||||
This event indicates the actions offered by the data source. It
|
This event indicates the actions offered by the data source. It
|
||||||
will be sent right after wl_data_device.enter, or anytime the source
|
will be sent immediately after creating the wl_data_offer object,
|
||||||
side changes its offered actions through wl_data_source.set_actions.
|
or anytime the source side changes its offered actions through
|
||||||
|
wl_data_source.set_actions.
|
||||||
</description>
|
</description>
|
||||||
<arg name="source_actions" type="uint" summary="actions offered by the data source"
|
<arg name="source_actions" type="uint" summary="actions offered by the data source"
|
||||||
enum="wl_data_device_manager.dnd_action"/>
|
enum="wl_data_device_manager.dnd_action"/>
|
||||||
|
@ -867,11 +874,8 @@
|
||||||
a drag-and-drop icon. If the icon surface already has another role,
|
a drag-and-drop icon. If the icon surface already has another role,
|
||||||
it raises a protocol error.
|
it raises a protocol error.
|
||||||
|
|
||||||
The current and pending input regions of the icon wl_surface are
|
The input region is ignored for wl_surfaces with the role of a
|
||||||
cleared, and wl_surface.set_input_region is ignored until the
|
drag-and-drop icon.
|
||||||
wl_surface is no longer used as the icon surface. When the use
|
|
||||||
as an icon ends, the current and pending input regions become
|
|
||||||
undefined, and the wl_surface is unmapped.
|
|
||||||
</description>
|
</description>
|
||||||
<arg name="source" type="object" interface="wl_data_source" allow-null="true" summary="data source for the eventual transfer"/>
|
<arg name="source" type="object" interface="wl_data_source" allow-null="true" summary="data source for the eventual transfer"/>
|
||||||
<arg name="origin" type="object" interface="wl_surface" summary="surface where the drag originates"/>
|
<arg name="origin" type="object" interface="wl_surface" summary="surface where the drag originates"/>
|
||||||
|
@ -1352,7 +1356,7 @@
|
||||||
</event>
|
</event>
|
||||||
</interface>
|
</interface>
|
||||||
|
|
||||||
<interface name="wl_surface" version="5">
|
<interface name="wl_surface" version="6">
|
||||||
<description summary="an onscreen surface">
|
<description summary="an onscreen surface">
|
||||||
A surface is a rectangular area that may be displayed on zero
|
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
|
or more outputs, and shown any number of times at the compositor's
|
||||||
|
@ -1384,8 +1388,9 @@
|
||||||
that this request gives a role to a wl_surface. Often, this
|
that this request gives a role to a wl_surface. Often, this
|
||||||
request also creates a new protocol object that represents the
|
request also creates a new protocol object that represents the
|
||||||
role and adds additional functionality to wl_surface. When a
|
role and adds additional functionality to wl_surface. When a
|
||||||
client wants to destroy a wl_surface, they must destroy this 'role
|
client wants to destroy a wl_surface, they must destroy this role
|
||||||
object' before the wl_surface.
|
object before the wl_surface, otherwise a defunct_role_object error is
|
||||||
|
sent.
|
||||||
|
|
||||||
Destroying the role object does not remove the role from the
|
Destroying the role object does not remove the role from the
|
||||||
wl_surface, but it may stop the wl_surface from "playing the role".
|
wl_surface, but it may stop the wl_surface from "playing the role".
|
||||||
|
@ -1405,6 +1410,8 @@
|
||||||
<entry name="invalid_transform" value="1" summary="buffer transform value is invalid"/>
|
<entry name="invalid_transform" value="1" summary="buffer transform value is invalid"/>
|
||||||
<entry name="invalid_size" value="2" summary="buffer size is invalid"/>
|
<entry name="invalid_size" value="2" summary="buffer size is invalid"/>
|
||||||
<entry name="invalid_offset" value="3" summary="buffer offset is invalid"/>
|
<entry name="invalid_offset" value="3" summary="buffer offset is invalid"/>
|
||||||
|
<entry name="defunct_role_object" value="4"
|
||||||
|
summary="surface was destroyed before its role object"/>
|
||||||
</enum>
|
</enum>
|
||||||
|
|
||||||
<request name="destroy" type="destructor">
|
<request name="destroy" type="destructor">
|
||||||
|
@ -1433,7 +1440,8 @@
|
||||||
|
|
||||||
When the bound wl_surface version is 5 or higher, passing any
|
When the bound wl_surface version is 5 or higher, passing any
|
||||||
non-zero x or y is a protocol violation, and will result in an
|
non-zero x or y is a protocol violation, and will result in an
|
||||||
'invalid_offset' error being raised. To achieve equivalent semantics,
|
'invalid_offset' error being raised. The x and y arguments are ignored
|
||||||
|
and do not change the pending state. To achieve equivalent semantics,
|
||||||
use wl_surface.offset.
|
use wl_surface.offset.
|
||||||
|
|
||||||
Surface contents are double-buffered state, see wl_surface.commit.
|
Surface contents are double-buffered state, see wl_surface.commit.
|
||||||
|
@ -1786,9 +1794,37 @@
|
||||||
<arg name="x" type="int" summary="surface-local x coordinate"/>
|
<arg name="x" type="int" summary="surface-local x coordinate"/>
|
||||||
<arg name="y" type="int" summary="surface-local y coordinate"/>
|
<arg name="y" type="int" summary="surface-local y coordinate"/>
|
||||||
</request>
|
</request>
|
||||||
|
|
||||||
|
<!-- Version 6 additions -->
|
||||||
|
|
||||||
|
<event name="preferred_buffer_scale" since="6">
|
||||||
|
<description summary="preferred buffer scale for the surface">
|
||||||
|
This event indicates the preferred buffer scale for this surface. It is
|
||||||
|
sent whenever the compositor's preference changes.
|
||||||
|
|
||||||
|
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.
|
||||||
|
</description>
|
||||||
|
<arg name="factor" type="int" summary="preferred scaling factor"/>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<event name="preferred_buffer_transform" since="6">
|
||||||
|
<description summary="preferred buffer transform for the surface">
|
||||||
|
This event indicates the preferred buffer transform for this surface.
|
||||||
|
It is sent whenever the compositor's preference changes.
|
||||||
|
|
||||||
|
It is intended that transform aware clients use this event to apply the
|
||||||
|
transform to their content and use wl_surface.set_buffer_transform to
|
||||||
|
indicate the transform they have rendered with.
|
||||||
|
</description>
|
||||||
|
<arg name="transform" type="uint" enum="wl_output.transform"
|
||||||
|
summary="preferred transform"/>
|
||||||
|
</event>
|
||||||
</interface>
|
</interface>
|
||||||
|
|
||||||
<interface name="wl_seat" version="8">
|
<interface name="wl_seat" version="9">
|
||||||
<description summary="group of input devices">
|
<description summary="group of input devices">
|
||||||
A seat is a group of keyboards, pointer and touch devices. This
|
A seat is a group of keyboards, pointer and touch devices. This
|
||||||
object is published as a global during start up, or when such a
|
object is published as a global during start up, or when such a
|
||||||
|
@ -1921,7 +1957,7 @@
|
||||||
|
|
||||||
</interface>
|
</interface>
|
||||||
|
|
||||||
<interface name="wl_pointer" version="8">
|
<interface name="wl_pointer" version="9">
|
||||||
<description summary="pointer input device">
|
<description summary="pointer input device">
|
||||||
The wl_pointer interface represents one or more input devices,
|
The wl_pointer interface represents one or more input devices,
|
||||||
such as mice, which control the pointer location and pointer_focus
|
such as mice, which control the pointer location and pointer_focus
|
||||||
|
@ -1965,11 +2001,9 @@
|
||||||
pointer surface to this request with new values for hotspot_x
|
pointer surface to this request with new values for hotspot_x
|
||||||
and hotspot_y.
|
and hotspot_y.
|
||||||
|
|
||||||
The current and pending input regions of the wl_surface are
|
The input region is ignored for wl_surfaces with the role of
|
||||||
cleared, and wl_surface.set_input_region is ignored until the
|
a cursor. When the use as a cursor ends, the wl_surface is
|
||||||
wl_surface is no longer used as the cursor. When the use as a
|
unmapped.
|
||||||
cursor ends, the current and pending input regions become
|
|
||||||
undefined, and the wl_surface is unmapped.
|
|
||||||
|
|
||||||
The serial parameter must match the latest wl_pointer.enter
|
The serial parameter must match the latest wl_pointer.enter
|
||||||
serial number sent to the client. Otherwise the request will be
|
serial number sent to the client. Otherwise the request will be
|
||||||
|
@ -2278,9 +2312,65 @@
|
||||||
<arg name="axis" type="uint" enum="axis" summary="axis type"/>
|
<arg name="axis" type="uint" enum="axis" summary="axis type"/>
|
||||||
<arg name="value120" type="int" summary="scroll distance as fraction of 120"/>
|
<arg name="value120" type="int" summary="scroll distance as fraction of 120"/>
|
||||||
</event>
|
</event>
|
||||||
|
|
||||||
|
<!-- Version 9 additions -->
|
||||||
|
|
||||||
|
<enum name="axis_relative_direction">
|
||||||
|
<description summary="axis relative direction">
|
||||||
|
This specifies the direction of the physical motion that caused a
|
||||||
|
wl_pointer.axis event, relative to the wl_pointer.axis direction.
|
||||||
|
</description>
|
||||||
|
<entry name="identical" value="0"
|
||||||
|
summary="physical motion matches axis direction"/>
|
||||||
|
<entry name="inverted" value="1"
|
||||||
|
summary="physical motion is the inverse of the axis direction"/>
|
||||||
|
</enum>
|
||||||
|
|
||||||
|
<event name="axis_relative_direction" since="9">
|
||||||
|
<description summary="axis relative physical direction event">
|
||||||
|
Relative directional information of the entity causing the axis
|
||||||
|
motion.
|
||||||
|
|
||||||
|
For a wl_pointer.axis event, the wl_pointer.axis_relative_direction
|
||||||
|
event specifies the movement direction of the entity causing the
|
||||||
|
wl_pointer.axis event. For example:
|
||||||
|
- if a user's fingers on a touchpad move down and this
|
||||||
|
causes a wl_pointer.axis vertical_scroll down event, the physical
|
||||||
|
direction is 'identical'
|
||||||
|
- if a user's fingers on a touchpad move down and this causes a
|
||||||
|
wl_pointer.axis vertical_scroll up scroll up event ('natural
|
||||||
|
scrolling'), the physical direction is 'inverted'.
|
||||||
|
|
||||||
|
A client may use this information to adjust scroll motion of
|
||||||
|
components. Specifically, enabling natural scrolling causes the
|
||||||
|
content to change direction compared to traditional scrolling.
|
||||||
|
Some widgets like volume control sliders should usually match the
|
||||||
|
physical direction regardless of whether natural scrolling is
|
||||||
|
active. This event enables clients to match the scroll direction of
|
||||||
|
a widget to the physical direction.
|
||||||
|
|
||||||
|
This event does not occur on its own, it is coupled with a
|
||||||
|
wl_pointer.axis event that represents this axis value.
|
||||||
|
The protocol guarantees that each axis_relative_direction event is
|
||||||
|
always followed by exactly one axis event with the same
|
||||||
|
axis number within the same wl_pointer.frame. Note that the protocol
|
||||||
|
allows for other events to occur between the axis_relative_direction
|
||||||
|
and its coupled axis event.
|
||||||
|
|
||||||
|
The axis number is identical to the axis number in the associated
|
||||||
|
axis event.
|
||||||
|
|
||||||
|
The order of wl_pointer.axis_relative_direction,
|
||||||
|
wl_pointer.axis_discrete and wl_pointer.axis_source is not
|
||||||
|
guaranteed.
|
||||||
|
</description>
|
||||||
|
<arg name="axis" type="uint" enum="axis" summary="axis type"/>
|
||||||
|
<arg name="direction" type="uint" enum="axis_relative_direction"
|
||||||
|
summary="physical direction relative to axis motion"/>
|
||||||
|
</event>
|
||||||
</interface>
|
</interface>
|
||||||
|
|
||||||
<interface name="wl_keyboard" version="8">
|
<interface name="wl_keyboard" version="9">
|
||||||
<description summary="keyboard input device">
|
<description summary="keyboard input device">
|
||||||
The wl_keyboard interface represents one or more keyboards
|
The wl_keyboard interface represents one or more keyboards
|
||||||
associated with a seat.
|
associated with a seat.
|
||||||
|
@ -2407,7 +2497,7 @@
|
||||||
</event>
|
</event>
|
||||||
</interface>
|
</interface>
|
||||||
|
|
||||||
<interface name="wl_touch" version="8">
|
<interface name="wl_touch" version="9">
|
||||||
<description summary="touchscreen input device">
|
<description summary="touchscreen input device">
|
||||||
The wl_touch interface represents a touchscreen
|
The wl_touch interface represents a touchscreen
|
||||||
associated with a seat.
|
associated with a seat.
|
||||||
|
@ -2861,6 +2951,8 @@
|
||||||
<enum name="error">
|
<enum name="error">
|
||||||
<entry name="bad_surface" value="0"
|
<entry name="bad_surface" value="0"
|
||||||
summary="the to-be sub-surface is invalid"/>
|
summary="the to-be sub-surface is invalid"/>
|
||||||
|
<entry name="bad_parent" value="1"
|
||||||
|
summary="the to-be sub-surface parent is invalid"/>
|
||||||
</enum>
|
</enum>
|
||||||
|
|
||||||
<request name="get_subsurface">
|
<request name="get_subsurface">
|
||||||
|
@ -2870,14 +2962,18 @@
|
||||||
plain wl_surface into a sub-surface.
|
plain wl_surface into a sub-surface.
|
||||||
|
|
||||||
The to-be sub-surface must not already have another role, and it
|
The to-be sub-surface must not already have another role, and it
|
||||||
must not have an existing wl_subsurface object. Otherwise a protocol
|
must not have an existing wl_subsurface object. Otherwise the
|
||||||
error is raised.
|
bad_surface protocol error is raised.
|
||||||
|
|
||||||
Adding sub-surfaces to a parent is a double-buffered operation on the
|
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
|
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
|
becomes visible on the next time the state of the parent surface is
|
||||||
applied.
|
applied.
|
||||||
|
|
||||||
|
The parent surface must not be one of the child surface's descendants,
|
||||||
|
and the parent must be different from the child surface, otherwise the
|
||||||
|
bad_parent protocol error is raised.
|
||||||
|
|
||||||
This request modifies the behaviour of wl_surface.commit request on
|
This request modifies the behaviour of wl_surface.commit request on
|
||||||
the sub-surface, see the documentation on wl_subsurface interface.
|
the sub-surface, see the documentation on wl_subsurface interface.
|
||||||
</description>
|
</description>
|
||||||
|
@ -2932,12 +3028,10 @@
|
||||||
synchronized mode, and then assume that all its child and grand-child
|
synchronized mode, and then assume that all its child and grand-child
|
||||||
sub-surfaces are synchronized, too, without explicitly setting them.
|
sub-surfaces are synchronized, too, without explicitly setting them.
|
||||||
|
|
||||||
If the wl_surface associated with the wl_subsurface is destroyed, the
|
Destroying a sub-surface takes effect immediately. If you need to
|
||||||
wl_subsurface object becomes inert. Note, that destroying either object
|
synchronize the removal of a sub-surface to the parent surface update,
|
||||||
takes effect immediately. If you need to synchronize the removal
|
unmap the sub-surface first by attaching a NULL wl_buffer, update parent,
|
||||||
of a sub-surface to the parent surface update, unmap the sub-surface
|
and then destroy the sub-surface.
|
||||||
first by attaching a NULL wl_buffer, update parent, and then destroy
|
|
||||||
the sub-surface.
|
|
||||||
|
|
||||||
If the parent wl_surface object is destroyed, the sub-surface is
|
If the parent wl_surface object is destroyed, the sub-surface is
|
||||||
unmapped.
|
unmapped.
|
||||||
|
@ -2948,8 +3042,7 @@
|
||||||
The sub-surface interface is removed from the wl_surface object
|
The sub-surface interface is removed from the wl_surface object
|
||||||
that was turned into a sub-surface with a
|
that was turned into a sub-surface with a
|
||||||
wl_subcompositor.get_subsurface request. The wl_surface's association
|
wl_subcompositor.get_subsurface request. The wl_surface's association
|
||||||
to the parent is deleted, and the wl_surface loses its role as
|
to the parent is deleted. The wl_surface is unmapped immediately.
|
||||||
a sub-surface. The wl_surface is unmapped immediately.
|
|
||||||
</description>
|
</description>
|
||||||
</request>
|
</request>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue