summaryrefslogtreecommitdiff
path: root/protocol
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2011-02-14 22:13:33 -0500
committerKristian Høgsberg <krh@bitplanet.net>2011-02-14 22:13:33 -0500
commitb2d71852fd2ace71722f73065dbccb09c8e9910e (patch)
tree8c092b846d4a66856ea84ca0ac8bca55718418d2 /protocol
parent525e4c0beae832afc2c098c1368a19ad164e1b2b (diff)
Split into a demo repository that holds the demo compositor and clients
Diffstat (limited to 'protocol')
-rw-r--r--protocol/wayland.xml483
1 files changed, 0 insertions, 483 deletions
diff --git a/protocol/wayland.xml b/protocol/wayland.xml
deleted file mode 100644
index a9f96b6..0000000
--- a/protocol/wayland.xml
+++ /dev/null
@@ -1,483 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
- <!-- 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">
- <arg name="key" type="uint"/>
- </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">
- <arg name="key" type="uint"/>
- </request>
-
- <!-- A request addressed a non-existent object id. This is
- tyipcally a fatal error. -->
- <event name="invalid_object">
- <arg name="object_id" type="uint"/>
- </event>
-
- <!-- A request tried to invoke an opcode out of range. This is
- typically a fatal error. -->
- <event name="invalid_method">
- <arg name="object_id" type="uint"/>
- <arg name="opcode" type="uint"/>
- </event>
-
- <!-- A request has failed due to an out of memory error. -->
- <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">
- <arg name="id" type="new_id" interface="object"/>
- <arg name="name" type="string"/>
- <arg name="version" type="uint"/>
- </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">
- <arg name="base" type="uint"/>
- </event>
-
- <!-- A reply to the frame or sync 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 animations and compensate for jitter. -->
- <event name="key">
- <arg name="key" type="uint"/>
- <arg name="time" type="uint"/>
- </event>
- </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">
- <!-- Factory request for a surface objects. A surface is akin to a
- window. -->
- <request name="create_surface">
- <arg name="id" type="new_id" interface="surface"/>
- </request>
- </interface>
-
-
- <!-- drm support. This object is created by the server and published
- using the display's global event. -->
- <interface name="drm" version="1">
- <!-- 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">
- <arg name="id" type="uint"/>
- </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">
- <arg name="id" type="new_id" interface="buffer"/>
- <arg name="name" type="uint"/>
- <arg name="width" type="int"/>
- <arg name="height" type="int"/>
- <arg name="stride" type="uint"/>
- <arg name="visual" type="object" interface="visual"/>
- </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">
- <arg name="name" type="string"/>
- </event>
-
- <!-- Raised if the authenticate request succeeded -->
- <event name="authenticated"/>
- </interface>
-
-
- <!-- Shared memory support -->
- <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">
- <arg name="id" type="new_id" interface="buffer"/>
- <arg name="fd" type="fd"/>
- <arg name="width" type="int"/>
- <arg name="height" type="int"/>
- <arg name="stride" type="uint"/>
- <arg name="visual" type="object" interface="visual"/>
- </request>
- </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">
- <!-- Abandon a buffer. This will invalidate the object id. -->
- <request name="destroy" type="destructor"/>
- </interface>
-
- <interface name="shell" version="1">
- <request name="move">
- <arg name="surface" type="object" interface="surface"/>
- <arg name="input_device" type="object" interface="input_device"/>
- <arg name="time" type="uint"/>
- </request>
-
- <enum name="resize">
- <entry name="none" value="0"/>
- <entry name="top" value="1"/>
- <entry name="bottom" value="2"/>
- <entry name="left" value="4"/>
- <entry name="top_left" value="5"/>
- <entry name="bottom_left" value="6"/>
- <entry name="right" value="8"/>
- <entry name="top_right" value="9"/>
- <entry name="bottom_right" value="10"/>
- </enum>
-
- <request name="resize">
- <arg name="surface" type="object" interface="surface"/>
- <arg name="input_device" type="object" interface="input_device"/>
- <arg name="time" type="uint"/>
- <!-- edges is an enum, need to get the values in here -->
- <arg name="edges" type="uint"/>
- </request>
-
- <request name="create_drag">
- <arg name="id" type="new_id" interface="drag"/>
- </request>
-
- <request name="create_selection">
- <arg name="id" type="new_id" interface="selection"/>
- </request>
-
- <!-- The configure event asks the client to resize its surface.
- The size is a hint, in the sense that the client is free to
- ignore it if it doesn't resize, pick a smaller size (to
- satisfy aspect ration or resize in steps of NxM pixels). The
- client is free to dismiss all but the last configure event it
- received. -->
- <event name="configure">
- <arg name="time" type="uint"/>
- <arg name="edges" type="uint"/>
- <arg name="surface" type="object" interface="surface"/>
- <arg name="width" type="int"/>
- <arg name="height" type="int"/>
- </event>
- </interface>
-
- <interface name="selection" version="1">
- <!-- Add an offered mime type. Can be called several times to
- offer multiple types, but must be called before 'activate'. -->
- <request name="offer">
- <arg name="type" type="string"/>
- </request>
-
- <!-- Can the selection be activated for multiple devices? -->
- <request name="activate">
- <arg name="input_device" type="object" interface="input_device"/>
- <arg name="time" type="uint"/>
- </request>
-
- <!-- Destroy the selection. -->
- <request name="destroy" type="destructor"/>
-
- <!-- Another client pasted the selection, send the mime-type over
- the passed fd. -->
- <event name="send">
- <arg name="mime_type" type="string"/>
- <arg name="fd" type="fd"/>
- </event>
-
- <!-- Another selection became active. -->
- <event name="cancelled"/>
- </interface>
-
- <interface name="selection_offer" version="1">
- <!-- Called to receive the selection data as the specified type.
- Sends the pipe fd to the compositor, which forwards it to the
- source in the 'send' event -->
- <request name="receive">
- <arg name="mime_type" type="string"/>
- <arg name="fd" type="fd"/>
- </request>
-
- <!-- Sent before the keyboard_focus event to announce the types
- offered. One event per offered mime type. A mime type of
- NULL means the selection offer is going away. -->
- <event name="offer">
- <arg name="type" type="string"/>
- </event>
-
- <event name="keyboard_focus">
- <arg name="input_device" type="object" interface="input_device"/>
- </event>
- </interface>
-
- <interface name="drag" version="1">
- <!-- Add an offered mime type. Can be called several times to
- offer multiple types, but must be called before 'activate'. -->
- <request name="offer">
- <arg name="type" type="string"/>
- </request>
-
- <request name="activate">
- <arg name="surface" type="object" interface="surface"/>
- <arg name="input_device" type="object" interface="input_device"/>
- <arg name="time" type="uint"/>
- </request>
-
- <!-- Destroy the drag and cancel the session. -->
- <request name="destroy" type="destructor"/>
-
- <!-- Sent when a target accepts pointer_focus or motion events.
- If a target does not accept any of the offered types, type is
- NULL -->
- <event name="target">
- <arg name="mime_type" type="string"/>
- </event>
-
- <!-- Sent when the drag is finished. The final mime type is that
- of the last target event. If that was NULL, no drag target
- was valid when the drag finished, fd is undefined and the
- source should not send data. The event is also sent in case
- a drag source tries to activate a drag after the grab was
- released, in which case mime_type will also be NULL. -->
- <event name="finish">
- <arg name="fd" type="fd"/>
- </event>
-
- <event name="reject"/>
- </interface>
-
-
- <interface name="drag_offer" version="1">
- <!-- Call to accept the offer of the given type -->
- <request name="accept">
- <arg name="time" type="uint"/>
- <arg name="type" type="string"/>
- </request>
-
- <!-- Called to initiate the drag finish sequence. Sends the pipe
- fd to the compositor, which forwards it to the source in the
- 'finish' event -->
- <request name="receive">
- <arg name="fd" type="fd"/>
- </request>
-
- <!-- Called to reject a drop -->
- <request name="reject"/>
-
- <!-- Sent before the pointer_focus event to announce the types
- offered. One event per offered mime type. -->
- <event name="offer">
- <arg name="type" type="string"/>
- </event>
-
- <!-- Similar to device::pointer_focus. Sent to potential target
- surfaces to offer drag data. If the device leaves the
- window, the drag stops or the originator cancels the drag,
- this event is sent with the NULL surface, at which point the
- drag object may no longer be valid. -->
- <event name="pointer_focus">
- <arg name="time" type="uint"/>
- <arg name="surface" type="object" interface="surface"/>
- <arg name="x" type="int"/>
- <arg name="y" type="int"/>
- <arg name="surface_x" type="int"/>
- <arg name="surface_y" type="int"/>
- </event>
-
- <!-- Similar to device::motion. Sent to potential target surfaces
- as the drag pointer moves around in the surface. -->
- <event name="motion">
- <arg name="time" type="uint"/>
- <arg name="x" type="int"/>
- <arg name="y" type="int"/>
- <arg name="surface_x" type="int"/>
- <arg name="surface_y" type="int"/>
- </event>
-
- <!-- Sent to indicate that the drag is finishing. The last
- motion/pointer_focus event gives the location of the drop.
- Target must respond with the 'receive' request, which sends
- an fd to the source for writing the drag data. -->
- <event name="drop"/>
- </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">
- <!-- Deletes the surface and invalidates its object id. -->
- <request name="destroy" type="destructor"/>
-
- <!-- Copy the contents of a buffer into this surface. The x and y
- arguments specify the location of the new buffers upper left
- corner, relative to the old buffers upper left corner. -->
- <request name="attach">
- <arg name="buffer" type="object" interface="buffer"/>
- <arg name="x" type="int"/>
- <arg name="y" type="int"/>
- </request>
-
- <!-- Make the surface visible as a toplevel window. -->
- <request name="map_toplevel"/>
-
- <!-- Map the surface relative to an existing surface. The x and y
- arguments specify the locations of the upper left corner of
- the surface relative to the upper left corner of the parent
- surface. The flags argument controls overflow/clipping
- behaviour when the surface would intersect a screen edge,
- panel or such. And possibly whether the offset only
- determines the initial position or if the surface is locked
- to that relative position during moves. -->
- <request name="map_transient">
- <arg name="parent" type="object" interface="surface"/>
- <arg name="x" type="int"/>
- <arg name="y" type="int"/>
- <arg name="flags" type="uint"/>
- </request>
-
- <!-- Map the surface as a fullscreen surface. There are a number
- of options here: on which output? if the surface size doesn't
- match the output size, do we scale, change resolution, or add
- black borders? is that something the client controls? what
- about transient surfaces, do they float on top of the
- fullscreen? what if there's already a fullscreen surface on
- the output, maybe you can only go fullscreen if you're
- active? -->
- <request name="map_fullscreen"/>
-
- <!-- 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">
- <arg name="x" type="int"/>
- <arg name="y" type="int"/>
- <arg name="width" type="int"/>
- <arg name="height" type="int"/>
- </request>
- </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">
- <!-- 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">
- <arg name="time" type="uint"/>
- <arg name="buffer" type="object" interface="buffer"/>
- <arg name="hotspot_x" type="int"/>
- <arg name="hotspot_y" type="int"/>
- </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">
- <arg name="time" type="uint"/>
- <arg name="x" type="int"/>
- <arg name="y" type="int"/>
- <arg name="surface_x" type="int"/>
- <arg name="surface_y" type="int"/>
- </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">
- <arg name="time" type="uint"/>
- <arg name="button" type="uint"/>
- <arg name="state" type="uint"/>
- </event>
-
- <!-- Keyboard press. -->
- <event name="key">
- <arg name="time" type="uint"/>
- <arg name="key" type="uint"/>
- <arg name="state" type="uint"/>
- </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">
- <arg name="time" type="uint"/>
- <arg name="surface" type="object" interface="surface"/>
- <arg name="x" type="int"/>
- <arg name="y" type="int"/>
- <arg name="surface_x" type="int"/>
- <arg name="surface_y" type="int"/>
- </event>
-
- <event name="keyboard_focus">
- <arg name="time" type="uint"/>
- <arg name="surface" type="object" interface="surface"/>
- <arg name="keys" type="array"/>
- </event>
- </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">
- <!-- Notification about the screen size. -->
- <event name="geometry">
- <arg name="x" type="int"/>
- <arg name="y" type="int"/>
- <arg name="width" type="int"/>
- <arg name="height" type="int"/>
- </event>
- </interface>
-
-
- <!-- 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>