|
|
@ -1,57 +1,107 @@ |
|
|
|
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?> |
|
|
|
<protocol name="wayland"> |
|
|
|
<protocol name="wayland"> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- The core global object. This is a special singleton object. |
|
|
|
|
|
|
|
It is used for internal wayland protocol features. --> |
|
|
|
<interface name="display" version="1"> |
|
|
|
<interface name="display" version="1"> |
|
|
|
|
|
|
|
<!-- sync is an just an echo, which will reply with a sync event. |
|
|
|
|
|
|
|
Since requests are handled in-order, this can be used as a |
|
|
|
|
|
|
|
barrier to ensure all previous requests have ben handled. |
|
|
|
|
|
|
|
The key argument can be used to correlate between multiple |
|
|
|
|
|
|
|
sync invocations. --> |
|
|
|
<request name="sync"> |
|
|
|
<request name="sync"> |
|
|
|
<arg name="key" type="uint"/> |
|
|
|
<arg name="key" type="uint"/> |
|
|
|
</request> |
|
|
|
</request> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Request notification when the next frame is displayed. |
|
|
|
|
|
|
|
Useful for throttling redrawing operations, and driving |
|
|
|
|
|
|
|
animations. The notification will only be posted for one |
|
|
|
|
|
|
|
frame unless requested again. --> |
|
|
|
<request name="frame"> |
|
|
|
<request name="frame"> |
|
|
|
<arg name="key" type="uint"/> |
|
|
|
<arg name="key" type="uint"/> |
|
|
|
</request> |
|
|
|
</request> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- A request addressed a non-existent object id. This is |
|
|
|
|
|
|
|
tyipcally a fatal error. --> |
|
|
|
<event name="invalid_object"> |
|
|
|
<event name="invalid_object"> |
|
|
|
<arg name="object_id" type="uint"/> |
|
|
|
<arg name="object_id" type="uint"/> |
|
|
|
</event> |
|
|
|
</event> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- A request tried to invoke an opcode out of range. This is |
|
|
|
|
|
|
|
typically a fatal error. --> |
|
|
|
<event name="invalid_method"> |
|
|
|
<event name="invalid_method"> |
|
|
|
<arg name="object_id" type="uint"/> |
|
|
|
<arg name="object_id" type="uint"/> |
|
|
|
<arg name="opcode" type="uint"/> |
|
|
|
<arg name="opcode" type="uint"/> |
|
|
|
</event> |
|
|
|
</event> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- A request has failed due to an out of memory error. --> |
|
|
|
<event name="no_memory"/> |
|
|
|
<event name="no_memory"/> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Notify the client of global objects. These are objects that |
|
|
|
|
|
|
|
are created by the server. Globals are published on the |
|
|
|
|
|
|
|
initial client connection sequence, upon device hotplugs, |
|
|
|
|
|
|
|
device disconnects, reconfiguration or other events. The |
|
|
|
|
|
|
|
server will always announce an object before the object sends |
|
|
|
|
|
|
|
out events. --> |
|
|
|
<event name="global"> |
|
|
|
<event name="global"> |
|
|
|
<arg name="id" type="new_id" interface="object"/> |
|
|
|
<arg name="id" type="new_id" interface="object"/> |
|
|
|
<arg name="name" type="string"/> |
|
|
|
<arg name="name" type="string"/> |
|
|
|
<arg name="version" type="uint"/> |
|
|
|
<arg name="version" type="uint"/> |
|
|
|
</event> |
|
|
|
</event> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Internal, deprecated, and will be changed. This is an object |
|
|
|
|
|
|
|
IDs range that is used by the client to allocate object IDs |
|
|
|
|
|
|
|
in "new_id" type arguments. The server sends range |
|
|
|
|
|
|
|
allocations to the client before the next range is about to |
|
|
|
|
|
|
|
be depleted. --> |
|
|
|
<event name="range"> |
|
|
|
<event name="range"> |
|
|
|
<arg name="base" type="uint"/> |
|
|
|
<arg name="base" type="uint"/> |
|
|
|
</event> |
|
|
|
</event> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- A reply to the sync request. All requests made before the |
|
|
|
|
|
|
|
"sync" request that had the same key as the one present in |
|
|
|
|
|
|
|
this event have been processed by the server. --> |
|
|
|
<event name="sync"> |
|
|
|
<event name="sync"> |
|
|
|
<arg name="key" type="uint"/> |
|
|
|
<arg name="key" type="uint"/> |
|
|
|
</event> |
|
|
|
</event> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- A reply to the frame request. The key is the one used in the |
|
|
|
|
|
|
|
request. time is in millisecond units, and denotes the time |
|
|
|
|
|
|
|
when the frame was posted on the display. time can be used to |
|
|
|
|
|
|
|
estimaate frame rate, determine how much to advance |
|
|
|
|
|
|
|
animatiosn and compoensate for jitter--> |
|
|
|
<event name="frame"> |
|
|
|
<event name="frame"> |
|
|
|
<arg name="key" type="uint"/> |
|
|
|
<arg name="key" type="uint"/> |
|
|
|
<arg name="time" type="uint"/> |
|
|
|
<arg name="time" type="uint"/> |
|
|
|
</event> |
|
|
|
</event> |
|
|
|
</interface> |
|
|
|
</interface> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- A compositor. This object is a global. The compositor is in |
|
|
|
|
|
|
|
charge of combining the contents of multiple surfaces into one |
|
|
|
|
|
|
|
displayable output. --> |
|
|
|
<interface name="compositor" version="1"> |
|
|
|
<interface name="compositor" version="1"> |
|
|
|
|
|
|
|
<!-- Factory request for a surface objects. A surface is akin to a |
|
|
|
|
|
|
|
window. --> |
|
|
|
<request name="create_surface"> |
|
|
|
<request name="create_surface"> |
|
|
|
<arg name="id" type="new_id" interface="surface"/> |
|
|
|
<arg name="id" type="new_id" interface="surface"/> |
|
|
|
</request> |
|
|
|
</request> |
|
|
|
</interface> |
|
|
|
</interface> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- drm support. This object is created by the server and published |
|
|
|
|
|
|
|
using the display's global event. --> |
|
|
|
<interface name="drm" version="1"> |
|
|
|
<interface name="drm" version="1"> |
|
|
|
<!-- dri2 auth and create buffer --> |
|
|
|
<!-- Call this request with the magic received from drmGetMagic(). |
|
|
|
|
|
|
|
It will be passed on to the drmAuthMagic() or |
|
|
|
|
|
|
|
DRIAuthConnection() call. This authentication must be |
|
|
|
|
|
|
|
completed before create_buffer could be used. --> |
|
|
|
<request name="authenticate"> |
|
|
|
<request name="authenticate"> |
|
|
|
<arg name="id" type="uint"/> |
|
|
|
<arg name="id" type="uint"/> |
|
|
|
</request> |
|
|
|
</request> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Create a wayland buffer for the named DRM buffer. The DRM |
|
|
|
|
|
|
|
surface must have a name using the flink ioctl --> |
|
|
|
<request name="create_buffer"> |
|
|
|
<request name="create_buffer"> |
|
|
|
<arg name="id" type="new_id" interface="buffer"/> |
|
|
|
<arg name="id" type="new_id" interface="buffer"/> |
|
|
|
<arg name="name" type="uint"/> |
|
|
|
<arg name="name" type="uint"/> |
|
|
@ -61,14 +111,28 @@ |
|
|
|
<arg name="visual" type="object" interface="visual"/> |
|
|
|
<arg name="visual" type="object" interface="visual"/> |
|
|
|
</request> |
|
|
|
</request> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Notification of the path of the drm device which is used by |
|
|
|
|
|
|
|
the server. The client should use this device for creating |
|
|
|
|
|
|
|
local buffers. Only buffers created from this device should |
|
|
|
|
|
|
|
be be passed to the server using this drm object's |
|
|
|
|
|
|
|
create_buffer request. --> |
|
|
|
<event name="device"> |
|
|
|
<event name="device"> |
|
|
|
<arg name="name" type="string"/> |
|
|
|
<arg name="name" type="string"/> |
|
|
|
</event> |
|
|
|
</event> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Raised if the authenticate request succeeded --> |
|
|
|
<event name="authenticated"/> |
|
|
|
<event name="authenticated"/> |
|
|
|
</interface> |
|
|
|
</interface> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Shared memory support --> |
|
|
|
<interface name="shm" version="1"> |
|
|
|
<interface name="shm" version="1"> |
|
|
|
|
|
|
|
<!-- Transfer a shm buffer to the server. The allocated buffer |
|
|
|
|
|
|
|
would include at least stride * height bytes starting at the |
|
|
|
|
|
|
|
beginning of fd. The file descriptor is transferred over the |
|
|
|
|
|
|
|
socket using AF_UNIX magical features. width, height, stride |
|
|
|
|
|
|
|
and visual describe the respective properties of the pixel |
|
|
|
|
|
|
|
data contained in the buffer. --> |
|
|
|
<request name="create_buffer"> |
|
|
|
<request name="create_buffer"> |
|
|
|
<arg name="id" type="new_id" interface="buffer"/> |
|
|
|
<arg name="id" type="new_id" interface="buffer"/> |
|
|
|
<arg name="fd" type="fd"/> |
|
|
|
<arg name="fd" type="fd"/> |
|
|
@ -79,7 +143,12 @@ |
|
|
|
</request> |
|
|
|
</request> |
|
|
|
</interface> |
|
|
|
</interface> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- A pixel buffer. Created using the drm, shm or similar objects. |
|
|
|
|
|
|
|
It has a size, visual and contents, but not a location on the |
|
|
|
|
|
|
|
screen --> |
|
|
|
<interface name="buffer" version="1"> |
|
|
|
<interface name="buffer" version="1"> |
|
|
|
|
|
|
|
<!-- Abandon a buffer. This will invalidate the object id. --> |
|
|
|
<request name="destroy" type="destructor"/> |
|
|
|
<request name="destroy" type="destructor"/> |
|
|
|
</interface> |
|
|
|
</interface> |
|
|
|
|
|
|
|
|
|
|
@ -114,6 +183,7 @@ |
|
|
|
</event> |
|
|
|
</event> |
|
|
|
</interface> |
|
|
|
</interface> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<interface name="drag" version="1"> |
|
|
|
<interface name="drag" version="1"> |
|
|
|
<!-- Add an offered mime type. Can be called several times to |
|
|
|
<!-- Add an offered mime type. Can be called several times to |
|
|
|
offer multiple types, but must be called before 'activate'. --> |
|
|
|
offer multiple types, but must be called before 'activate'. --> |
|
|
@ -184,7 +254,7 @@ |
|
|
|
</event> |
|
|
|
</event> |
|
|
|
|
|
|
|
|
|
|
|
<!-- Similar to device::motion. Sent to potential target surfaces |
|
|
|
<!-- Similar to device::motion. Sent to potential target surfaces |
|
|
|
as the drag pointer moves around in the surface. --> |
|
|
|
as the drag pointer moves around in the surface. --> |
|
|
|
<event name="motion"> |
|
|
|
<event name="motion"> |
|
|
|
<arg name="time" type="uint"/> |
|
|
|
<arg name="time" type="uint"/> |
|
|
|
<arg name="x" type="int"/> |
|
|
|
<arg name="x" type="int"/> |
|
|
@ -200,13 +270,20 @@ |
|
|
|
<event name="drop"/> |
|
|
|
<event name="drop"/> |
|
|
|
</interface> |
|
|
|
</interface> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- A surface. This is an image that is displayed on the screen. |
|
|
|
|
|
|
|
It has a location, size and pixel contents. Similar to a window. --> |
|
|
|
<interface name="surface" version="1"> |
|
|
|
<interface name="surface" version="1"> |
|
|
|
|
|
|
|
<!-- Deletes the surface and invalidates its object id. --> |
|
|
|
<request name="destroy" type="destructor"/> |
|
|
|
<request name="destroy" type="destructor"/> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Copy the contents of a buffer into this surface. --> |
|
|
|
<request name="attach"> |
|
|
|
<request name="attach"> |
|
|
|
<arg name="buffer" type="object" interface="buffer"/> |
|
|
|
<arg name="buffer" type="object" interface="buffer"/> |
|
|
|
</request> |
|
|
|
</request> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Set the location on the screen that this surface will |
|
|
|
|
|
|
|
be displayed. --> |
|
|
|
<request name="map"> |
|
|
|
<request name="map"> |
|
|
|
<arg name="x" type="int"/> |
|
|
|
<arg name="x" type="int"/> |
|
|
|
<arg name="y" type="int"/> |
|
|
|
<arg name="y" type="int"/> |
|
|
@ -214,6 +291,12 @@ |
|
|
|
<arg name="height" type="int"/> |
|
|
|
<arg name="height" type="int"/> |
|
|
|
</request> |
|
|
|
</request> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Notify the server that the attached buffer's contents have |
|
|
|
|
|
|
|
changed, and request a redraw. The arguments allow you to |
|
|
|
|
|
|
|
damage only a part of the surface, but the server may ignore |
|
|
|
|
|
|
|
it and redraw the entire contents of the surface. To |
|
|
|
|
|
|
|
describe a more complicated area of damage, use this request |
|
|
|
|
|
|
|
several times. --> |
|
|
|
<request name="damage"> |
|
|
|
<request name="damage"> |
|
|
|
<arg name="x" type="int"/> |
|
|
|
<arg name="x" type="int"/> |
|
|
|
<arg name="y" type="int"/> |
|
|
|
<arg name="y" type="int"/> |
|
|
@ -222,7 +305,16 @@ |
|
|
|
</request> |
|
|
|
</request> |
|
|
|
</interface> |
|
|
|
</interface> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- A group of keyboards and pointer devices (mice, for |
|
|
|
|
|
|
|
example). This object is published as a global during start up, |
|
|
|
|
|
|
|
or when such a device is hot plugged. A input_device group |
|
|
|
|
|
|
|
typically has a pointer and maintains a keyboard_focus and a |
|
|
|
|
|
|
|
pointer_focus. --> |
|
|
|
<interface name="input_device" version="1"> |
|
|
|
<interface name="input_device" version="1"> |
|
|
|
|
|
|
|
<!-- Set the pointer's image. This request only takes effect if |
|
|
|
|
|
|
|
the pointer focus for this device is one of the requesting |
|
|
|
|
|
|
|
clients surfaces. --> |
|
|
|
<request name="attach"> |
|
|
|
<request name="attach"> |
|
|
|
<arg name="time" type="uint"/> |
|
|
|
<arg name="time" type="uint"/> |
|
|
|
<arg name="buffer" type="object" interface="buffer"/> |
|
|
|
<arg name="buffer" type="object" interface="buffer"/> |
|
|
@ -230,6 +322,9 @@ |
|
|
|
<arg name="hotspot_y" type="int"/> |
|
|
|
<arg name="hotspot_y" type="int"/> |
|
|
|
</request> |
|
|
|
</request> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Notification of pointer location change. |
|
|
|
|
|
|
|
x,y are the absolute location on the screen. |
|
|
|
|
|
|
|
surface_[xy] are the location relative to the focused surface. --> |
|
|
|
<event name="motion"> |
|
|
|
<event name="motion"> |
|
|
|
<arg name="time" type="uint"/> |
|
|
|
<arg name="time" type="uint"/> |
|
|
|
<arg name="x" type="int"/> |
|
|
|
<arg name="x" type="int"/> |
|
|
@ -238,18 +333,26 @@ |
|
|
|
<arg name="surface_y" type="int"/> |
|
|
|
<arg name="surface_y" type="int"/> |
|
|
|
</event> |
|
|
|
</event> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Mouse button click and release notifications. The location |
|
|
|
|
|
|
|
of the click is given by the last motion or pointer_focus |
|
|
|
|
|
|
|
event. --> |
|
|
|
<event name="button"> |
|
|
|
<event name="button"> |
|
|
|
<arg name="time" type="uint"/> |
|
|
|
<arg name="time" type="uint"/> |
|
|
|
<arg name="button" type="uint"/> |
|
|
|
<arg name="button" type="uint"/> |
|
|
|
<arg name="state" type="uint"/> |
|
|
|
<arg name="state" type="uint"/> |
|
|
|
</event> |
|
|
|
</event> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Keyboard press. --> |
|
|
|
<event name="key"> |
|
|
|
<event name="key"> |
|
|
|
<arg name="time" type="uint"/> |
|
|
|
<arg name="time" type="uint"/> |
|
|
|
<arg name="key" type="uint"/> |
|
|
|
<arg name="key" type="uint"/> |
|
|
|
<arg name="state" type="uint"/> |
|
|
|
<arg name="state" type="uint"/> |
|
|
|
</event> |
|
|
|
</event> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Notification that this input device's pointer is focused on |
|
|
|
|
|
|
|
certain surface. When an input_device enters a surface, the |
|
|
|
|
|
|
|
pointer image is undefined and a client should respond to |
|
|
|
|
|
|
|
this event by setting an apropriate pointer image. --> |
|
|
|
<event name="pointer_focus"> |
|
|
|
<event name="pointer_focus"> |
|
|
|
<arg name="time" type="uint"/> |
|
|
|
<arg name="time" type="uint"/> |
|
|
|
<arg name="surface" type="object" interface="surface"/> |
|
|
|
<arg name="surface" type="object" interface="surface"/> |
|
|
@ -266,13 +369,26 @@ |
|
|
|
</event> |
|
|
|
</event> |
|
|
|
</interface> |
|
|
|
</interface> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- An output describes part of the compositor geometry. The |
|
|
|
|
|
|
|
compositor work in the 'compositor coordinate system' and an |
|
|
|
|
|
|
|
output corresponds to rectangular area in that space that is |
|
|
|
|
|
|
|
actually visible. This typically corresponds to a monitor that |
|
|
|
|
|
|
|
displays part of the compositor space. This object is |
|
|
|
|
|
|
|
published as global during start up, or when a screen is hot |
|
|
|
|
|
|
|
plugged. --> |
|
|
|
<interface name="output" version="1"> |
|
|
|
<interface name="output" version="1"> |
|
|
|
|
|
|
|
<!-- Notification about the screen size. --> |
|
|
|
<event name="geometry"> |
|
|
|
<event name="geometry"> |
|
|
|
<arg name="width" type="int"/> |
|
|
|
<arg name="width" type="int"/> |
|
|
|
<arg name="height" type="int"/> |
|
|
|
<arg name="height" type="int"/> |
|
|
|
</event> |
|
|
|
</event> |
|
|
|
</interface> |
|
|
|
</interface> |
|
|
|
|
|
|
|
|
|
|
|
<interface name="visual" version="1" /> |
|
|
|
|
|
|
|
|
|
|
|
<!-- A visual is the pixel format. The different visuals are |
|
|
|
|
|
|
|
currently only identified by the order they are advertised by |
|
|
|
|
|
|
|
the 'global' events. We need something better. --> |
|
|
|
|
|
|
|
<interface name="visual" version="1"/> |
|
|
|
|
|
|
|
|
|
|
|
</protocol> |
|
|
|
</protocol> |