diff options
author | Kristian Høgsberg <krh@bitplanet.net> | 2011-02-14 22:13:33 -0500 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2011-02-14 22:13:33 -0500 |
commit | b2d71852fd2ace71722f73065dbccb09c8e9910e (patch) | |
tree | 8c092b846d4a66856ea84ca0ac8bca55718418d2 /protocol | |
parent | 525e4c0beae832afc2c098c1368a19ad164e1b2b (diff) |
Split into a demo repository that holds the demo compositor and clients
Diffstat (limited to 'protocol')
-rw-r--r-- | protocol/wayland.xml | 483 |
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> |