summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2003-10-24 23:05:41 +0000
committerKeith Packard <keithp@keithp.com>2003-10-24 23:05:41 +0000
commitfaa486b819f8b3088201923541a1c0a71efa249a (patch)
tree7daad510956ec72c1f848de81a732dd2fc28af3f
Initial revision
-rw-r--r--ChangeLog5
-rw-r--r--protocol145
2 files changed, 150 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..d4c4a8c
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,5 @@
+2003-10-24 Keith Packard <keithp@keithp.com>
+
+ * ChangeLog
+ * protocol
+ Initial protocol design imported
diff --git a/protocol b/protocol
new file mode 100644
index 0000000..823fffc
--- /dev/null
+++ b/protocol
@@ -0,0 +1,145 @@
+ Apportion X Extension (Axe)
+ Version 0.0
+ 2003-10-24
+ Keith Packard
+ keithp@keithp.com
+
+1. Introduction
+
+Many user interface operations would benefit from having pixel contents of
+window hierarchies available without respect to sibling and antecedent
+clipping. In addition, placing control over the composition of these pixel
+contents into a final screen image in an external application will enable
+a flexible system for dynamic application content presentation.
+
+2. Acknowledgements
+
+This small extension has been brewing for several years, contributors to
+both early prototypes and the final design include:
+
+ + Bill Haneman for motivating the ability to magnify occluded windows
+ with his work on accessibility
+
+ + Jim Gettys for key insights into the relationship between damage
+ events and per-window pixmap usage
+
+ + Mike Harris for the name
+
+3. Architecture
+
+The apportion extension provides two related mechanisms:
+
+ 1. Per-hierarchy storage. The rendering of an entire hierarchy of windows
+ is redirected to off-screen storage. The pixels of that hierarchy
+ are available whenever it is viewable. Storage is automatically
+ reallocated when the top level window changes size. Contents beyond
+ the geometry of the top window are not preserved.
+
+ 2. Automatic shadow update. When a hierarchy is rendered off-screen,
+ the X server provides an automatic mechanism for presenting those
+ contents within the parent window. The implementation is free to
+ make this update lag behind actual rendering operations by an
+ unspecified amount of time. This automatic update mechanism may
+ be disabled so that the parent window contents can be completely
+ determined by an external application.
+
+Per-hierarchy storage may be created for individual windows or for all
+children of a window. Manual shadow update may be selected by only a single
+application for each window; manual update may also be selected on a
+per-window basis or for each child of a window. Detecting when to update
+may be done with the Damage extension.
+
+The off-screen storage includes the window contents, it's borders and the
+contents of all decendents.
+
+4. Errors
+
+The apportion extension does not define any new errors.
+
+5. Types
+
+The apportion extension does not define any new datatypes.
+
+6. Events
+
+The apportion extension does not define any new events.
+
+7. Extension Initialization
+
+The client must negotiate the version of the extension before executing
+extension requests. Otherwise, the server will return BadRequest for any
+operations other than QueryVersion.
+
+ QueryVersion
+
+ client-major-version: CARD32
+ client-minor-version: CARD32
+
+ ->
+
+ major-version: CARD32
+ minor-version: CARD32
+
+ The client sends the highest supported version to the server and
+ the server sends the highest version it supports, but no higher than
+ the requested version. Major versions changes can introduce
+ incompatibilities in existing functionality, minor version
+ changes introduce only backward compatible changes. It is
+ the clients responsibility to ensure that the server supports
+ a version which is compatible with its expectations. Servers
+ are encouraged to support multiple versions of the extension.
+
+8. Hierarchy Redirection
+
+ RedirectWindow
+
+ window: Window
+ automatic-update: Bool
+
+ errors: Window, Access
+
+ The hierarchy starting at 'window' is directed to off-screen
+ storage. 'automatic-update' specifies whether the contents
+ are mirrored to the parent window automatically or not. Only
+ one client may specify this flag, another attempt will result in an
+ Access error. When all clients enabling redirection terminate,
+ the redirection will automatically be disabled.
+
+ RedirectSubwindows
+
+ window: Window
+ manual-update Bool
+
+ errors: Window, Access
+
+ Hierarchies starting at all current and future children of window
+ will be redirected as in RedirectWindow
+
+ UnredirectWindow:
+
+ window: Window
+
+ Redirection of the specified window will be terminated
+
+ UnredirectWindows:
+
+ window: Window
+
+ Redirection of all children of window will be terminated
+
+9. Clip lists
+
+ CreateRegionFromBorderClip
+
+ region: Region
+ window: Window
+
+ errors: Window, IDChoice
+
+ This request creates a region containing the "usual" border clip
+ value; that is the area of the window clipped against siblings and
+ the parent. This region can be used to restrict rendering to
+ suitable areas while updating only a single window. The region
+ is copied at the moment the request is executed; future changes
+ to the window hierarchy will not be reflected in this region.
+