Update the protocol to 1.4 and raise the required libwayland version
Wayland 1.4 introduces wl_subsurface which is quite an important addition. Change-Id: I48375f60adce556c9989872319f4d073e4a7b13b Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
This commit is contained in:
parent
0dc189a432
commit
ce491e5dd0
336
src/3rdparty/wayland/protocols/wayland.xml
vendored
336
src/3rdparty/wayland/protocols/wayland.xml
vendored
@ -4,6 +4,7 @@
|
|||||||
<copyright>
|
<copyright>
|
||||||
Copyright © 2008-2011 Kristian Høgsberg
|
Copyright © 2008-2011 Kristian Høgsberg
|
||||||
Copyright © 2010-2011 Intel Corporation
|
Copyright © 2010-2011 Intel Corporation
|
||||||
|
Copyright © 2012-2013 Collabora, Ltd.
|
||||||
|
|
||||||
Permission to use, copy, modify, distribute, and sell this
|
Permission to use, copy, modify, distribute, and sell this
|
||||||
software and its documentation for any purpose is hereby granted
|
software and its documentation for any purpose is hereby granted
|
||||||
@ -38,12 +39,14 @@
|
|||||||
The sync request asks the server to emit the 'done' event
|
The sync request asks the server to emit the 'done' event
|
||||||
on the returned wl_callback object. Since requests are
|
on the returned wl_callback object. Since requests are
|
||||||
handled in-order and events are delivered in-order, this can
|
handled in-order and events are delivered in-order, this can
|
||||||
used as a barrier to ensure all previous requests and the
|
be used as a barrier to ensure all previous requests and the
|
||||||
resulting events have been handled.
|
resulting events have been handled.
|
||||||
|
|
||||||
The object returned by this request will be destroyed by the
|
The object returned by this request will be destroyed by the
|
||||||
compositor after the callback is fired and as such the client must not
|
compositor after the callback is fired and as such the client must not
|
||||||
attempt to use it after that point.
|
attempt to use it after that point.
|
||||||
|
|
||||||
|
The callback_data passed in the callback is the event serial.
|
||||||
</description>
|
</description>
|
||||||
<arg name="callback" type="new_id" interface="wl_callback"/>
|
<arg name="callback" type="new_id" interface="wl_callback"/>
|
||||||
</request>
|
</request>
|
||||||
@ -54,7 +57,7 @@
|
|||||||
to list and bind the global objects available from the
|
to list and bind the global objects available from the
|
||||||
compositor.
|
compositor.
|
||||||
</description>
|
</description>
|
||||||
<arg name="callback" type="new_id" interface="wl_registry"/>
|
<arg name="registry" type="new_id" interface="wl_registry"/>
|
||||||
</request>
|
</request>
|
||||||
|
|
||||||
<event name="error">
|
<event name="error">
|
||||||
@ -169,7 +172,7 @@
|
|||||||
<description summary="done event">
|
<description summary="done event">
|
||||||
Notify the client when the related request is done.
|
Notify the client when the related request is done.
|
||||||
</description>
|
</description>
|
||||||
<arg name="serial" type="uint" summary="serial of the event"/>
|
<arg name="callback_data" type="uint" summary="request-specific data for the wl_callback"/>
|
||||||
</event>
|
</event>
|
||||||
</interface>
|
</interface>
|
||||||
|
|
||||||
@ -274,10 +277,73 @@
|
|||||||
|
|
||||||
<enum name="format">
|
<enum name="format">
|
||||||
<description summary="pixel formats">
|
<description summary="pixel formats">
|
||||||
This describes the memory layout of an individual pixel.
|
This describes the memory layout of an individual pixel.
|
||||||
|
|
||||||
|
All renderers should support argb8888 and xrgb8888 but any other
|
||||||
|
formats are optional and may not be supported by the particular
|
||||||
|
renderer in use.
|
||||||
</description>
|
</description>
|
||||||
<entry name="argb8888" value="0" summary="32-bit ARGB format"/>
|
<entry name="argb8888" value="0" summary="32-bit ARGB format"/>
|
||||||
<entry name="xrgb8888" value="1" summary="32-bit RGB format"/>
|
<entry name="xrgb8888" value="1" summary="32-bit RGB format"/>
|
||||||
|
<!-- The drm format codes match the #defines in drm_fourcc.h.
|
||||||
|
The formats actually supported by the compositor will be
|
||||||
|
reported by the format event. -->
|
||||||
|
<entry name="c8" value="0x20203843"/>
|
||||||
|
<entry name="rgb332" value="0x38424752"/>
|
||||||
|
<entry name="bgr233" value="0x38524742"/>
|
||||||
|
<entry name="xrgb4444" value="0x32315258"/>
|
||||||
|
<entry name="xbgr4444" value="0x32314258"/>
|
||||||
|
<entry name="rgbx4444" value="0x32315852"/>
|
||||||
|
<entry name="bgrx4444" value="0x32315842"/>
|
||||||
|
<entry name="argb4444" value="0x32315241"/>
|
||||||
|
<entry name="abgr4444" value="0x32314241"/>
|
||||||
|
<entry name="rgba4444" value="0x32314152"/>
|
||||||
|
<entry name="bgra4444" value="0x32314142"/>
|
||||||
|
<entry name="xrgb1555" value="0x35315258"/>
|
||||||
|
<entry name="xbgr1555" value="0x35314258"/>
|
||||||
|
<entry name="rgbx5551" value="0x35315852"/>
|
||||||
|
<entry name="bgrx5551" value="0x35315842"/>
|
||||||
|
<entry name="argb1555" value="0x35315241"/>
|
||||||
|
<entry name="abgr1555" value="0x35314241"/>
|
||||||
|
<entry name="rgba5551" value="0x35314152"/>
|
||||||
|
<entry name="bgra5551" value="0x35314142"/>
|
||||||
|
<entry name="rgb565" value="0x36314752"/>
|
||||||
|
<entry name="bgr565" value="0x36314742"/>
|
||||||
|
<entry name="rgb888" value="0x34324752"/>
|
||||||
|
<entry name="bgr888" value="0x34324742"/>
|
||||||
|
<entry name="xbgr8888" value="0x34324258"/>
|
||||||
|
<entry name="rgbx8888" value="0x34325852"/>
|
||||||
|
<entry name="bgrx8888" value="0x34325842"/>
|
||||||
|
<entry name="abgr8888" value="0x34324241"/>
|
||||||
|
<entry name="rgba8888" value="0x34324152"/>
|
||||||
|
<entry name="bgra8888" value="0x34324142"/>
|
||||||
|
<entry name="xrgb2101010" value="0x30335258"/>
|
||||||
|
<entry name="xbgr2101010" value="0x30334258"/>
|
||||||
|
<entry name="rgbx1010102" value="0x30335852"/>
|
||||||
|
<entry name="bgrx1010102" value="0x30335842"/>
|
||||||
|
<entry name="argb2101010" value="0x30335241"/>
|
||||||
|
<entry name="abgr2101010" value="0x30334241"/>
|
||||||
|
<entry name="rgba1010102" value="0x30334152"/>
|
||||||
|
<entry name="bgra1010102" value="0x30334142"/>
|
||||||
|
<entry name="yuyv" value="0x56595559"/>
|
||||||
|
<entry name="yvyu" value="0x55595659"/>
|
||||||
|
<entry name="uyvy" value="0x59565955"/>
|
||||||
|
<entry name="vyuy" value="0x59555956"/>
|
||||||
|
<entry name="ayuv" value="0x56555941"/>
|
||||||
|
<entry name="nv12" value="0x3231564e"/>
|
||||||
|
<entry name="nv21" value="0x3132564e"/>
|
||||||
|
<entry name="nv16" value="0x3631564e"/>
|
||||||
|
<entry name="nv61" value="0x3136564e"/>
|
||||||
|
<entry name="yuv410" value="0x39565559"/>
|
||||||
|
<entry name="yvu410" value="0x39555659"/>
|
||||||
|
<entry name="yuv411" value="0x31315559"/>
|
||||||
|
<entry name="yvu411" value="0x31315659"/>
|
||||||
|
<entry name="yuv420" value="0x32315559"/>
|
||||||
|
<entry name="yvu420" value="0x32315659"/>
|
||||||
|
<entry name="yuv422" value="0x36315559"/>
|
||||||
|
<entry name="yvu422" value="0x36315659"/>
|
||||||
|
<entry name="yuv444" value="0x34325559"/>
|
||||||
|
<entry name="yvu444" value="0x34325659"/>
|
||||||
</enum>
|
</enum>
|
||||||
|
|
||||||
<request name="create_pool">
|
<request name="create_pool">
|
||||||
@ -521,7 +587,7 @@
|
|||||||
<description summary="initiate drag-and-drop session">
|
<description summary="initiate drag-and-drop session">
|
||||||
This event is sent when an active drag-and-drop pointer enters
|
This event is sent when an active drag-and-drop pointer enters
|
||||||
a surface owned by the client. The position of the pointer at
|
a surface owned by the client. The position of the pointer at
|
||||||
enter time is provided by the x an y arguments, in surface
|
enter time is provided by the x and y arguments, in surface
|
||||||
local coordinates.
|
local coordinates.
|
||||||
</description>
|
</description>
|
||||||
|
|
||||||
@ -544,7 +610,7 @@
|
|||||||
<description summary="drag-and-drop session motion">
|
<description summary="drag-and-drop session motion">
|
||||||
This event is sent when the drag-and-drop pointer moves within
|
This event is sent when the drag-and-drop pointer moves within
|
||||||
the currently focused surface. The new position of the pointer
|
the currently focused surface. The new position of the pointer
|
||||||
is provided by the x an y arguments, in surface local
|
is provided by the x and y arguments, in surface local
|
||||||
coordinates.
|
coordinates.
|
||||||
</description>
|
</description>
|
||||||
<arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
|
<arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
|
||||||
@ -577,7 +643,7 @@
|
|||||||
|
|
||||||
<interface name="wl_data_device_manager" version="1">
|
<interface name="wl_data_device_manager" version="1">
|
||||||
<description summary="data transfer interface">
|
<description summary="data transfer interface">
|
||||||
The wl_data_device_manager is a a singleton global object that
|
The wl_data_device_manager is a singleton global object that
|
||||||
provides access to inter-client data transfer mechanisms such as
|
provides access to inter-client data transfer mechanisms such as
|
||||||
copy-and-paste and drag-and-drop. These mechanisms are tied to
|
copy-and-paste and drag-and-drop. These mechanisms are tied to
|
||||||
a wl_seat and this interface lets a client get a wl_data_device
|
a wl_seat and this interface lets a client get a wl_data_device
|
||||||
@ -846,9 +912,9 @@
|
|||||||
Set a class for the surface.
|
Set a class for the surface.
|
||||||
|
|
||||||
The surface class identifies the general class of applications
|
The surface class identifies the general class of applications
|
||||||
to which the surface belongs. A common convention is to use
|
to which the surface belongs. A common convention is to use the
|
||||||
the file name (full path if non-standard location) of the
|
file name (or the full path if it is a non-standard location) of
|
||||||
applications .desktop file as the class.
|
the application's .desktop file as the class.
|
||||||
</description>
|
</description>
|
||||||
<arg name="class_" type="string"/>
|
<arg name="class_" type="string"/>
|
||||||
</request>
|
</request>
|
||||||
@ -890,7 +956,7 @@
|
|||||||
<event name="popup_done">
|
<event name="popup_done">
|
||||||
<description summary="popup interaction is done">
|
<description summary="popup interaction is done">
|
||||||
The popup_done event is sent out when a popup grab is broken,
|
The popup_done event is sent out when a popup grab is broken,
|
||||||
that is, when the users clicks a surface that doesn't belong
|
that is, when the user clicks a surface that doesn't belong
|
||||||
to the client owning the popup surface.
|
to the client owning the popup surface.
|
||||||
</description>
|
</description>
|
||||||
</event>
|
</event>
|
||||||
@ -952,10 +1018,10 @@
|
|||||||
|
|
||||||
Destroying the wl_buffer after wl_buffer.release does not change
|
Destroying the wl_buffer after wl_buffer.release does not change
|
||||||
the surface contents. However, if the client destroys the
|
the surface contents. However, if the client destroys the
|
||||||
wl_buffer before receiving wl_buffer.release, the surface
|
wl_buffer before receiving the wl_buffer.release event, the surface
|
||||||
contents become undefined immediately.
|
contents become undefined immediately.
|
||||||
|
|
||||||
Only if wl_surface.attach is sent with a NULL wl_buffer, the
|
If wl_surface.attach is sent with a NULL wl_buffer, the
|
||||||
following wl_surface.commit will remove the surface content.
|
following wl_surface.commit will remove the surface content.
|
||||||
</description>
|
</description>
|
||||||
|
|
||||||
@ -1012,6 +1078,9 @@
|
|||||||
The object returned by this request will be destroyed by the
|
The object returned by this request will be destroyed by the
|
||||||
compositor after the callback is fired and as such the client must not
|
compositor after the callback is fired and as such the client must not
|
||||||
attempt to use it after that point.
|
attempt to use it after that point.
|
||||||
|
|
||||||
|
The callback_data passed in the callback is the current time, in
|
||||||
|
milliseconds.
|
||||||
</description>
|
</description>
|
||||||
|
|
||||||
<arg name="callback" type="new_id" interface="wl_callback"/>
|
<arg name="callback" type="new_id" interface="wl_callback"/>
|
||||||
@ -1172,7 +1241,7 @@
|
|||||||
</request>
|
</request>
|
||||||
</interface>
|
</interface>
|
||||||
|
|
||||||
<interface name="wl_seat" version="2">
|
<interface name="wl_seat" version="3">
|
||||||
<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
|
||||||
@ -1245,7 +1314,7 @@
|
|||||||
|
|
||||||
</interface>
|
</interface>
|
||||||
|
|
||||||
<interface name="wl_pointer" version="1">
|
<interface name="wl_pointer" version="3">
|
||||||
<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
|
||||||
@ -1294,6 +1363,10 @@
|
|||||||
<arg name="hotspot_y" type="int" summary="y coordinate in surface-relative coordinates"/>
|
<arg name="hotspot_y" type="int" summary="y coordinate in surface-relative coordinates"/>
|
||||||
</request>
|
</request>
|
||||||
|
|
||||||
|
<request name="release" type="destructor" since="3">
|
||||||
|
<description summary="release the pointer object"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
<event name="enter">
|
<event name="enter">
|
||||||
<description summary="enter event">
|
<description summary="enter event">
|
||||||
Notification that this seat's pointer is focused on a certain
|
Notification that this seat's pointer is focused on a certain
|
||||||
@ -1393,12 +1466,16 @@
|
|||||||
</event>
|
</event>
|
||||||
</interface>
|
</interface>
|
||||||
|
|
||||||
<interface name="wl_keyboard" version="1">
|
<interface name="wl_keyboard" version="3">
|
||||||
<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.
|
||||||
</description>
|
</description>
|
||||||
|
|
||||||
|
<request name="release" type="destructor" since="3">
|
||||||
|
<description summary="release the keyboard object"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
<enum name="keymap_format">
|
<enum name="keymap_format">
|
||||||
<description summary="keyboard mapping format">
|
<description summary="keyboard mapping format">
|
||||||
This specifies the format of the keymap provided to the
|
This specifies the format of the keymap provided to the
|
||||||
@ -1476,7 +1553,7 @@
|
|||||||
</event>
|
</event>
|
||||||
</interface>
|
</interface>
|
||||||
|
|
||||||
<interface name="wl_touch" version="1">
|
<interface name="wl_touch" version="3">
|
||||||
<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.
|
||||||
@ -1488,6 +1565,10 @@
|
|||||||
contact point can be identified by the ID of the sequence.
|
contact point can be identified by the ID of the sequence.
|
||||||
</description>
|
</description>
|
||||||
|
|
||||||
|
<request name="release" type="destructor" since="3">
|
||||||
|
<description summary="release the touch object"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
<event name="down">
|
<event name="down">
|
||||||
<description summary="touch down event and beginning of a touch sequence">
|
<description summary="touch down event and beginning of a touch sequence">
|
||||||
A new touch point has appeared on the surface. This touch point is
|
A new touch point has appeared on the surface. This touch point is
|
||||||
@ -1720,4 +1801,225 @@
|
|||||||
|
|
||||||
</interface>
|
</interface>
|
||||||
|
|
||||||
|
<interface name="wl_subcompositor" version="1">
|
||||||
|
<description summary="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.
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<request name="destroy" type="destructor">
|
||||||
|
<description summary="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.
|
||||||
|
</description>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<enum name="error">
|
||||||
|
<entry name="bad_surface" value="0"
|
||||||
|
summary="the to-be sub-surface is invalid"/>
|
||||||
|
</enum>
|
||||||
|
|
||||||
|
<request name="get_subsurface">
|
||||||
|
<description summary="give a surface the role sub-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 a dedicated
|
||||||
|
purpose, like any shell surface type, cursor image, drag icon,
|
||||||
|
or sub-surface. Otherwise a protocol error is raised.
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<arg name="id" type="new_id" interface="wl_subsurface"
|
||||||
|
summary="the new subsurface object id"/>
|
||||||
|
<arg name="surface" type="object" interface="wl_surface"
|
||||||
|
summary="the surface to be turned into a sub-surface"/>
|
||||||
|
<arg name="parent" type="object" interface="wl_surface"
|
||||||
|
summary="the parent surface"/>
|
||||||
|
</request>
|
||||||
|
</interface>
|
||||||
|
|
||||||
|
<interface name="wl_subsurface" version="1">
|
||||||
|
<description summary="sub-surface interface to a wl_surface">
|
||||||
|
An additional interface to a wl_surface object, which has been
|
||||||
|
made a sub-surface. A sub-surface has one parent surface. A
|
||||||
|
sub-surface's size and position are not limited to that of the parent.
|
||||||
|
Particularly, a sub-surface is not automatically clipped to its
|
||||||
|
parent's area.
|
||||||
|
|
||||||
|
A sub-surface becomes mapped, when a non-NULL wl_buffer is applied
|
||||||
|
and the parent surface is mapped. The order of which one happens
|
||||||
|
first is irrelevant. A sub-surface is hidden if the parent becomes
|
||||||
|
hidden, or if a NULL wl_buffer is applied. These rules apply
|
||||||
|
recursively through the tree of surfaces.
|
||||||
|
|
||||||
|
The behaviour of wl_surface.commit request on a sub-surface
|
||||||
|
depends on the sub-surface's mode. The possible modes are
|
||||||
|
synchronized and desynchronized, see methods
|
||||||
|
wl_subsurface.set_sync and wl_subsurface.set_desync. Synchronized
|
||||||
|
mode caches the wl_surface state to be applied when the parent's
|
||||||
|
state gets applied, and desynchronized mode applies the pending
|
||||||
|
wl_surface state directly. A sub-surface is initially in the
|
||||||
|
synchronized mode.
|
||||||
|
|
||||||
|
Sub-surfaces have also other kind of state, which is managed by
|
||||||
|
wl_subsurface requests, as opposed to wl_surface requests. This
|
||||||
|
state includes the sub-surface position relative to the parent
|
||||||
|
surface (wl_subsurface.set_position), and the stacking order of
|
||||||
|
the parent and its sub-surfaces (wl_subsurface.place_above and
|
||||||
|
.place_below). This state is applied when the parent surface's
|
||||||
|
wl_surface state is applied, regardless of the sub-surface's mode.
|
||||||
|
As the exception, set_sync and set_desync are effective immediately.
|
||||||
|
|
||||||
|
The main surface can be thought to be always in desynchronized mode,
|
||||||
|
since it does not have a parent in the sub-surfaces sense.
|
||||||
|
|
||||||
|
Even if a sub-surface is in desynchronized mode, it will behave as
|
||||||
|
in synchronized mode, if its parent surface behaves as in
|
||||||
|
synchronized mode. This rule is applied recursively throughout the
|
||||||
|
tree of surfaces. This means, that one can set a sub-surface into
|
||||||
|
synchronized mode, and then assume that all its child and grand-child
|
||||||
|
sub-surfaces are synchronized, too, without explicitly setting them.
|
||||||
|
|
||||||
|
If the wl_surface associated with the wl_subsurface is destroyed, the
|
||||||
|
wl_subsurface object becomes inert. Note, that destroying either object
|
||||||
|
takes effect immediately. If you need to synchronize the removal
|
||||||
|
of a sub-surface to the parent surface update, unmap 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
|
||||||
|
unmapped.
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<request name="destroy" type="destructor">
|
||||||
|
<description summary="remove sub-surface interface">
|
||||||
|
The sub-surface interface is removed from the wl_surface object
|
||||||
|
that was turned into a sub-surface with
|
||||||
|
wl_subcompositor.get_subsurface request. The wl_surface's association
|
||||||
|
to the parent is deleted, and the wl_surface loses its role as
|
||||||
|
a sub-surface. The wl_surface is unmapped.
|
||||||
|
</description>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<enum name="error">
|
||||||
|
<entry name="bad_surface" value="0"
|
||||||
|
summary="wl_surface is not a sibling or the parent"/>
|
||||||
|
</enum>
|
||||||
|
|
||||||
|
<request name="set_position">
|
||||||
|
<description summary="reposition the sub-surface">
|
||||||
|
This schedules a sub-surface position change.
|
||||||
|
The sub-surface will be moved so, that its origin (top-left
|
||||||
|
corner pixel) will be at the location x, y of the parent surface
|
||||||
|
coordinate system. The coordinates are not restricted to the parent
|
||||||
|
surface area. Negative values are allowed.
|
||||||
|
|
||||||
|
The next wl_surface.commit on the parent surface will reset
|
||||||
|
the sub-surface's position to the scheduled coordinates.
|
||||||
|
|
||||||
|
If more than one set_position request is invoked by the client before
|
||||||
|
the commit of the parent surface, the position of a new request always
|
||||||
|
replaces the scheduled position from any previous request.
|
||||||
|
|
||||||
|
The initial position is 0, 0.
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<arg name="x" type="int" summary="coordinate in the parent surface"/>
|
||||||
|
<arg name="y" type="int" summary="coordinate in the parent surface"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<request name="place_above">
|
||||||
|
<description summary="restack the sub-surface">
|
||||||
|
This sub-surface is taken from the stack, and put back just
|
||||||
|
above the reference surface, changing the z-order of the sub-surfaces.
|
||||||
|
The reference surface must be one of the sibling surfaces, or the
|
||||||
|
parent surface. Using any other surface, including this sub-surface,
|
||||||
|
will cause a protocol error.
|
||||||
|
|
||||||
|
The z-order is double-buffered. Requests are handled in order and
|
||||||
|
applied immediately to a pending state, then committed to the active
|
||||||
|
state on the next commit of the parent surface.
|
||||||
|
See wl_surface.commit and wl_subcompositor.get_subsurface.
|
||||||
|
|
||||||
|
A new sub-surface is initially added as the top-most in the stack
|
||||||
|
of its siblings and parent.
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<arg name="sibling" type="object" interface="wl_surface"
|
||||||
|
summary="the reference surface"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<request name="place_below">
|
||||||
|
<description summary="restack the sub-surface">
|
||||||
|
The sub-surface is placed just below of the reference surface.
|
||||||
|
See wl_subsurface.place_above.
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<arg name="sibling" type="object" interface="wl_surface"
|
||||||
|
summary="the reference surface"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<request name="set_sync">
|
||||||
|
<description summary="set sub-surface to synchronized mode">
|
||||||
|
Change the commit behaviour of the sub-surface to synchronized
|
||||||
|
mode, also described as the parent dependant mode.
|
||||||
|
|
||||||
|
In synchronized mode, wl_surface.commit on a sub-surface will
|
||||||
|
accumulate the committed state in a cache, but the state will
|
||||||
|
not be applied and hence will not change the compositor output.
|
||||||
|
The cached state is applied to the sub-surface immediately after
|
||||||
|
the parent surface's state is applied. This ensures atomic
|
||||||
|
updates of the parent and all its synchronized sub-surfaces.
|
||||||
|
Applying the cached state will invalidate the cache, so further
|
||||||
|
parent surface commits do not (re-)apply old state.
|
||||||
|
|
||||||
|
See wl_subsurface for the recursive effect of this mode.
|
||||||
|
</description>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<request name="set_desync">
|
||||||
|
<description summary="set sub-surface to desynchronized mode">
|
||||||
|
Change the commit behaviour of the sub-surface to desynchronized
|
||||||
|
mode, also described as independent or freely running mode.
|
||||||
|
|
||||||
|
In desynchronized mode, wl_surface.commit on a sub-surface will
|
||||||
|
apply the pending state directly, without caching, as happens
|
||||||
|
normally with a wl_surface. Calling wl_surface.commit on the
|
||||||
|
parent surface has no effect on the sub-surface's wl_surface
|
||||||
|
state. This mode allows a sub-surface to be updated on its own.
|
||||||
|
|
||||||
|
If cached state exists when wl_surface.commit is called in
|
||||||
|
desynchronized mode, the pending state is added to the cached
|
||||||
|
state, and applied as whole. This invalidates the cache.
|
||||||
|
|
||||||
|
Note: even if a sub-surface is set to desynchronized, a parent
|
||||||
|
sub-surface may override it to behave as synchronized. For details,
|
||||||
|
see wl_subsurface.
|
||||||
|
|
||||||
|
If a surface's parent surface behaves as desynchronized, then
|
||||||
|
the cached state is applied on set_desync.
|
||||||
|
</description>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
</interface>
|
||||||
|
|
||||||
</protocol>
|
</protocol>
|
||||||
|
@ -126,7 +126,10 @@ QWaylandInputDevice::Keyboard::~Keyboard()
|
|||||||
#ifndef QT_NO_WAYLAND_XKB
|
#ifndef QT_NO_WAYLAND_XKB
|
||||||
releaseKeyMap();
|
releaseKeyMap();
|
||||||
#endif
|
#endif
|
||||||
wl_keyboard_destroy(object());
|
if (mParent->mVersion >= 3)
|
||||||
|
wl_keyboard_release(object());
|
||||||
|
else
|
||||||
|
wl_keyboard_destroy(object());
|
||||||
}
|
}
|
||||||
|
|
||||||
void QWaylandInputDevice::Keyboard::stopRepeat()
|
void QWaylandInputDevice::Keyboard::stopRepeat()
|
||||||
@ -145,7 +148,10 @@ QWaylandInputDevice::Pointer::Pointer(QWaylandInputDevice *p)
|
|||||||
|
|
||||||
QWaylandInputDevice::Pointer::~Pointer()
|
QWaylandInputDevice::Pointer::~Pointer()
|
||||||
{
|
{
|
||||||
wl_pointer_destroy(object());
|
if (mParent->mVersion >= 3)
|
||||||
|
wl_pointer_release(object());
|
||||||
|
else
|
||||||
|
wl_pointer_destroy(object());
|
||||||
}
|
}
|
||||||
|
|
||||||
QWaylandInputDevice::Touch::Touch(QWaylandInputDevice *p)
|
QWaylandInputDevice::Touch::Touch(QWaylandInputDevice *p)
|
||||||
@ -156,14 +162,18 @@ QWaylandInputDevice::Touch::Touch(QWaylandInputDevice *p)
|
|||||||
|
|
||||||
QWaylandInputDevice::Touch::~Touch()
|
QWaylandInputDevice::Touch::~Touch()
|
||||||
{
|
{
|
||||||
wl_touch_destroy(object());
|
if (mParent->mVersion >= 3)
|
||||||
|
wl_touch_release(object());
|
||||||
|
else
|
||||||
|
wl_touch_destroy(object());
|
||||||
}
|
}
|
||||||
|
|
||||||
QWaylandInputDevice::QWaylandInputDevice(QWaylandDisplay *display, int version, uint32_t id)
|
QWaylandInputDevice::QWaylandInputDevice(QWaylandDisplay *display, int version, uint32_t id)
|
||||||
: QObject()
|
: QObject()
|
||||||
, QtWayland::wl_seat(display->wl_registry(), id, qMin(version, 2))
|
, QtWayland::wl_seat(display->wl_registry(), id, qMin(version, 3))
|
||||||
, mQDisplay(display)
|
, mQDisplay(display)
|
||||||
, mDisplay(display->wl_display())
|
, mDisplay(display->wl_display())
|
||||||
|
, mVersion(qMin(version, 3))
|
||||||
, mCaps(0)
|
, mCaps(0)
|
||||||
, mDataDevice(0)
|
, mDataDevice(0)
|
||||||
, mKeyboard(0)
|
, mKeyboard(0)
|
||||||
|
@ -115,6 +115,7 @@ private:
|
|||||||
QWaylandDisplay *mQDisplay;
|
QWaylandDisplay *mQDisplay;
|
||||||
struct wl_display *mDisplay;
|
struct wl_display *mDisplay;
|
||||||
|
|
||||||
|
int mVersion;
|
||||||
uint32_t mCaps;
|
uint32_t mCaps;
|
||||||
|
|
||||||
struct wl_surface *pointerSurface;
|
struct wl_surface *pointerSurface;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user