summaryrefslogtreecommitdiff
path: root/spec/main.tex
diff options
context:
space:
mode:
authorJesse Barnes <jbarnes@virtuousgeek.org>2012-01-18 10:06:02 -0800
committerKristian Høgsberg <krh@bitplanet.net>2012-01-19 17:40:30 -0500
commit10eefa49470d97948719f58dfb62a97fb4701aed (patch)
tree23056be78c6a67b4c37500c8d3c38afd5d0e55e0 /spec/main.tex
parentfb84662f617d2d8ec3f5724d6962a4109e6fb0ea (diff)
spec: list core interfaces with short descriptions
Plus fix up misc. grammar.
Diffstat (limited to 'spec/main.tex')
-rw-r--r--spec/main.tex33
1 files changed, 30 insertions, 3 deletions
diff --git a/spec/main.tex b/spec/main.tex
index 741c4e0..756bf38 100644
--- a/spec/main.tex
+++ b/spec/main.tex
@@ -162,7 +162,7 @@ The message header has 2 words in it:
\end{itemize}
The payload describes the request/event arguments. Every argument is always
-aligned to 32-bit. There is no prefix that describes the type, but it is
+aligned to 32-bits. There is no prefix that describes the type, but it is
inferred implicitly from the xml specification.
The representation of argument types are as follows:
@@ -174,7 +174,7 @@ The representation of argument types are as follows:
32-bit boundary.
\item "object": A 32-bit object ID.
\item "new\_id": the 32-bit object ID. On requests, the client
- decides the ID. The only event with "new\_id" is advertisements of
+ decides the ID. The only events with "new\_id" are advertisements of
globals, and the server will use IDs below 0x10000.
\item "array": Starts with 32-bit array size in bytes, followed by the array
contents verbatim, and finally padding to a 32-bit boundary.
@@ -182,6 +182,33 @@ The representation of argument types are as follows:
the ancillary data of the UNIX domain socket message (msg\_control).
\end{itemize}
+\subsection{Interfaces}
+
+The protocol includes several interfaces which are used for
+interacting with the server. Each interface provides requests,
+events, and errors (which are really just special events) as described
+above. Specific compositor implementations may have their own
+interfaces provided as extensions, but there are several which are
+always expected to be present.
+
+Core interfaces:
+\begin{itemize}
+\item wl_display: provides global functionality like objecting binding and fatal error events
+\item wl_callback: callback interface for dnoe events
+\item wl_compositor: core compositor interface, allows surface creation
+\item wl_shm: buffer management interface with buffer creation and format handling
+\item wl_buffer: buffer handling interface for indicating damage and object destruction, also provides buffer release events from the server
+\item wl_data_offer: for accepting and receiving specific mime types
+\item wl_data_source: for offering specific mime types
+\item wl_data_Device: lets clients manage drag & drop, provides pointer enter/leave events and motion
+\item wl_data_device_manager: for managing data sources and devices
+\item wl_shell: shell surface handling
+\item wl_shell_surface: shell surface handling and desktop-like events (e.g. set a surface to fullscreen, display a popup, etc.)
+\item wl_surface: surface management (destruction, damage, buffer attach, frame handling)
+\item wl_input_device: cursor setting, motion, button, and key events, etc.
+\item wl_output: events describing an attached output (subpixel orientation, current mode & geometry, etc.)
+\end{itemize}
+
\subsection{Connect Time}
\begin{itemize}
@@ -228,7 +255,7 @@ The compositor is a global object, advertised at connect time.
\begin{itemize}
\item a global object
-\item broadcasts drm file name, or at least a string like drm:/dev/card0
+\item broadcasts drm file name, or at least a string like drm:/dev/dri/card0
\item commit/ack/frame protocol
\end{itemize}