summaryrefslogtreecommitdiff
path: root/specs/dbelib.tex
diff options
context:
space:
mode:
Diffstat (limited to 'specs/dbelib.tex')
-rw-r--r--specs/dbelib.tex620
1 files changed, 0 insertions, 620 deletions
diff --git a/specs/dbelib.tex b/specs/dbelib.tex
deleted file mode 100644
index afd8597..0000000
--- a/specs/dbelib.tex
+++ /dev/null
@@ -1,620 +0,0 @@
-% edited for DP edits and code consistency w/ core protocol/xlib 3/30/96
-% split into separate library and protocol documentos 4/15/96
-\documentstyle{article}
-\pagestyle{myheadings}
-\markboth{Double Buffer Extension Specification}{Double Buffer Extension Specification}
-\setlength{\parindent}{0 pt}
-\setlength{\parskip}{6pt}
-\setlength{\topsep}{0 pt}
-
-% Request names are literal symbols; therefore, use the same font for both.
-\newcommand{\requestname}[1]{{\tt #1}}
-\newcommand{\literal}[1]{\mbox{\tt #1}}
-
-\newcommand{\encodingsection}[1]{{\bf #1}}
-\newcommand{\requestsection}[1]{{\bf #1}}
-
-% Font treatment of type names differs between protocol and library sections.
-\newcommand{\libtypename}[1]{\mbox{\tt #1}}
-\newcommand{\typename}[1]{\mbox{\rm #1}} % default font
-\newcommand{\typeargname}[1]{\mbox{\rm #1}} % default font
-\newcommand{\argname}[1]{\mbox{\it #1}}
-\newcommand{\argdecl}[2]{\argname{#1} & : \typename{#2}\\}
-\newcommand{\areplyargdecl}[2]{#1 & : \typename{#2}\\}
-
-\newenvironment{arequest}[1]{\requestsection{#1} \\ \begin{tabular}{ll}}{\end{tabular}}
-\newcommand{\areply}{$\Rightarrow$\\}
-
-\newcommand{\etabstops}{\hspace*{0cm}\=\hspace*{1cm}\=\hspace*{5cm}\=\kill}
-
-\newcommand{\eargdecl}[3]{\> #1 \> \typename{#2} \> #3 \\}
-
-\newenvironment{keeptogether}{\vbox \bgroup}{\egroup}
-
-\newenvironment{erequest}[3]{\pagebreak[3] \begin{keeptogether} \encodingsection{#1} \begin{tabbing} \etabstops \eargdecl{1}{CARD8}{major-opcode} \eargdecl{1}{#2}{minor-opcode} \eargdecl{2}{#3}{request length}}{\end{tabbing} \end{keeptogether}}
-
-\newenvironment{eerror}[1]{\begin{keeptogether} \encodingsection{#1} \begin{tabbing} \etabstops }{\end{tabbing} \end{keeptogether}}
-
-\newenvironment{etypedef}[1]{\begin{keeptogether} \typename{#1} \begin{tabbing} \etabstops }{\end{tabbing} \end{keeptogether}}
-
-\newcommand{\cfunctionname}[1]{\mbox{\tt #1}}
-\newcommand{\cfunctiondecl}[1]{\mbox{\rm #1}}
-\newcommand{\cargdecl}[2]{\penalty -1\typename{#1} \argname{#2}}
-\newenvironment{cfunction}[2]{\begin{sloppypar}\begin{keeptogether}\vspace{5mm}\typename{#1}\\ \cfunctiondecl{#2}\ (}{)\end{keeptogether}\end{sloppypar}{\hangafter=2 \hangindent=20pt \raggedright\par}}
-
-% make things easier with all the long names
-\spaceskip .3333em plus 5em
-\tolerance=2000
-
-\begin{document}
-
-\title{Double Buffer Extension Library\\Protocol Version 1.0\\X Consortium Standard}
-\author{Ian Elliott\\Hewlett-Packard Company \and David P. Wiggins\\X Consortium, Inc.}
-\maketitle
-\thispagestyle{empty}
-
-\eject
-
-Copyright \copyright 1989 X Consortium, Inc. and Digital Equipment Corporation.
-
-Copyright \copyright 1992 X Consortium, Inc. and Intergraph Corporation.
-
-Copyright \copyright 1993 X Consortium, Inc. and Silicon Graphics, Inc.
-
-Copyright \copyright 1994, 1995 X Consortium, Inc. and Hewlett-Packard Company.
-
-Permission to use, copy, modify, and distribute this documentation for
-any purpose and without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-Digital Equipment Corporation, Intergraph Corporation, Silicon
-Graphics, Hewlett-Packard, and the X Consortium make no
-representations about the suitability for any purpose of the
-information in this document. This documentation is provided ``as is''
-without express or implied warranty.
-
-\eject
-
-\section{Introduction}
-
-The Double Buffer Extension (DBE) provides a standard way to utilize
-double-buffering within the framework of the X Window System.
-Double-buffering uses two buffers, called front and back, which hold
-images. The front buffer is visible to the user; the back buffer is
-not. Successive frames of an animation are rendered into the back
-buffer while the previously rendered frame is displayed in the front
-buffer. When a new frame is ready, the back and front buffers swap
-roles, making the new frame visible. Ideally, this exchange appears to
-happen instantaneously to the user and with no visual artifacts. Thus,
-only completely rendered images are presented to the user, and they remain
-visible during the entire time it takes to render a new frame. The
-result is a flicker-free animation.
-
-\section{Goals}
-
-This extension should enable clients to:
-\begin{itemize}
-
-\item Allocate and deallocate double-buffering for a window.
-
-\item Draw to and read from the front and back buffers associated with
-a window.
-
-\item Swap the front and back buffers associated with a window.
-
-\item Specify a wide range of actions to be taken when a window is
-swapped. This includes explicit, simple swap actions (defined
-below), and more complex actions (for example, clearing ancillary buffers)
-that can be put together within explicit ``begin'' and ``end''
-requests (defined below).
-
-\item Request that the front and back buffers associated with multiple
-double-buffered windows be swapped simultaneously.
-
-\end{itemize}
-
-In addition, the extension should:
-
-\begin{itemize}
-
-\item Allow multiple clients to use double-buffering on the same window.
-
-\item Support a range of implementation methods that can capitalize on
-existing hardware features.
-
-\item Add no new event types.
-
-\item Be reasonably easy to integrate with a variety of direct graphics
-hardware access (DGHA) architectures.
-\end{itemize}
-
-\section{Concepts}
-
-Normal windows are created using the core \requestname{CreateWindow}
-request, which allocates a set of window attributes and, for
-\literal{InputOutput} windows, a front buffer,
-into which an image can be drawn.
-The contents of this buffer will be displayed when the window is
-visible.
-
-This extension enables applications to use double-buffering with a
-window. This involves creating a second buffer, called a back buffer,
-and associating one or more back buffer names (\typename{XID}s) with
-the window for use when referring to (that is, drawing to or reading
-from) the window's back buffer. The back buffer name is a
-\typename{DRAWABLE} of type \typename{BACKBUFFER}.
-
-DBE provides a relative double-buffering model. One XID, the window,
-always refers to the front buffer. One or more other XIDs, the back buffer
-names, always refer to the back buffer. After a buffer swap, the
-window continues to refer to the (new) front buffer, and the
-back buffer name continues to refer to the (new) back buffer. Thus,
-applications and toolkits that want to just render to the back buffer
-always use the back buffer name for all drawing requests to the
-window. Portions of an application that want to render to the front
-buffer always use the window XID for all drawing requests to the
-window.
-
-Multiple clients and toolkits can all use double-buffering on the same
-window. DBE does not provide a request for querying whether a window
-has double-buffering support, and if so, what the back buffer name is.
-Given the asynchronous nature of the X Window System, this would cause
-race conditions. Instead, DBE allows multiple back buffer names to
-exist for the same window; they all refer to the same physical back
-buffer. The first time a back buffer name is allocated for a window,
-the window becomes double-buffered and the back buffer name is
-associated with the window. Subsequently, the window already is a
-double-buffered window, and nothing about the window changes when a
-new back buffer name is allocated, except that the new back buffer
-name is associated with the window. The window remains
-double-buffered until either the window is destroyed or until all of
-the back buffer names for the window are deallocated.
-
-In general, both the front and back buffers are treated the same. In
-particular, here are some important characteristics:
-
-\begin{itemize}
-
-\item Only one buffer per window can be visible at a time (the
-front buffer).
-
-\item Both buffers associated with a window have the same visual type,
-depth, width, height, and shape as the window.
-
-\item Both buffers associated with a window are ``visible'' (or
-``obscured'') in the same way. When an \literal{Expose} event is
-generated for
-a window, both buffers should be considered to be damaged in the
-exposed area. Damage that occurs to either buffer will result in an
-\literal{Expose} event on the window. When a double-buffered window is
-exposed,
-both buffers are tiled with the window background, exactly as stated
-by the core protocol. Even though the back buffer is not visible,
-terms such as obscure apply to the back buffer as well as to the front
-buffer.
-
-\item It is acceptable at any time to pass a \typename{BACKBUFFER} in
-any request, notably any core or extension drawing request, that
-expects a \typename{DRAWABLE}. This enables an application to draw
-directly into \typename{BACKBUFFER}s in the same fashion as it would
-draw into any other \typename{DRAWABLE}.
-
-\item It is an error (\literal{Window}) to pass a \typename{BACKBUFFER} in a
-core request that expects a Window.
-
-\item A \typename{BACKBUFFER} will never be sent by core X in a reply,
-event, or error where a Window is specified.
-\item If core X11 backing-store and save-under applies to a
-double-buffered window, it applies to both buffers equally.
-
-\item If the core \requestname{ClearArea} request is executed on a
-double-buffered window, the same area in both the front and back
-buffers is cleared.
-
-\end{itemize}
-
-The effect of passing a window to a request that accepts a
-\typename{DRAWABLE} is unchanged by this extension. The window and
-front buffer are synonomous with each other. This includes obeying
-the \requestname{GetImage} semantics and the subwindow-mode semantics
-if a core graphics context is involved. Regardless of whether the
-window was explicitly passed in a \requestname{GetImage} request, or
-implicitly referenced (that is, one of the window's ancestors was passed
-in the request), the front (that is, visible) buffer is always referenced.
-Thus, DBE-na\"{\i}ve screen dump clients will always get the front buffer.
-\requestname{GetImage} on a back buffer returns undefined image
-contents for any obscured regions of the back buffer that fall within
-the image.
-
-Drawing to a back buffer always uses the clip region that would be
-used to draw to the front buffer with a GC subwindow-mode of
-\literal{ClipByChildren}. If an ancestor of a double-buffered window is drawn
-to with a core GC having a subwindow-mode of \literal{IncludeInferiors}, the
-effect on the double-buffered window's back buffer depends on the
-depth of the double-buffered window and the ancestor. If the depths
-are the same, the contents of the back buffer of the double-buffered
-window are not changed. If the depths are different, the contents of
-the back buffer of the double-buffered window are undefined for the
-pixels that the \literal{IncludeInferiors} drawing touched.
-
-DBE adds no new events. DBE does not extend the semantics of any
-existing events with the exception of adding a new \typename{DRAWABLE}
-type called \typename{BACKBUFFER}. If events, replies, or errors that
-contain a \typename{DRAWABLE} (for example, \literal{GraphicsExpose}) are
-generated in
-response to a request, the \typename{DRAWABLE} returned will be the
-one specified in the request.
-
-DBE advertises which visuals support double-buffering.
-
-DBE does not include any timing or synchronization facilities.
-Applications that need such facilities (for example, to maintain a constant
-frame rate) should investigate the Synchronization Extension, an X
-Consortium standard.
-
-\subsection{Window Management Operations}
-
-The basic philosophy of DBE is that both buffers are treated the same by
-core X window management operations.
-
-When the core \requestname{DestroyWindow} is executed on a
-double-buffered window, both buffers associated with the window are
-destroyed, and all back buffer names associated with the window are
-freed.
-
-If the core \requestname{ConfigureWindow} request changes the size of
-a window, both buffers assume the new size. If the window's size
-increases, the effect on the buffers depends on whether the
-implementation honors bit gravity for buffers. If bit gravity is
-implemented, then the contents of both buffers are moved in accordance
-with the window's bit gravity (see the core
-\requestname{ConfigureWindow} request), and the remaining areas are
-tiled with the window background. If bit gravity is not implemented,
-then the entire unobscured region of both buffers is tiled with the
-window background. In either case, \literal{Expose} events are generated for
-the region that is tiled with the window background.
-
-If the core \requestname{GetGeometry} request is executed on a
-\typename{BACKBUFFER}, the returned x, y, and border-width will be
-zero.
-
-If the Shape extension \requestname{ShapeRectangles},
-\requestname{ShapeMask}, \requestname{ShapeCombine}, or
-\requestname{ShapeOffset} request is executed on a double-buffered
-window, both buffers are reshaped to match the new window shape. The
-region difference is the following:
-
-\[ D = new shape - old shape \]
-
-It is tiled with the window background in both buffers,
-and \literal{Expose} events are generated for D.
-
-\subsection{Complex Swap Actions}
-
-DBE has no explicit knowledge of ancillary buffers (for example, depth buffers
-or alpha buffers), and only has a limited set of defined swap actions.
-Some applications may need a richer set of swap actions than DBE
-provides. Some DBE implementations have knowledge of ancillary
-buffers, and/or can provide a rich set of swap actions. Instead of
-continually extending DBE to increase its set of swap actions, DBE
-provides a flexible ``idiom'' mechanism. If an application's needs
-are served by the defined swap actions, it should use them; otherwise,
-it should use the following method of expressing a complex swap action
-as an idiom. Following this policy will ensure the best possible
-performance across a wide variety of implementations.
-
-As suggested by the term ``idiom,'' a complex swap action should be
-expressed as a group/series of requests. Taken together, this group
-of requests may be combined into an atomic operation by the
-implementation, in order to maximize performance. The set of idioms
-actually recognized for optimization is implementation dependent. To
-help with idiom expression and interpretation, an idiom must be
-surrounded by two protocol requests: \requestname{DBEBeginIdiom} and
-\requestname{DBEEndIdiom}. Unless this begin-end pair surrounds the
-idiom, it may not be recognized by a given implementation, and
-performance will suffer.
-
-For example, if an application wants to swap buffers for two windows,
-and use core X to clear only certain planes of the back buffers, the
-application would issue the following protocol requests as a group, and
-in the following order:
-
-\begin{itemize}
-\item \requestname{DBEBeginIdiom} request.
-\item \requestname{DBESwapBuffers} request with XIDs for two windows, each
-of which uses a swap action of \literal{Untouched}.
-\item Core X \requestname{PolyFillRectangle} request to the back buffer of one window.
-\item Core X \requestname{PolyFillRectangle} request to the back buffer of the other window.
-\item \requestname{DBEEndIdiom} request.
-\end{itemize}
-
-The \requestname{DBEBeginIdiom} and \requestname{DBEEndIdiom} requests
-do not perform any actions themselves. They are treated as markers by
-implementations that can combine certain groups/series of requests as
-idioms, and are ignored by other implementations or for nonrecognized
-groups/series of requests. If these requests are sent out of order,
-or are mismatched, no errors are sent, and the requests are executed
-as usual, though performance may suffer.
-
-An idiom need not include a \requestname{DBESwapBuffers} request. For
-example, if a swap action of \literal{Copied} is desired, but only some of the
-planes should be copied, a core X \requestname{CopyArea} request may
-be used instead of \requestname{DBESwapBuffers}. If
-\requestname{DBESwapBuffers} is included in an idiom, it should
-immediately follow the \requestname{DBEBeginIdiom} request. Also,
-when the \requestname{DBESwapBuffers} is included in an idiom, that
-request's swap action will still be valid, and if the swap action
-might overlap with another request, then the final result of the idiom
-must be as if the separate requests were executed serially. For
-example, if the specified swap action is \literal{Untouched}, and if a
-\requestname{PolyFillRectangle} using a client clip rectangle is done
-to the window's back buffer after the \requestname{DBESwapBuffers}
-request, then the contents of the new back buffer (after the idiom)
-will be the same as if the idiom was not recognized by the
-implementation.
-
-It is highly recommended that Application Programming Interface (API)
-providers define, and application developers use, ``convenience'' functions
-that allow client applications to call one procedure that encapsulates common idioms.
-These functions will generate the \requestname{DBEBeginIdiom} request,
-the idiom requests, and \requestname{DBEEndIdiom} request. Usage of
-these functions will ensure best possible performance across a wide
-variety of implementations.
-
-\section{C Language Binding}
-
-The header for this extension is \verb|<X11/extensions/Xdbe.h>|. All
-identifier names provided by this header begin with Xdbe.
-
-\subsection{Types}
-
-The type \libtypename{XdbeBackBuffer} is a \libtypename{Drawable}.
-
-The type \libtypename{XdbeSwapAction} can be one of the constants
-\literal{XdbeUndefined}, \literal{XdbeBackground},
-\literal{XdbeUntouched}, or \literal{XdbeCopied}.
-
-\subsection{C Functions}
-
-The C functions provide direct access to the protocol and add no
-additional semantics. For complete details on the effects of these
-functions, refer to the appropriate protocol request, which can be
-derived by replacing Xdbe at the start of the function name with DBE\@.
-All functions that have return type \libtypename{Status} will return
-nonzero for success and zero for failure.
-
-% start marker
-\begin{keeptogether}
-\begin{cfunction}{Status}{XdbeQueryExtension}
-\cargdecl{Display *}{dpy},
-\cargdecl{int *}{major\_version\_return},
-\cargdecl{int *}{minor\_version\_return}
-\end{cfunction}
-% end marker
-
-\cfunctionname{XdbeQueryExtension} sets major\_version\_return and
-minor\_version\_return to the major and minor DBE protocol
-version supported by the server. If the DBE library is compatible
-with the version returned by the server, it returns
-nonzero. If dpy does not support the DBE extension, or if
-there was an error during communication with the server, or if the
-server and library protocol versions are incompatible, it
-returns zero. No other Xdbe functions may be called before this
-function. If a client violates this rule, the effects of all
-subsequent Xdbe calls that it makes are undefined.
-\end{keeptogether}
-
-% start marker
-\begin{keeptogether}
-\begin{cfunction}{XdbeScreenVisualInfo *}{XdbeGetVisualInfo}
-\cargdecl{Display *}{dpy},
-\cargdecl{Drawable *}{screen\_specifiers},
-\cargdecl{int *}{num\_screens}
-\end{cfunction}
-% end marker
-
-\cfunctionname{XdbeGetVisualInfo} returns information about which visuals support
-double buffering. The argument num\_screens specifies how many
-elements there are in the screen\_specifiers list. Each
-drawable in screen\_specifiers designates a screen for which
-the supported visuals are being requested. If num\_screens
-is zero, information for all screens is requested. In this case, upon
-return from this function, num\_screens will be set to the
-number of screens that were found. If an error occurs, this function
-returns NULL; otherwise, it returns a pointer to a list of
-\libtypename{XdbeScreenVisualInfo} structures of length num\_screens.
-The {\it n}th element in the returned list corresponds to the {\it n}th
-drawable in the screen\_specifiers list, unless
-num\_screens was passed in with the value zero, in which
-case the {\it n}th element in the returned list corresponds to the
-{\it n}th screen of the server, starting with screen zero.
-
-The \libtypename{XdbeScreenVisualInfo} structure has the following
-fields:
-
-\begin{tabular}{lll}
-\typename{int} & \argname{count} & number of items in visinfo \\
-\typename{XdbeVisualInfo *} & \argname{visinfo} & list of visuals and depths for this screen \\
-\end{tabular}
-
-The \libtypename{XdbeVisualInfo} structure has the following fields:
-
-\begin{tabular}{lll}
-\typename{VisualID} & \argname{visual} & one visual ID that supports double-buffering\\
-\typename{int} & \argname{depth} & depth of visual in bits \\
-\typename{int} & \argname{perflevel} & performance level of visual \\
-\end{tabular}
-\end{keeptogether}
-
-% start marker
-\begin{keeptogether}
-\begin{cfunction}{void }{XdbeFreeVisualInfo}
-\cargdecl{XdbeScreenVisualInfo *}{visual\_info}
-\end{cfunction}
-% end marker
-
-\cfunctionname{XdbeFreeVisualInfo} frees the list of \libtypename{XdbeScreenVisualInfo}
-returned by \cfunctionname{XdbeGetVisualInfo}.
-\end{keeptogether}
-
-% start marker
-\begin{keeptogether}
-\begin{cfunction}{XdbeBackBuffer}{XdbeAllocateBackBufferName}
-\cargdecl{Display *}{dpy},
-\cargdecl{Window}{window},
-\cargdecl{XdbeSwapAction}{swap\_action}
-\end{cfunction}
-% end marker
-
-\cfunctionname{XdbeAllocateBackBufferName} returns a drawable ID used to refer
-to the back buffer of the specified window.
-The swap\_action is a hint to indicate the swap action
-that will likely be used in subsequent calls to
-\cfunctionname{XdbeSwapBuffers}.
-The actual swap action used in calls to
-\cfunctionname{XdbeSwapBuffers} does not have
-to be the same as the swap\_action passed to this function,
-though clients are encouraged to provide accurate information whenever
-possible.
-\end{keeptogether}
-
-% start marker
-\begin{keeptogether}
-\begin{cfunction}{Status}{XdbeDeallocateBackBufferName}
-\cargdecl{Display *}{dpy},
-\cargdecl{XdbeBackBuffer}{buffer}
-\end{cfunction}
-% end marker
-
-\cfunctionname{XdbeDeallocateBackBufferName} frees the specified
-drawable ID, buffer,
-that was obtained via \cfunctionname{XdbeAllocateBackBufferName}. The buffer
-must be a valid name for the back buffer of a window, or an
-\literal{XdbeBadBuffer}
-error results.
-\end{keeptogether}
-
-% start marker
-\begin{keeptogether}
-\begin{cfunction}{Status}{XdbeSwapBuffers}
-\cargdecl{Display *}{dpy},
-\cargdecl{XdbeSwapInfo *}{swap\_info},
-\cargdecl{int}{num\_windows}
-\end{cfunction}
-% end marker
-
-\cfunctionname{XdbeSwapBuffers} swaps the front and back buffers for a list of windows.
-The argument num\_windows specifies how many windows are to
-have their buffers swapped; it is the number of elements in the
-swap\_info array. The argument swap\_info
-specifies the information needed per window to do the swap.
-
-The \libtypename{XdbeSwapInfo} structure has the following fields:
-
-\begin{tabular}{lll}
-\typename{Window} & \argname{swap\_window} & window for which to swap buffers \\
-\typename{XdbeSwapAction} & \argname{swap\_action} & swap action to use for this swap\_window \\
-\end{tabular}
-\end{keeptogether}
-
-% start marker
-\begin{keeptogether}
-\begin{cfunction}{Status}{XdbeBeginIdiom}
-\cargdecl{Display *}{dpy}
-\end{cfunction}
-% end marker
-
-\cfunctionname{XdbeBeginIdiom} marks the beginning of an idiom sequence.
-See section 3.2
-for a complete discussion of idioms.
-\end{keeptogether}
-
-% start marker
-\begin{keeptogether}
-\begin{cfunction}{Status}{XdbeEndIdiom}
-\cargdecl{Display *}{dpy}
-\end{cfunction}
-% end marker
-
-\cfunctionname{XdbeEndIdiom} marks the end of an idiom sequence.
-\end{keeptogether}
-
-% start marker
-\begin{keeptogether}
-\begin{cfunction}{XdbeBackBufferAttributes *}{XdbeGetBackBufferAttributes}
-\cargdecl{Display *}{dpy},
-\cargdecl{XdbeBackBuffer}{buffer}
-\end{cfunction}
-% end marker
-
-\cfunctionname{XdbeGetBackBufferAttributes} returns the attributes associated
-with the specified buffer.
-
-The \libtypename{XdbeBackBufferAttributes} structure has the following fields:
-
-\begin{tabular}{lll}
-\typename{Window} & \argname{window} & window that buffer belongs to \\
-\end{tabular}
-
-If buffer is not a valid \libtypename{XdbeBackBuffer},
-window is set to \literal{None}.
-
-The returned \libtypename{XdbeBackBufferAttributes} structure can be
-freed with the Xlib function \cfunctionname{XFree}.
-\end{keeptogether}
-
-\begin{keeptogether}
-\subsection{Errors}
-
-The \libtypename{XdbeBufferError} structure has the following fields:
-
-\begin{tabular}{lll}
-\typename{int} & \argname{type} \\
-\typename{Display *} & \argname{display}& Display the event was read from\\
-\typename{XdbeBackBuffer} & \argname{buffer}& resource id \\
-\typename{unsigned long} & \argname{serial}& serial number of failed request\\
-\typename{unsigned char} & \argname{error\_code}& error base + \literal{XdbeBadBuffer}\\
-\typename{unsigned char} & \argname{request\_code}& Major op-code of failed request\\
-\typename{unsigned char} & \argname{minor\_code}& Minor op-code of failed request\\
-\end{tabular}
-\end{keeptogether}
-
-\pagebreak[4]
-\section{Acknowledgements}
-
-We wish to thank the following individuals who have contributed their
-time and talent toward shaping the DBE specification:
-
-T. Alex Chen, IBM;
-Peter Daifuku, Silicon Graphics, Inc.;
-Ian Elliott, Hewlett-Packard Company;
-Stephen Gildea, X Consortium, Inc.;
-Jim Graham, Sun;
-Larry Hare, AGE Logic;
-Jay Hersh, X Consortium, Inc.;
-Daryl Huff, Sun;
-Deron Dann Johnson, Sun;
-Louis Khouw, Sun;
-Mark Kilgard, Silicon Graphics, Inc.;
-Rob Lembree, Digital Equipment Corporation;
-Alan Ricker, Metheus;
-Michael Rosenblum, Digital Equipment Corporation;
-Bob Scheifler, X Consortium, Inc.;
-Larry Seiler, Digital Equipment Corporation;
-Jeanne Sparlin Smith, IBM;
-Jeff Stevenson, Hewlett-Packard Company;
-Walter Strand, Metheus;
-Ken Tidwell, Hewlett-Packard Company; and
-David P. Wiggins, X Consortium, Inc.
-
-Mark provided the impetus to start the DBE project. Ian wrote the
-first draft of the specification. David served as architect.
-
-\section{References}
-
-Jeffrey Friedberg, Larry Seiler, and Jeff Vroom, ``Multi-buffering Extension
-Specification Version 3.3.''
-
-Tim Glauert, Dave Carver, Jim Gettys, and David P. Wiggins,
-``X Synchronization Extension Version 3.0.''
-
-\end{document}