From faa486b819f8b3088201923541a1c0a71efa249a Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 24 Oct 2003 23:05:41 +0000 Subject: Initial revision --- ChangeLog | 5 +++ protocol | 145 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 ChangeLog create mode 100644 protocol 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 + + * 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. + -- cgit v1.2.3 From 7cc591f9ffac4a01f7801d924beace89ed3460bb Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 28 Oct 2003 20:43:27 +0000 Subject: spelling mistake --- protocol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocol b/protocol index 823fffc..f75d528 100644 --- a/protocol +++ b/protocol @@ -50,7 +50,7 @@ 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. +contents of all descendants. 4. Errors -- cgit v1.2.3 From 00b320e307a997677e74c73f9c856e7b08bc20e2 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 29 Oct 2003 23:48:40 +0000 Subject: Define clipping while redirected --- ChangeLog | 5 +++++ protocol | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/ChangeLog b/ChangeLog index d4c4a8c..0d39d85 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-10-29 Keith Packard + + * protocol: + Define clipping while redirected + 2003-10-24 Keith Packard * ChangeLog diff --git a/protocol b/protocol index f75d528..6109b59 100644 --- a/protocol +++ b/protocol @@ -52,6 +52,27 @@ may be done with the Damage extension. The off-screen storage includes the window contents, it's borders and the contents of all descendants. +In automatic update mode, the X server is itself responsible for presenting +the child window contents within the parent. It seems reasonable, then, for +rendering to the parent window to be clipped so as not to interfere with any +child window content. In an environment with a mixure of manual and +automatic updating windows, rendering to the parent in the area nominally +occupied by a manual update window should be able to affect parent pixel +values in those areas, but such rendering should be clipped to automatic +update windows, and presumably to other manual update windows managed by +other applications. In any of these cases, it should be easy to ensure that +rendering has no effect on any non-redirected windows. + +Instead of attempting to define new clipping modes for rendering, the +Apportion extension instead defines ClipByChildren rendering to the parent +to exclude regions occupied by redirected windows (either automatic or +manual). The CreateRegionFromBorderClip request can be used along with +IncludeInferiors clipping modes to restrict manual shadow updates to the +apporpriate region of the screen. Bracketing operations with +GrabServer/UngrabServer will permit atomic sequences that can update the +screen without artifact. As all of these operations are asynchronous, +network latency should not adversely affect update latency. + 4. Errors The apportion extension does not define any new errors. -- cgit v1.2.3 From 5113df7e49393afb5d9199f030b6f4e025a54039 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 30 Oct 2003 04:31:19 +0000 Subject: autofoo Add protocol headers Use enum for update mode instead of bool --- AUTHORS | 0 COPYING | 22 ++++++++++ ChangeLog | 16 ++++++++ INSTALL | 8 ++++ Makefile.am | 37 +++++++++++++++++ NEWS | 0 README | 9 +++++ autogen.sh | 3 ++ composite.h | 44 ++++++++++++++++++++ compositeext.pc.in | 9 +++++ compositeproto.h | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 35 ++++++++++++++++ protocol | 6 +-- 13 files changed, 303 insertions(+), 3 deletions(-) create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 INSTALL create mode 100644 Makefile.am create mode 100644 NEWS create mode 100644 README create mode 100755 autogen.sh create mode 100644 composite.h create mode 100644 compositeext.pc.in create mode 100644 compositeproto.h create mode 100644 configure.ac diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..5b08aa7 --- /dev/null +++ b/COPYING @@ -0,0 +1,22 @@ +$Id: COPYING,v 1.1 2003-10-30 04:31:19 keithp Exp $ + +Copyright © 2001,2003 Keith Packard + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Keith Packard not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Keith Packard makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + diff --git a/ChangeLog b/ChangeLog index 0d39d85..5884363 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2003-10-29 Keith Packard + + * COPYING: + * INSTALL: + * Makefile.am: + * README: + * apportion.h: + * apportionext.pc.in: + * apportionproto.h: + * autogen.sh: + * configure.ac: + * protocol: + autofoo + Add protocol headers + Use enum for update mode instead of bool + 2003-10-29 Keith Packard * protocol: diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..b94098a --- /dev/null +++ b/INSTALL @@ -0,0 +1,8 @@ +Render is built with the traditional configure script: + + $ ./configure --prefix=/usr/X11R6 + +This should generate valid Makefiles, then: + + $ make + $ make install diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..f30b0e6 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,37 @@ +# +# $Id: Makefile.am,v 1.1 2003-10-30 04:31:19 keithp Exp $ +# +# Copyright © 2003 Keith Packard, Noah Levitt +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of Keith Packard not be used in +# advertising or publicity pertaining to distribution of the software without +# specific, written prior permission. Keith Packard makes no +# representations about the suitability of this software for any purpose. It +# is provided "as is" without express or implied warranty. +# +# KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +# EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +# DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +apportionextincludedir = $(includedir)/X11/extensions + +apportionextinclude_HEADERS = \ + apportionproto.h \ + apportion.h + +apportionextdocdir = $(datadir)/doc/apportionext +apportionextdoc_DATA = protocol + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = apportionext.pc + +EXTRA_DIST = autogen.sh apportionext.pc.in $(apportionextdoc_DATA) + diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/README b/README new file mode 100644 index 0000000..6b27bbc --- /dev/null +++ b/README @@ -0,0 +1,9 @@ + Apportion X Extension + Version 0.1 + 2003-10-29 + +This package contains header files and documentation for the apportion X +extension. Library and server implementations are separate. + +Keith Packard +keithp@keithp.com diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..b1376df --- /dev/null +++ b/autogen.sh @@ -0,0 +1,3 @@ +#! /bin/sh +autoreconf -v --install || exit 1 +./configure --enable-maintainer-mode "$@" diff --git a/composite.h b/composite.h new file mode 100644 index 0000000..a80eb33 --- /dev/null +++ b/composite.h @@ -0,0 +1,44 @@ +/* + * $Id: composite.h,v 1.1 2003-10-30 04:31:19 keithp Exp $ + * + * Copyright © 2003 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef _APPORTION_H_ +#define _APPORTION_H_ + +#include + +#define APPORTION_NAME "Apportion" +#define APPORTION_MAJOR 0 +#define APPORTION_MINOR 1 + +#define ApportionRedirectAutomatic 0 +#define ApportionRedirectManual 1 + +#define X_ApportionQueryVersion 0 +#define X_ApportionRedirectWindow 1 +#define X_ApportionRedirectSubwindows 2 +#define X_ApportionUnredirectWindow 3 +#define X_ApportionUnredirectSubwindows 4 +#define X_ApportionCreateRegionFromBorderClip 5 + +#endif /* _APPORTION_H_ */ diff --git a/compositeext.pc.in b/compositeext.pc.in new file mode 100644 index 0000000..bf2297a --- /dev/null +++ b/compositeext.pc.in @@ -0,0 +1,9 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: ApportionExt +Description: Apportion X extension headers +Version: @PACKAGE_VERSION@ +Cflags: -I${includedir} @APPORTIONEXT_CFLAGS@ diff --git a/compositeproto.h b/compositeproto.h new file mode 100644 index 0000000..0cec4e1 --- /dev/null +++ b/compositeproto.h @@ -0,0 +1,117 @@ +/* + * $Id: compositeproto.h,v 1.1 2003-10-30 04:31:19 keithp Exp $ + * + * Copyright © 2003 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef _APPORTIONPROTO_H_ +#define _APPORTIONPROTO_H_ + +#include +#include + +#define Window CARD32 +#define Region CARD32 + +/* + * requests and replies + */ +typedef struct { + CARD8 reqType; + CARD8 apportionReqType; + CARD16 length B16; + CARD32 majorVersion B32; + CARD32 minorVersion B32; +} xApportionQueryVersionReq; + +#define sz_xApportionQueryVersionReq 12 + +typedef struct { + BYTE type; /* X_Reply */ + BYTE pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 majorVersion B32; + CARD32 minorVersion B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; +} xApportionQueryVersionReply; + +#define sz_xApportionQueryVersionReply 32 + +typedef struct { + CARD8 reqType; + CARD8 apportionReqType; + CARD16 length B16; + Window window B32; + CARD8 update; + CARD8 pad1; + CARD16 pad2 B16; +} xApportionRedirectWindowReq; + +#define sz_xApportionRedirectWindowReq 12 + +typedef struct { + CARD8 reqType; + CARD8 apportionReqType; + CARD16 length B16; + Window window B32; + CARD8 update; + CARD8 pad1; + CARD16 pad2 B16; +} xApportionRedirectWindowsReq; + +#define sz_xApportionRedirectWindowsReq 12 + +typedef struct { + CARD8 reqType; + CARD8 apportionReqType; + CARD16 length B16; + Window window B32; +} xApportionUnredirectWindowReq; + +#define sz_xApportionUnredirectWindowReq 8 + +typedef struct { + CARD8 reqType; + CARD8 apportionReqType; + CARD16 length B16; + Window window B32; +} xApportionUnredirectWindowsReq; + +#define sz_xApportionUnredirectWindowsReq 8 + +typedef struct { + CARD8 reqType; + CARD8 apportionReqType; + CARD16 length B16; + Region region B32; + Window window B32; +} xApportionCreateRegionFromBorderClipReq; + +#define sz_xApportionCreateRegionFromBorderClipReq 12 + +#undef Window +#undef Region + +#endif /* _APPORTIONPROTO_H_ */ diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..ce4be88 --- /dev/null +++ b/configure.ac @@ -0,0 +1,35 @@ +dnl +dnl $Id: configure.ac,v 1.1 2003-10-30 04:31:19 keithp Exp $ +dnl +dnl Copyright © 2003 Keith Packard, Noah Levitt +dnl +dnl Permission to use, copy, modify, distribute, and sell this software and its +dnl documentation for any purpose is hereby granted without fee, provided that +dnl the above copyright notice appear in all copies and that both that +dnl copyright notice and this permission notice appear in supporting +dnl documentation, and that the name of Keith Packard not be used in +dnl advertising or publicity pertaining to distribution of the software without +dnl specific, written prior permission. Keith Packard makes no +dnl representations about the suitability of this software for any purpose. It +dnl is provided "as is" without express or implied warranty. +dnl +dnl KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +dnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +dnl EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +dnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +dnl DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +dnl TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +dnl PERFORMANCE OF THIS SOFTWARE. +dnl +dnl Process this file with autoconf to create configure. + +AC_PREREQ([2.57]) +AC_INIT([apportionext], [2.0], [keithp@keithp.com], apportionext) +AM_INIT_AUTOMAKE([dist-bzip2]) +AM_MAINTAINER_MODE + +PKG_CHECK_MODULES(APPORTIONEXT, xextensions fixesext) + +AC_OUTPUT([Makefile + apportionext.pc]) + diff --git a/protocol b/protocol index 6109b59..a130225 100644 --- a/protocol +++ b/protocol @@ -79,7 +79,7 @@ The apportion extension does not define any new errors. 5. Types -The apportion extension does not define any new datatypes. + UPDATETYPE { Automatic, Manual } 6. Events @@ -115,7 +115,7 @@ operations other than QueryVersion. RedirectWindow window: Window - automatic-update: Bool + update: UPDATETYPE errors: Window, Access @@ -129,7 +129,7 @@ operations other than QueryVersion. RedirectSubwindows window: Window - manual-update Bool + update UPDATETYPE errors: Window, Access -- cgit v1.2.3 From 0b7b69d3b678f584062ca352f60382325057d9f1 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 5 Nov 2003 05:39:58 +0000 Subject: Change name from Apportion to Composite Clarify that root cannot be redirected. Add more error values. --- COPYING | 4 ++-- ChangeLog | 15 +++++++++++++++ INSTALL | 2 +- Makefile.am | 18 +++++++++--------- README | 8 ++++---- composite.h | 30 +++++++++++++++--------------- compositeext.pc.in | 6 +++--- compositeproto.h | 50 +++++++++++++++++++++++++------------------------- configure.ac | 8 ++++---- protocol | 37 ++++++++++++++++++++++++++----------- 10 files changed, 104 insertions(+), 74 deletions(-) diff --git a/COPYING b/COPYING index 5b08aa7..4fbf9af 100644 --- a/COPYING +++ b/COPYING @@ -1,6 +1,6 @@ -$Id: COPYING,v 1.1 2003-10-30 04:31:19 keithp Exp $ +$Id: COPYING,v 1.2 2003-11-05 05:39:58 keithp Exp $ -Copyright © 2001,2003 Keith Packard +Copyright © 2003 Keith Packard Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that diff --git a/ChangeLog b/ChangeLog index 5884363..ae57758 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2003-11-04 Keith Packard + + * COPYING: + * INSTALL: + * Makefile.am: + * README: + * composite.h: + * compositeext.pc.in: + * compositeproto.h: + * configure.ac: + * protocol: + Change name from Apportion to Composite + Clarify that root cannot be redirected. + Add more error values. + 2003-10-29 Keith Packard * COPYING: diff --git a/INSTALL b/INSTALL index b94098a..64b284c 100644 --- a/INSTALL +++ b/INSTALL @@ -1,4 +1,4 @@ -Render is built with the traditional configure script: +CompositeExt is built with the traditional configure script: $ ./configure --prefix=/usr/X11R6 diff --git a/Makefile.am b/Makefile.am index f30b0e6..62c2a96 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,5 +1,5 @@ # -# $Id: Makefile.am,v 1.1 2003-10-30 04:31:19 keithp Exp $ +# $Id: Makefile.am,v 1.2 2003-11-05 05:39:58 keithp Exp $ # # Copyright © 2003 Keith Packard, Noah Levitt # @@ -21,17 +21,17 @@ # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -apportionextincludedir = $(includedir)/X11/extensions +compositeextincludedir = $(includedir)/X11/extensions -apportionextinclude_HEADERS = \ - apportionproto.h \ - apportion.h +compositeextinclude_HEADERS = \ + compositeproto.h \ + composite.h -apportionextdocdir = $(datadir)/doc/apportionext -apportionextdoc_DATA = protocol +compositeextdocdir = $(datadir)/doc/compositeext +compositeextdoc_DATA = protocol pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = apportionext.pc +pkgconfig_DATA = compositeext.pc -EXTRA_DIST = autogen.sh apportionext.pc.in $(apportionextdoc_DATA) +EXTRA_DIST = autogen.sh compositeext.pc.in $(compositeextdoc_DATA) diff --git a/README b/README index 6b27bbc..9c03568 100644 --- a/README +++ b/README @@ -1,8 +1,8 @@ - Apportion X Extension - Version 0.1 - 2003-10-29 + Composite Extension + Version 0.1 + 2003-11-04 -This package contains header files and documentation for the apportion X +This package contains header files and documentation for the composite extension. Library and server implementations are separate. Keith Packard diff --git a/composite.h b/composite.h index a80eb33..a6e1fc6 100644 --- a/composite.h +++ b/composite.h @@ -1,5 +1,5 @@ /* - * $Id: composite.h,v 1.1 2003-10-30 04:31:19 keithp Exp $ + * $Id: composite.h,v 1.2 2003-11-05 05:39:58 keithp Exp $ * * Copyright © 2003 Keith Packard * @@ -22,23 +22,23 @@ * PERFORMANCE OF THIS SOFTWARE. */ -#ifndef _APPORTION_H_ -#define _APPORTION_H_ +#ifndef _COMPOSITE_H_ +#define _COMPOSITE_H_ #include -#define APPORTION_NAME "Apportion" -#define APPORTION_MAJOR 0 -#define APPORTION_MINOR 1 +#define COMPOSITE_NAME "Composite" +#define COMPOSITE_MAJOR 0 +#define COMPOSITE_MINOR 1 -#define ApportionRedirectAutomatic 0 -#define ApportionRedirectManual 1 +#define CompositeRedirectAutomatic 0 +#define CompositeRedirectManual 1 -#define X_ApportionQueryVersion 0 -#define X_ApportionRedirectWindow 1 -#define X_ApportionRedirectSubwindows 2 -#define X_ApportionUnredirectWindow 3 -#define X_ApportionUnredirectSubwindows 4 -#define X_ApportionCreateRegionFromBorderClip 5 +#define X_CompositeQueryVersion 0 +#define X_CompositeRedirectWindow 1 +#define X_CompositeRedirectSubwindows 2 +#define X_CompositeUnredirectWindow 3 +#define X_CompositeUnredirectSubwindows 4 +#define X_CompositeCreateRegionFromBorderClip 5 -#endif /* _APPORTION_H_ */ +#endif /* _COMPOSITE_H_ */ diff --git a/compositeext.pc.in b/compositeext.pc.in index bf2297a..6e53f0b 100644 --- a/compositeext.pc.in +++ b/compositeext.pc.in @@ -3,7 +3,7 @@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ -Name: ApportionExt -Description: Apportion X extension headers +Name: CompositeExt +Description: Composite extension headers Version: @PACKAGE_VERSION@ -Cflags: -I${includedir} @APPORTIONEXT_CFLAGS@ +Cflags: -I${includedir} @COMPOSITEEXT_CFLAGS@ diff --git a/compositeproto.h b/compositeproto.h index 0cec4e1..005a371 100644 --- a/compositeproto.h +++ b/compositeproto.h @@ -1,5 +1,5 @@ /* - * $Id: compositeproto.h,v 1.1 2003-10-30 04:31:19 keithp Exp $ + * $Id: compositeproto.h,v 1.2 2003-11-05 05:39:58 keithp Exp $ * * Copyright © 2003 Keith Packard * @@ -22,11 +22,11 @@ * PERFORMANCE OF THIS SOFTWARE. */ -#ifndef _APPORTIONPROTO_H_ -#define _APPORTIONPROTO_H_ +#ifndef _COMPOSITEPROTO_H_ +#define _COMPOSITEPROTO_H_ #include -#include +#include #define Window CARD32 #define Region CARD32 @@ -36,13 +36,13 @@ */ typedef struct { CARD8 reqType; - CARD8 apportionReqType; + CARD8 compositeReqType; CARD16 length B16; CARD32 majorVersion B32; CARD32 minorVersion B32; -} xApportionQueryVersionReq; +} xCompositeQueryVersionReq; -#define sz_xApportionQueryVersionReq 12 +#define sz_xCompositeQueryVersionReq 12 typedef struct { BYTE type; /* X_Reply */ @@ -55,63 +55,63 @@ typedef struct { CARD32 pad3 B32; CARD32 pad4 B32; CARD32 pad5 B32; -} xApportionQueryVersionReply; +} xCompositeQueryVersionReply; -#define sz_xApportionQueryVersionReply 32 +#define sz_xCompositeQueryVersionReply 32 typedef struct { CARD8 reqType; - CARD8 apportionReqType; + CARD8 compositeReqType; CARD16 length B16; Window window B32; CARD8 update; CARD8 pad1; CARD16 pad2 B16; -} xApportionRedirectWindowReq; +} xCompositeRedirectWindowReq; -#define sz_xApportionRedirectWindowReq 12 +#define sz_xCompositeRedirectWindowReq 12 typedef struct { CARD8 reqType; - CARD8 apportionReqType; + CARD8 compositeReqType; CARD16 length B16; Window window B32; CARD8 update; CARD8 pad1; CARD16 pad2 B16; -} xApportionRedirectWindowsReq; +} xCompositeRedirectWindowsReq; -#define sz_xApportionRedirectWindowsReq 12 +#define sz_xCompositeRedirectWindowsReq 12 typedef struct { CARD8 reqType; - CARD8 apportionReqType; + CARD8 compositeReqType; CARD16 length B16; Window window B32; -} xApportionUnredirectWindowReq; +} xCompositeUnredirectWindowReq; -#define sz_xApportionUnredirectWindowReq 8 +#define sz_xCompositeUnredirectWindowReq 8 typedef struct { CARD8 reqType; - CARD8 apportionReqType; + CARD8 compositeReqType; CARD16 length B16; Window window B32; -} xApportionUnredirectWindowsReq; +} xCompositeUnredirectWindowsReq; -#define sz_xApportionUnredirectWindowsReq 8 +#define sz_xCompositeUnredirectWindowsReq 8 typedef struct { CARD8 reqType; - CARD8 apportionReqType; + CARD8 compositeReqType; CARD16 length B16; Region region B32; Window window B32; -} xApportionCreateRegionFromBorderClipReq; +} xCompositeCreateRegionFromBorderClipReq; -#define sz_xApportionCreateRegionFromBorderClipReq 12 +#define sz_xCompositeCreateRegionFromBorderClipReq 12 #undef Window #undef Region -#endif /* _APPORTIONPROTO_H_ */ +#endif /* _COMPOSITEPROTO_H_ */ diff --git a/configure.ac b/configure.ac index ce4be88..afc855a 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ dnl -dnl $Id: configure.ac,v 1.1 2003-10-30 04:31:19 keithp Exp $ +dnl $Id: configure.ac,v 1.2 2003-11-05 05:39:58 keithp Exp $ dnl dnl Copyright © 2003 Keith Packard, Noah Levitt dnl @@ -24,12 +24,12 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ([2.57]) -AC_INIT([apportionext], [2.0], [keithp@keithp.com], apportionext) +AC_INIT([compositeext], [2.0], [keithp@keithp.com], compositeext) AM_INIT_AUTOMAKE([dist-bzip2]) AM_MAINTAINER_MODE -PKG_CHECK_MODULES(APPORTIONEXT, xextensions fixesext) +PKG_CHECK_MODULES(COMPOSITEEXT, xextensions fixesext) AC_OUTPUT([Makefile - apportionext.pc]) + compositeext.pc]) diff --git a/protocol b/protocol index a130225..f338feb 100644 --- a/protocol +++ b/protocol @@ -1,6 +1,6 @@ - Apportion X Extension (Axe) - Version 0.0 - 2003-10-24 + Composite Extension + Version 0.1 + 2003-11-04 Keith Packard keithp@keithp.com @@ -20,14 +20,18 @@ both early prototypes and the final design include: + Bill Haneman for motivating the ability to magnify occluded windows with his work on accessibility + + Carsten Haitzler for Enlightenment, the original eye-candy window + manager which demonstrated that clever hacks are an awfully + close substitute for changes in the underlying system. + + Jim Gettys for key insights into the relationship between damage events and per-window pixmap usage - + Mike Harris for the name + + Mike Harris and Owen Taylor for figuring out what to call it. 3. Architecture -The apportion extension provides two related mechanisms: +The composite 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 @@ -64,7 +68,7 @@ other applications. In any of these cases, it should be easy to ensure that rendering has no effect on any non-redirected windows. Instead of attempting to define new clipping modes for rendering, the -Apportion extension instead defines ClipByChildren rendering to the parent +Composite extension instead defines ClipByChildren rendering to the parent to exclude regions occupied by redirected windows (either automatic or manual). The CreateRegionFromBorderClip request can be used along with IncludeInferiors clipping modes to restrict manual shadow updates to the @@ -75,7 +79,7 @@ network latency should not adversely affect update latency. 4. Errors -The apportion extension does not define any new errors. +The composite extension does not define any new errors. 5. Types @@ -83,7 +87,7 @@ The apportion extension does not define any new errors. 6. Events -The apportion extension does not define any new events. +The composite extension does not define any new events. 7. Extension Initialization @@ -117,7 +121,7 @@ operations other than QueryVersion. window: Window update: UPDATETYPE - errors: Window, Access + errors: Window, Access, Match The hierarchy starting at 'window' is directed to off-screen storage. 'automatic-update' specifies whether the contents @@ -126,6 +130,9 @@ operations other than QueryVersion. Access error. When all clients enabling redirection terminate, the redirection will automatically be disabled. + The root window may not be redirected. Doing so results in a Match + error. + RedirectSubwindows window: Window @@ -140,13 +147,21 @@ operations other than QueryVersion. window: Window - Redirection of the specified window will be terminated + errors: Window, Value + + Redirection of the specified window will be terminated. If + the specified window was not selected for redirection by the + current client, a 'Value' error results. UnredirectWindows: window: Window - Redirection of all children of window will be terminated + errors: Window, Value + + Redirection of all children of window will be terminated. If + the specified window was not selected for sub-redirection by the + current client, a 'Value' error results. 9. Clip lists -- cgit v1.2.3 From 11105d870631fe5f858291fbf167f1da400d7fa9 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 7 Nov 2003 04:21:01 +0000 Subject: Add update mode to Unredirect requests so clients can redirect multiple times (and then unredirect) Add CompositeNumberRequests Fix some typeos --- ChangeLog | 9 +++++++++ composite.h | 4 +++- compositeproto.h | 18 ++++++++++++------ 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index ae57758..5d01260 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2003-11-06 Keith Packard + + * composite.h: + * compositeproto.h: + Add update mode to Unredirect requests so clients + can redirect multiple times (and then unredirect) + Add CompositeNumberRequests + Fix some typeos + 2003-11-04 Keith Packard * COPYING: diff --git a/composite.h b/composite.h index a6e1fc6..12546e3 100644 --- a/composite.h +++ b/composite.h @@ -1,5 +1,5 @@ /* - * $Id: composite.h,v 1.2 2003-11-05 05:39:58 keithp Exp $ + * $Id: composite.h,v 1.3 2003-11-07 04:21:01 keithp Exp $ * * Copyright © 2003 Keith Packard * @@ -41,4 +41,6 @@ #define X_CompositeUnredirectSubwindows 4 #define X_CompositeCreateRegionFromBorderClip 5 +#define CompositeNumberRequests (X_CompositeCreateRegionFromBorderClip + 1) + #endif /* _COMPOSITE_H_ */ diff --git a/compositeproto.h b/compositeproto.h index 005a371..4f349d4 100644 --- a/compositeproto.h +++ b/compositeproto.h @@ -1,5 +1,5 @@ /* - * $Id: compositeproto.h,v 1.2 2003-11-05 05:39:58 keithp Exp $ + * $Id: compositeproto.h,v 1.3 2003-11-07 04:21:01 keithp Exp $ * * Copyright © 2003 Keith Packard * @@ -79,27 +79,33 @@ typedef struct { CARD8 update; CARD8 pad1; CARD16 pad2 B16; -} xCompositeRedirectWindowsReq; +} xCompositeRedirectSubwindowsReq; -#define sz_xCompositeRedirectWindowsReq 12 +#define sz_xCompositeRedirectSubwindowsReq 12 typedef struct { CARD8 reqType; CARD8 compositeReqType; CARD16 length B16; Window window B32; + CARD8 update; + CARD8 pad1; + CARD16 pad2 B16; } xCompositeUnredirectWindowReq; -#define sz_xCompositeUnredirectWindowReq 8 +#define sz_xCompositeUnredirectWindowReq 12 typedef struct { CARD8 reqType; CARD8 compositeReqType; CARD16 length B16; Window window B32; -} xCompositeUnredirectWindowsReq; + CARD8 update; + CARD8 pad1; + CARD16 pad2 B16; +} xCompositeUnredirectSubwindowsReq; -#define sz_xCompositeUnredirectWindowsReq 8 +#define sz_xCompositeUnredirectSubwindowsReq 12 typedef struct { CARD8 reqType; -- cgit v1.2.3 From 35a9c80252b35720c1afc5dc53153228e2084b10 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sun, 9 Nov 2003 07:07:21 +0000 Subject: Note that Manual Subwindows mode disables background painting. --- ChangeLog | 5 +++++ protocol | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5d01260..9aff92b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-11-08 Keith Packard + + * protocol: + Note that Manual Subwindows mode disables background painting. + 2003-11-06 Keith Packard * composite.h: diff --git a/protocol b/protocol index f338feb..a91996c 100644 --- a/protocol +++ b/protocol @@ -141,7 +141,9 @@ operations other than QueryVersion. errors: Window, Access Hierarchies starting at all current and future children of window - will be redirected as in RedirectWindow + will be redirected as in RedirectWindow. If update is Manual, + then painting of the window background during window manipulation + and ClearArea requests is inhibited. UnredirectWindow: -- cgit v1.2.3 From 0acceb62100f3acb3a00615c51bfd8e3f57e3ff9 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Tue, 11 Nov 2003 18:34:48 +0000 Subject: Updated .cvsignore --- .cvsignore | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .cvsignore diff --git a/.cvsignore b/.cvsignore new file mode 100644 index 0000000..0fd66a9 --- /dev/null +++ b/.cvsignore @@ -0,0 +1,12 @@ +Makefile +Makefile.in +aclocal.m4 +autom4te.cache +compositeext.pc +config.log +config.status +configure +install-sh +missing +mkinstalldirs + -- cgit v1.2.3 From cad37f16480f8f3f51e5dd9d3b3314ec8f73cee9 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Thu, 15 Jan 2004 03:42:08 +0000 Subject: Tag release 2.0 for first freedesktop.org clientside release. --- ChangeLog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ChangeLog b/ChangeLog index 9aff92b..15c239e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2004-01-15 Daniel Stone + * Tag release 2.0 for first freedesktop.org clientside release. + 2003-11-08 Keith Packard * protocol: -- cgit v1.2.3 From 47c46ad42a57d1dc8f2cf2e9e5d8b1478e75cd3b Mon Sep 17 00:00:00 2001 From: Jim Gettys Date: Tue, 3 Feb 2004 20:42:46 +0000 Subject: Add author's information --- AUTHORS | 1 + ChangeLog | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/AUTHORS b/AUTHORS index e69de29..8e18f9b 100644 --- a/AUTHORS +++ b/AUTHORS @@ -0,0 +1 @@ +Keith Packard, HP diff --git a/ChangeLog b/ChangeLog index 15c239e..f5a6548 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-02-03 Jim Gettys + + * AUTHORS: needed author's attribution + 2004-01-15 Daniel Stone * Tag release 2.0 for first freedesktop.org clientside release. -- cgit v1.2.3 From 19bb2c38370f5ef9296d451970f93e570b5a8546 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Sun, 27 Jun 2004 07:23:56 +0000 Subject: Fix some apostrophe issues. --- ChangeLog | 5 +++++ protocol | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index f5a6548..a8b2c12 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-06-27 root + + * protocol: + Fix some apostrophe issues. + 2004-02-03 Jim Gettys * AUTHORS: needed author's attribution diff --git a/protocol b/protocol index a91996c..94b073e 100644 --- a/protocol +++ b/protocol @@ -53,7 +53,7 @@ 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 +The off-screen storage includes the window contents, its borders and the contents of all descendants. In automatic update mode, the X server is itself responsible for presenting @@ -110,7 +110,7 @@ operations other than QueryVersion. 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 + the client's 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. -- cgit v1.2.3 From 734331f433e1d853aba942e17b3ed3efb0d972ab Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 8 Jul 2004 07:20:55 +0000 Subject: Add NameWindowPixmap request. Bump protocol to 0.2 --- ChangeLog | 10 +++++++++- composite.h | 7 ++++--- compositeproto.h | 14 +++++++++++++- protocol | 32 ++++++++++++++++++++++++++++++-- 4 files changed, 56 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index a8b2c12..1dd908e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,12 @@ -2004-06-27 root +2004-07-08 Keith Packard + + * composite.h: + * compositeproto.h: + * protocol: + Add NameWindowPixmap request. + Bump protocol to 0.2 + +2004-06-27 Eric Anholt * protocol: Fix some apostrophe issues. diff --git a/composite.h b/composite.h index 12546e3..4ba6b45 100644 --- a/composite.h +++ b/composite.h @@ -1,5 +1,5 @@ /* - * $Id: composite.h,v 1.3 2003-11-07 04:21:01 keithp Exp $ + * $Id: composite.h,v 1.4 2004-07-08 07:20:55 keithp Exp $ * * Copyright © 2003 Keith Packard * @@ -29,7 +29,7 @@ #define COMPOSITE_NAME "Composite" #define COMPOSITE_MAJOR 0 -#define COMPOSITE_MINOR 1 +#define COMPOSITE_MINOR 2 #define CompositeRedirectAutomatic 0 #define CompositeRedirectManual 1 @@ -40,7 +40,8 @@ #define X_CompositeUnredirectWindow 3 #define X_CompositeUnredirectSubwindows 4 #define X_CompositeCreateRegionFromBorderClip 5 +#define X_CompositeNameWindowPixmap 6 -#define CompositeNumberRequests (X_CompositeCreateRegionFromBorderClip + 1) +#define CompositeNumberRequests (X_CompositeNameWindowPixmap + 1) #endif /* _COMPOSITE_H_ */ diff --git a/compositeproto.h b/compositeproto.h index 4f349d4..bd8999d 100644 --- a/compositeproto.h +++ b/compositeproto.h @@ -1,5 +1,5 @@ /* - * $Id: compositeproto.h,v 1.3 2003-11-07 04:21:01 keithp Exp $ + * $Id: compositeproto.h,v 1.4 2004-07-08 07:20:55 keithp Exp $ * * Copyright © 2003 Keith Packard * @@ -117,6 +117,18 @@ typedef struct { #define sz_xCompositeCreateRegionFromBorderClipReq 12 +/* Version 0.2 additions */ + +typedef struct { + CARD8 reqType; + CARD8 compositeReqType; + CARD16 length; + Window window B32; + Pixmap pixmap B32; +} xCompositeNameWindowPixmapReq; + +#define sz_xCompositeNameWindowPixmapReq 12 + #undef Window #undef Region diff --git a/protocol b/protocol index 94b073e..1479676 100644 --- a/protocol +++ b/protocol @@ -1,6 +1,6 @@ Composite Extension - Version 0.1 - 2003-11-04 + Version 0.2 + 2004-7-8 Keith Packard keithp@keithp.com @@ -56,6 +56,17 @@ may be done with the Damage extension. The off-screen storage includes the window contents, its borders and the contents of all descendants. +Version 0.2 of the protocol introduces a mechanism for associating an XID +with the off-screen pixmap used to store these contents. This can be used +to hold onto window contents after the window is unmapped (and hence animate +it's disappearance), and also to access the border of the window, which is +not reachable through the Window ID itself. A new pixmap is created each +time the window is mapped or resized; as these events are nicely signalled +with existing events, no additional notification is needed. The old pixmap +will remain allocated as long as the Pixmap ID is left valid, it is +important that the client use the FreePixmap request when it is done with +the contents and to create a new name for the newly allocated pixmap. + In automatic update mode, the X server is itself responsible for presenting the child window contents within the parent. It seems reasonable, then, for rendering to the parent window to be clipped so as not to interfere with any @@ -181,3 +192,20 @@ operations other than QueryVersion. is copied at the moment the request is executed; future changes to the window hierarchy will not be reflected in this region. +10. Associating a Pixmap ID with the off-screen storage (0.2 and later) + + NameWindowPixmap + + window: Window + pixmap: Pixmap + + errors: Window, Match, IDChoice + + This request makes 'pixmap' a reference to the off-screen storage + for 'window'. This pixmap will remain allocated until freed, even + if 'window' is unmapped, reconfigured or destroyed. However, + 'window' will get a new pixmap allocated each time it is + mapped or resized, so this request will need to be reinvoked for + the client to continue to refer to the storage holding the current + window contents. Generates a 'Match' error if 'window' is not + redirected. -- cgit v1.2.3 From 90d453e5ab0cd140e936c71c118e442f6f6563f7 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Mon, 3 Jan 2005 05:16:04 +0000 Subject: New autogen.sh from Thomas Fitzsimmons that works with srcdir != objdir. --- autogen.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/autogen.sh b/autogen.sh index b1376df..904cd67 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,3 +1,12 @@ #! /bin/sh + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. + +ORIGDIR=`pwd` +cd $srcdir + autoreconf -v --install || exit 1 -./configure --enable-maintainer-mode "$@" +cd $ORIGDIR || exit $? + +$srcdir/configure --enable-maintainer-mode "$@" -- cgit v1.2.3 From 7388d4f6dd9e0c71d79c33905135622be15ccd13 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 20 Feb 2006 18:41:15 +0000 Subject: Update to include CTR --- protocol | 159 +++++++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 120 insertions(+), 39 deletions(-) diff --git a/protocol b/protocol index 1479676..779db06 100644 --- a/protocol +++ b/protocol @@ -1,6 +1,6 @@ Composite Extension - Version 0.2 - 2004-7-8 + Version 0.3 + 2006-1-22 Keith Packard keithp@keithp.com @@ -8,7 +8,7 @@ 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 +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. @@ -29,65 +29,78 @@ both early prototypes and the final design include: + Mike Harris and Owen Taylor for figuring out what to call it. + + Deron Johnson for the Looking Glass implementation and + a prototype of the coordinate transformation mechanism. + 3. Architecture -The composite extension provides two related mechanisms: +The composite extension provides three 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 + 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, + 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 + 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 + 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. + 3. External parent - child pointer coordinate transformation. + When a hierarchy is under manual compositing, the relationship + of coordinates within the parent to those in the child may + not be known within the X server. This mechanism provides + for redirection of these transformations through a client. + 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 +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 +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, its borders and the contents of all descendants. Version 0.2 of the protocol introduces a mechanism for associating an XID -with the off-screen pixmap used to store these contents. This can be used +with the off-screen pixmap used to store these contents. This can be used to hold onto window contents after the window is unmapped (and hence animate it's disappearance), and also to access the border of the window, which is -not reachable through the Window ID itself. A new pixmap is created each +not reachable through the Window ID itself. A new pixmap is created each time the window is mapped or resized; as these events are nicely signalled -with existing events, no additional notification is needed. The old pixmap +with existing events, no additional notification is needed. The old pixmap will remain allocated as long as the Pixmap ID is left valid, it is important that the client use the FreePixmap request when it is done with the contents and to create a new name for the newly allocated pixmap. In automatic update mode, the X server is itself responsible for presenting -the child window contents within the parent. It seems reasonable, then, for +the child window contents within the parent. It seems reasonable, then, for rendering to the parent window to be clipped so as not to interfere with any -child window content. In an environment with a mixure of manual and +child window content. In an environment with a mixure of manual and automatic updating windows, rendering to the parent in the area nominally occupied by a manual update window should be able to affect parent pixel values in those areas, but such rendering should be clipped to automatic update windows, and presumably to other manual update windows managed by -other applications. In any of these cases, it should be easy to ensure that +other applications. In any of these cases, it should be easy to ensure that rendering has no effect on any non-redirected windows. Instead of attempting to define new clipping modes for rendering, the Composite extension instead defines ClipByChildren rendering to the parent to exclude regions occupied by redirected windows (either automatic or -manual). The CreateRegionFromBorderClip request can be used along with +manual). The CreateRegionFromBorderClip request can be used along with IncludeInferiors clipping modes to restrict manual shadow updates to the -apporpriate region of the screen. Bracketing operations with +apporpriate region of the screen. Bracketing operations with GrabServer/UngrabServer will permit atomic sequences that can update the -screen without artifact. As all of these operations are asynchronous, +screen without artifact. As all of these operations are asynchronous, network latency should not adversely affect update latency. +Version 0.3 of the protocol adds the coordinate transformation redirection +portions of the protocol which externalize the relationship between +parent and child positions with respect to pointer coordinates. + 4. Errors The composite extension does not define any new errors. @@ -96,14 +109,42 @@ The composite extension does not define any new errors. UPDATETYPE { Automatic, Manual } + CompositeCoordinate + child: Window + x, y: CARD16 + 6. Events -The composite extension does not define any new events. +Version 0.3 of the Composite protocol defines one new event + + TransformCoordinateNotify + + subtype: COORDINATEEVENT + window: Window + child: Window + time: Timestamp + serialNumber: CARD32 + count: CARD32 + x, y: INT16 + + This event is delivered to the client requesting for coordinate + redirection for 'window'. 'x' and 'y' are a location in 'child' if + not None, else in 'window'. 'time' is the time of any related + pointer event. 'serialNumber' serves to sequence transformations. + 'count' indicates the number of events still to be delivered for + 'window' to satisfy a particular operation within the server + + The client must respond to this event with a suitable + TransformCoordinate request that includes matching 'window', 'child' + and serialNumber fields. + + 'serialNumber' may be repeated in multiple events, indicating that + the server needs to redo the same transformation for some reason. 7. Extension Initialization The client must negotiate the version of the extension before executing -extension requests. Otherwise, the server will return BadRequest for any +extension requests. Otherwise, the server will return BadRequest for any operations other than QueryVersion. QueryVersion @@ -118,11 +159,11 @@ operations other than QueryVersion. 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 + the requested version. Major versions changes can introduce incompatibilities in existing functionality, minor version - changes introduce only backward compatible changes. It is + changes introduce only backward compatible changes. It is the client's responsibility to ensure that the server supports - a version which is compatible with its expectations. Servers + a version which is compatible with its expectations. Servers are encouraged to support multiple versions of the extension. 8. Hierarchy Redirection @@ -135,13 +176,13 @@ operations other than QueryVersion. errors: Window, Access, Match 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 + 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, + Access error. When all clients enabling redirection terminate, the redirection will automatically be disabled. - The root window may not be redirected. Doing so results in a Match + The root window may not be redirected. Doing so results in a Match error. RedirectSubwindows @@ -152,7 +193,7 @@ operations other than QueryVersion. errors: Window, Access Hierarchies starting at all current and future children of window - will be redirected as in RedirectWindow. If update is Manual, + will be redirected as in RedirectWindow. If update is Manual, then painting of the window background during window manipulation and ClearArea requests is inhibited. @@ -162,7 +203,7 @@ operations other than QueryVersion. errors: Window, Value - Redirection of the specified window will be terminated. If + Redirection of the specified window will be terminated. If the specified window was not selected for redirection by the current client, a 'Value' error results. @@ -172,7 +213,7 @@ operations other than QueryVersion. errors: Window, Value - Redirection of all children of window will be terminated. If + Redirection of all children of window will be terminated. If the specified window was not selected for sub-redirection by the current client, a 'Value' error results. @@ -187,8 +228,8 @@ operations other than QueryVersion. 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 + 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. @@ -202,10 +243,50 @@ operations other than QueryVersion. errors: Window, Match, IDChoice This request makes 'pixmap' a reference to the off-screen storage - for 'window'. This pixmap will remain allocated until freed, even - if 'window' is unmapped, reconfigured or destroyed. However, + for 'window'. This pixmap will remain allocated until freed, even + if 'window' is unmapped, reconfigured or destroyed. However, 'window' will get a new pixmap allocated each time it is mapped or resized, so this request will need to be reinvoked for the client to continue to refer to the storage holding the current - window contents. Generates a 'Match' error if 'window' is not + window contents. Generates a 'Match' error if 'window' is not redirected. + +11. External coordinate transformation (0.3 and later) + + RedirectCoordinate + + window: Window + redirect: BOOL + + errors: Window, Access + + If 'redirect' is TRUE, the requesting client is placed in charge of + coordinate transformations between 'window' and its children. If + 'redirect' is FALSE, any such redirection is disabled. Any + transformations needed by the server will be delivered to the + requesting client in TransformCoordinateNotify events and the + requesting client must reply with matching TransformCoordinate + requests for the server to continue with the operation. + + Generates an 'Access' error if another client has + redirected coordinates for 'window'. + + TransformCoordinate + + window: Window + serialNumber: CARD32 + x, y: INT16 + coordinates: LISTofCompositeCoordinate + + This provides the transformation data needed by the server for a + single TransformCoordinateNotify event. 'serialNumber' must match + the serial number delivered in the event. 'x' and 'y' represent the + coordinate from the event relative to the 'window'. 'coordinates' + represent the coordinate from the event relative to each child + listed. Any children not listed in 'coordinates' are given the + default transformation using the child window position within the + parent as a simple translation. + + The result of this is that any pointer data seen by means of + the protocol will appear to reflect the transformation + performed by this request. -- cgit v1.2.3 From 369d28141b1b296abeb4365b5c57846d72faeb82 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 24 Feb 2006 02:01:10 +0100 Subject: Paste Xorg changes on top of historical xlibs repository --- ChangeLog | 5 +++++ Makefile.am | 19 +++++++++---------- compositeext.pc.in | 9 --------- compositeproto.pc.in | 9 +++++++++ configure.ac | 8 ++++---- 5 files changed, 27 insertions(+), 23 deletions(-) delete mode 100644 compositeext.pc.in create mode 100644 compositeproto.pc.in diff --git a/ChangeLog b/ChangeLog index 1dd908e..58e8021 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-12-14 Kevin E. Martin + + * configure.ac: + Update package version number for final X11R7 release candidate. + 2004-07-08 Keith Packard * composite.h: diff --git a/Makefile.am b/Makefile.am index 62c2a96..7b036ab 100644 --- a/Makefile.am +++ b/Makefile.am @@ -21,17 +21,16 @@ # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -compositeextincludedir = $(includedir)/X11/extensions - -compositeextinclude_HEADERS = \ - compositeproto.h \ - composite.h - -compositeextdocdir = $(datadir)/doc/compositeext -compositeextdoc_DATA = protocol +compositedir = $(includedir)/X11/extensions +composite_HEADERS = \ + composite.h \ + compositeproto.h pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = compositeext.pc +pkgconfig_DATA = compositeproto.pc + +compositedocdir = $(datadir)/doc/Composite +compositedoc_DATA = protocol -EXTRA_DIST = autogen.sh compositeext.pc.in $(compositeextdoc_DATA) +EXTRA_DIST = autogen.sh compositeproto.pc.in $(compositeextdoc_DATA) diff --git a/compositeext.pc.in b/compositeext.pc.in deleted file mode 100644 index 6e53f0b..0000000 --- a/compositeext.pc.in +++ /dev/null @@ -1,9 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: CompositeExt -Description: Composite extension headers -Version: @PACKAGE_VERSION@ -Cflags: -I${includedir} @COMPOSITEEXT_CFLAGS@ diff --git a/compositeproto.pc.in b/compositeproto.pc.in new file mode 100644 index 0000000..6e53f0b --- /dev/null +++ b/compositeproto.pc.in @@ -0,0 +1,9 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: CompositeExt +Description: Composite extension headers +Version: @PACKAGE_VERSION@ +Cflags: -I${includedir} @COMPOSITEEXT_CFLAGS@ diff --git a/configure.ac b/configure.ac index afc855a..8f34ebc 100644 --- a/configure.ac +++ b/configure.ac @@ -24,12 +24,12 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ([2.57]) -AC_INIT([compositeext], [2.0], [keithp@keithp.com], compositeext) -AM_INIT_AUTOMAKE([dist-bzip2]) +AC_INIT([COmpositeProto], [0.2.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE -PKG_CHECK_MODULES(COMPOSITEEXT, xextensions fixesext) +XORG_RELEASE_VERSION AC_OUTPUT([Makefile - compositeext.pc]) + compositeproto.pc]) -- cgit v1.2.3 From 694da3931be9bb03e23e4fbaf54d331c2202b2fc Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 24 Feb 2006 02:01:54 +0100 Subject: Add .gitignore --- .gitignore | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..521ba35 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +Makefile +Makefile.in +aclocal.m4 +autom4te.cache +compositeproto.pc +config.log +config.status +configure +install-sh +missing -- cgit v1.2.3 From 1d43eaf21b32fef4aba8a58dee323344b7f48d16 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 24 Feb 2006 02:03:25 +0100 Subject: Remove .cvsignore --- .cvsignore | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 .cvsignore diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index 0fd66a9..0000000 --- a/.cvsignore +++ /dev/null @@ -1,12 +0,0 @@ -Makefile -Makefile.in -aclocal.m4 -autom4te.cache -compositeext.pc -config.log -config.status -configure -install-sh -missing -mkinstalldirs - -- cgit v1.2.3 From 8e0790045d33525ec182afd3997014b46ef77b66 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 24 Feb 2006 02:06:13 +0100 Subject: Clean up mistakes integrating xorg changes --- compositeproto.pc.in | 2 +- configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/compositeproto.pc.in b/compositeproto.pc.in index 6e53f0b..6348022 100644 --- a/compositeproto.pc.in +++ b/compositeproto.pc.in @@ -6,4 +6,4 @@ includedir=@includedir@ Name: CompositeExt Description: Composite extension headers Version: @PACKAGE_VERSION@ -Cflags: -I${includedir} @COMPOSITEEXT_CFLAGS@ +Cflags: -I${includedir} diff --git a/configure.ac b/configure.ac index 8f34ebc..4cac3b7 100644 --- a/configure.ac +++ b/configure.ac @@ -24,7 +24,7 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ([2.57]) -AC_INIT([COmpositeProto], [0.2.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AC_INIT([CompositeProto], [0.2.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE -- cgit v1.2.3 From 565c0bcc569f5ab9114314185316fe2129aa5a3e Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 24 Feb 2006 02:55:19 +0100 Subject: Add coordinate transform redirect protocol bits --- composite.h | 12 +++++++++--- compositeproto.h | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 4 deletions(-) diff --git a/composite.h b/composite.h index 4ba6b45..223a7c9 100644 --- a/composite.h +++ b/composite.h @@ -1,5 +1,5 @@ /* - * $Id: composite.h,v 1.4 2004-07-08 07:20:55 keithp Exp $ + * $Id: composite.h,v 1.4 2004/07/08 07:20:55 keithp Exp $ * * Copyright © 2003 Keith Packard * @@ -29,7 +29,7 @@ #define COMPOSITE_NAME "Composite" #define COMPOSITE_MAJOR 0 -#define COMPOSITE_MINOR 2 +#define COMPOSITE_MINOR 3 #define CompositeRedirectAutomatic 0 #define CompositeRedirectManual 1 @@ -41,7 +41,13 @@ #define X_CompositeUnredirectSubwindows 4 #define X_CompositeCreateRegionFromBorderClip 5 #define X_CompositeNameWindowPixmap 6 +#define X_CompositeRedirectCoordinate 7 +#define X_CompositeTransformCoordinate 8 -#define CompositeNumberRequests (X_CompositeNameWindowPixmap + 1) +#define CompositeNumberRequests (X_CompositeTransformCoordinate + 1) + +#define CompositeTransformCoordinateNotify 0 + +#define CompositeNumberEvents 1 #endif /* _COMPOSITE_H_ */ diff --git a/compositeproto.h b/compositeproto.h index bd8999d..6b391f8 100644 --- a/compositeproto.h +++ b/compositeproto.h @@ -1,5 +1,5 @@ /* - * $Id: compositeproto.h,v 1.4 2004-07-08 07:20:55 keithp Exp $ + * $Id: compositeproto.h,v 1.4 2004/07/08 07:20:55 keithp Exp $ * * Copyright © 2003 Keith Packard * @@ -129,6 +129,54 @@ typedef struct { #define sz_xCompositeNameWindowPixmapReq 12 +/* Version 0.3 additions */ + +typedef struct { + CARD8 reqType; + CARD8 compositeReqType; + CARD16 length; + Window window B32; + BOOL redirect; + BYTE unused1; + CARD16 unused2 B16; +} xCompositeRedirectCoordinateReq; + +#define sz_xCompositeRedirectCoordinateReq 12 + +typedef struct { + CARD8 type; + CARD8 subtype; /* XXX use this? */ + CARD16 sequenceNumber B16; + Time time B32; + Window window B32; + Window child B32; + CARD32 serialNumber B32; + CARD32 count B32; + CARD16 x B16; + CARD16 y B16; + CARD32 pad1 B32; +} xCompositeTransformCoordinateNotifyEvent; + +typedef struct { + Window window B32; + CARD16 x B16; + CARD16 y B16; +} xCompositeCoordinate; + +#define sz_xCompositeCoordinate 8 + +typedef struct { + CARD8 reqType; + CARD8 compositeReqType; + CARD16 length; + Window window B32; + CARD32 serialNumber B32; + CARD16 x B16; + CARD16 y B16; +} xCompositeTransformCoordinateReq; + +#define sz_xCompositeTransformCoordinateReq 16 + #undef Window #undef Region -- cgit v1.2.3 From ba9ca99638fac157b126a2d9a3e57385bad32998 Mon Sep 17 00:00:00 2001 From: Deron Date: Fri, 31 Mar 2006 03:29:42 -0800 Subject: Sync'd with modular proto/Composite (Version 0.3 definitions). Also changed CTR definitions to Version 0.4 and increased the request numbers to be above those of Version 0.3. --- ChangeLog | 8 ++++++++ composite.h | 26 ++++++++++++++++++++++++-- compositeproto.h | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 2 +- 4 files changed, 89 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 58e8021..89c8b5b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-3-30 Deron Johnson + + * composite.h + * compositeproto.h + * configure.ac + Composite Version 0.3: CompositeGetOverlayWindow, CompositeReleaseOverlayWindow + Moved Coordinate Transform Redirect defines to 0.4 and bumped request numbers + 2005-12-14 Kevin E. Martin * configure.ac: diff --git a/composite.h b/composite.h index 223a7c9..009007b 100644 --- a/composite.h +++ b/composite.h @@ -1,6 +1,26 @@ /* * $Id: composite.h,v 1.4 2004/07/08 07:20:55 keithp Exp $ * + * Copyright © 2006 Sun Microsystems + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Sun Microsystems not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Sun Microsystems makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * * Copyright © 2003 Keith Packard * * Permission to use, copy, modify, distribute, and sell this software and its @@ -41,8 +61,10 @@ #define X_CompositeUnredirectSubwindows 4 #define X_CompositeCreateRegionFromBorderClip 5 #define X_CompositeNameWindowPixmap 6 -#define X_CompositeRedirectCoordinate 7 -#define X_CompositeTransformCoordinate 8 +#define X_CompositeGetOverlayWindow 7 +#define X_CompositeReleaseOverlayWindow 8 +#define X_CompositeRedirectCoordinate 9 +#define X_CompositeTransformCoordinate 10 #define CompositeNumberRequests (X_CompositeTransformCoordinate + 1) diff --git a/compositeproto.h b/compositeproto.h index 6b391f8..b7c605b 100644 --- a/compositeproto.h +++ b/compositeproto.h @@ -1,6 +1,27 @@ /* * $Id: compositeproto.h,v 1.4 2004/07/08 07:20:55 keithp Exp $ * + * + * Copyright © 2006 Sun Microsystems + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Sun Microsystems not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Sun Microsystems makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * * Copyright © 2003 Keith Packard * * Permission to use, copy, modify, distribute, and sell this software and its @@ -131,6 +152,41 @@ typedef struct { /* Version 0.3 additions */ +typedef struct { + CARD8 reqType; + CARD8 compositeReqType; + CARD16 length B16; + Window window B32; +} xCompositeGetOverlayWindowReq; + +#define sz_xCompositeGetOverlayWindowReq sizeof(xCompositeGetOverlayWindowReq) + +typedef struct { + BYTE type; /* X_Reply */ + BYTE pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + Window overlayWin B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xCompositeGetOverlayWindowReply; + +#define sz_xCompositeGetOverlayWindowReply sizeof(xCompositeGetOverlayWindowReply) + +typedef struct { + CARD8 reqType; + CARD8 compositeReqType; + CARD16 length B16; + Window window B32; +} xCompositeReleaseOverlayWindowReq; + +#define sz_xCompositeReleaseOverlayWindowReq sizeof(xCompositeReleaseOverlayWindowReq) + +/* Version 0.4 additions */ + typedef struct { CARD8 reqType; CARD8 compositeReqType; diff --git a/configure.ac b/configure.ac index 4cac3b7..581ad12 100644 --- a/configure.ac +++ b/configure.ac @@ -24,7 +24,7 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ([2.57]) -AC_INIT([CompositeProto], [0.2.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AC_INIT([CompositeProto], [0.3], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE -- cgit v1.2.3 From 5ecbf06cb7786009e8e1547f4bc2b0640599f655 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 15 Aug 2006 14:30:32 -0700 Subject: Correct the spelling of compositedocdir_DATA. Otherwise automake complains. --- Makefile.am | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index 7b036ab..eca9e8e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -32,5 +32,4 @@ pkgconfig_DATA = compositeproto.pc compositedocdir = $(datadir)/doc/Composite compositedoc_DATA = protocol -EXTRA_DIST = autogen.sh compositeproto.pc.in $(compositeextdoc_DATA) - +EXTRA_DIST = autogen.sh compositeproto.pc.in $(compositedoc_DATA) -- cgit v1.2.3 From 34251361a60c9e0c0f3c51416985e067c2aa255a Mon Sep 17 00:00:00 2001 From: Aaron Plattner Date: Tue, 5 Dec 2006 12:39:15 -0800 Subject: Have NameWindowPixmap return a Match error on unrealized windows. --- protocol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocol b/protocol index 779db06..aab857b 100644 --- a/protocol +++ b/protocol @@ -249,7 +249,7 @@ operations other than QueryVersion. mapped or resized, so this request will need to be reinvoked for the client to continue to refer to the storage holding the current window contents. Generates a 'Match' error if 'window' is not - redirected. + redirected or is not visible. 11. External coordinate transformation (0.3 and later) -- cgit v1.2.3 From ea2c1d120e58e3eb5f2d8eedb3c32b2cfa052366 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 9 Jan 2007 09:46:31 -0800 Subject: Move composite protocol description to the new canonical location/name. --- Makefile.am | 4 +- compositeproto.txt | 292 +++++++++++++++++++++++++++++++++++++++++++++++++++++ protocol | 292 ----------------------------------------------------- 3 files changed, 294 insertions(+), 294 deletions(-) create mode 100644 compositeproto.txt delete mode 100644 protocol diff --git a/Makefile.am b/Makefile.am index eca9e8e..dfc4a1c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -29,7 +29,7 @@ composite_HEADERS = \ pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = compositeproto.pc -compositedocdir = $(datadir)/doc/Composite -compositedoc_DATA = protocol +compositedocdir = $(datadir)/doc/$(PACKAGE) +compositedoc_DATA = compositeproto.txt EXTRA_DIST = autogen.sh compositeproto.pc.in $(compositedoc_DATA) diff --git a/compositeproto.txt b/compositeproto.txt new file mode 100644 index 0000000..aab857b --- /dev/null +++ b/compositeproto.txt @@ -0,0 +1,292 @@ + Composite Extension + Version 0.3 + 2006-1-22 + 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 + + + Carsten Haitzler for Enlightenment, the original eye-candy window + manager which demonstrated that clever hacks are an awfully + close substitute for changes in the underlying system. + + + Jim Gettys for key insights into the relationship between damage + events and per-window pixmap usage + + + Mike Harris and Owen Taylor for figuring out what to call it. + + + Deron Johnson for the Looking Glass implementation and + a prototype of the coordinate transformation mechanism. + +3. Architecture + +The composite extension provides three 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. + + 3. External parent - child pointer coordinate transformation. + When a hierarchy is under manual compositing, the relationship + of coordinates within the parent to those in the child may + not be known within the X server. This mechanism provides + for redirection of these transformations through a client. + +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, its borders and the +contents of all descendants. + +Version 0.2 of the protocol introduces a mechanism for associating an XID +with the off-screen pixmap used to store these contents. This can be used +to hold onto window contents after the window is unmapped (and hence animate +it's disappearance), and also to access the border of the window, which is +not reachable through the Window ID itself. A new pixmap is created each +time the window is mapped or resized; as these events are nicely signalled +with existing events, no additional notification is needed. The old pixmap +will remain allocated as long as the Pixmap ID is left valid, it is +important that the client use the FreePixmap request when it is done with +the contents and to create a new name for the newly allocated pixmap. + +In automatic update mode, the X server is itself responsible for presenting +the child window contents within the parent. It seems reasonable, then, for +rendering to the parent window to be clipped so as not to interfere with any +child window content. In an environment with a mixure of manual and +automatic updating windows, rendering to the parent in the area nominally +occupied by a manual update window should be able to affect parent pixel +values in those areas, but such rendering should be clipped to automatic +update windows, and presumably to other manual update windows managed by +other applications. In any of these cases, it should be easy to ensure that +rendering has no effect on any non-redirected windows. + +Instead of attempting to define new clipping modes for rendering, the +Composite extension instead defines ClipByChildren rendering to the parent +to exclude regions occupied by redirected windows (either automatic or +manual). The CreateRegionFromBorderClip request can be used along with +IncludeInferiors clipping modes to restrict manual shadow updates to the +apporpriate region of the screen. Bracketing operations with +GrabServer/UngrabServer will permit atomic sequences that can update the +screen without artifact. As all of these operations are asynchronous, +network latency should not adversely affect update latency. + +Version 0.3 of the protocol adds the coordinate transformation redirection +portions of the protocol which externalize the relationship between +parent and child positions with respect to pointer coordinates. + +4. Errors + +The composite extension does not define any new errors. + +5. Types + + UPDATETYPE { Automatic, Manual } + + CompositeCoordinate + child: Window + x, y: CARD16 + +6. Events + +Version 0.3 of the Composite protocol defines one new event + + TransformCoordinateNotify + + subtype: COORDINATEEVENT + window: Window + child: Window + time: Timestamp + serialNumber: CARD32 + count: CARD32 + x, y: INT16 + + This event is delivered to the client requesting for coordinate + redirection for 'window'. 'x' and 'y' are a location in 'child' if + not None, else in 'window'. 'time' is the time of any related + pointer event. 'serialNumber' serves to sequence transformations. + 'count' indicates the number of events still to be delivered for + 'window' to satisfy a particular operation within the server + + The client must respond to this event with a suitable + TransformCoordinate request that includes matching 'window', 'child' + and serialNumber fields. + + 'serialNumber' may be repeated in multiple events, indicating that + the server needs to redo the same transformation for some reason. + +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 client's 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 + update: UPDATETYPE + + errors: Window, Access, Match + + 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. + + The root window may not be redirected. Doing so results in a Match + error. + + RedirectSubwindows + + window: Window + update UPDATETYPE + + errors: Window, Access + + Hierarchies starting at all current and future children of window + will be redirected as in RedirectWindow. If update is Manual, + then painting of the window background during window manipulation + and ClearArea requests is inhibited. + + UnredirectWindow: + + window: Window + + errors: Window, Value + + Redirection of the specified window will be terminated. If + the specified window was not selected for redirection by the + current client, a 'Value' error results. + + UnredirectWindows: + + window: Window + + errors: Window, Value + + Redirection of all children of window will be terminated. If + the specified window was not selected for sub-redirection by the + current client, a 'Value' error results. + +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. + +10. Associating a Pixmap ID with the off-screen storage (0.2 and later) + + NameWindowPixmap + + window: Window + pixmap: Pixmap + + errors: Window, Match, IDChoice + + This request makes 'pixmap' a reference to the off-screen storage + for 'window'. This pixmap will remain allocated until freed, even + if 'window' is unmapped, reconfigured or destroyed. However, + 'window' will get a new pixmap allocated each time it is + mapped or resized, so this request will need to be reinvoked for + the client to continue to refer to the storage holding the current + window contents. Generates a 'Match' error if 'window' is not + redirected or is not visible. + +11. External coordinate transformation (0.3 and later) + + RedirectCoordinate + + window: Window + redirect: BOOL + + errors: Window, Access + + If 'redirect' is TRUE, the requesting client is placed in charge of + coordinate transformations between 'window' and its children. If + 'redirect' is FALSE, any such redirection is disabled. Any + transformations needed by the server will be delivered to the + requesting client in TransformCoordinateNotify events and the + requesting client must reply with matching TransformCoordinate + requests for the server to continue with the operation. + + Generates an 'Access' error if another client has + redirected coordinates for 'window'. + + TransformCoordinate + + window: Window + serialNumber: CARD32 + x, y: INT16 + coordinates: LISTofCompositeCoordinate + + This provides the transformation data needed by the server for a + single TransformCoordinateNotify event. 'serialNumber' must match + the serial number delivered in the event. 'x' and 'y' represent the + coordinate from the event relative to the 'window'. 'coordinates' + represent the coordinate from the event relative to each child + listed. Any children not listed in 'coordinates' are given the + default transformation using the child window position within the + parent as a simple translation. + + The result of this is that any pointer data seen by means of + the protocol will appear to reflect the transformation + performed by this request. diff --git a/protocol b/protocol deleted file mode 100644 index aab857b..0000000 --- a/protocol +++ /dev/null @@ -1,292 +0,0 @@ - Composite Extension - Version 0.3 - 2006-1-22 - 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 - - + Carsten Haitzler for Enlightenment, the original eye-candy window - manager which demonstrated that clever hacks are an awfully - close substitute for changes in the underlying system. - - + Jim Gettys for key insights into the relationship between damage - events and per-window pixmap usage - - + Mike Harris and Owen Taylor for figuring out what to call it. - - + Deron Johnson for the Looking Glass implementation and - a prototype of the coordinate transformation mechanism. - -3. Architecture - -The composite extension provides three 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. - - 3. External parent - child pointer coordinate transformation. - When a hierarchy is under manual compositing, the relationship - of coordinates within the parent to those in the child may - not be known within the X server. This mechanism provides - for redirection of these transformations through a client. - -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, its borders and the -contents of all descendants. - -Version 0.2 of the protocol introduces a mechanism for associating an XID -with the off-screen pixmap used to store these contents. This can be used -to hold onto window contents after the window is unmapped (and hence animate -it's disappearance), and also to access the border of the window, which is -not reachable through the Window ID itself. A new pixmap is created each -time the window is mapped or resized; as these events are nicely signalled -with existing events, no additional notification is needed. The old pixmap -will remain allocated as long as the Pixmap ID is left valid, it is -important that the client use the FreePixmap request when it is done with -the contents and to create a new name for the newly allocated pixmap. - -In automatic update mode, the X server is itself responsible for presenting -the child window contents within the parent. It seems reasonable, then, for -rendering to the parent window to be clipped so as not to interfere with any -child window content. In an environment with a mixure of manual and -automatic updating windows, rendering to the parent in the area nominally -occupied by a manual update window should be able to affect parent pixel -values in those areas, but such rendering should be clipped to automatic -update windows, and presumably to other manual update windows managed by -other applications. In any of these cases, it should be easy to ensure that -rendering has no effect on any non-redirected windows. - -Instead of attempting to define new clipping modes for rendering, the -Composite extension instead defines ClipByChildren rendering to the parent -to exclude regions occupied by redirected windows (either automatic or -manual). The CreateRegionFromBorderClip request can be used along with -IncludeInferiors clipping modes to restrict manual shadow updates to the -apporpriate region of the screen. Bracketing operations with -GrabServer/UngrabServer will permit atomic sequences that can update the -screen without artifact. As all of these operations are asynchronous, -network latency should not adversely affect update latency. - -Version 0.3 of the protocol adds the coordinate transformation redirection -portions of the protocol which externalize the relationship between -parent and child positions with respect to pointer coordinates. - -4. Errors - -The composite extension does not define any new errors. - -5. Types - - UPDATETYPE { Automatic, Manual } - - CompositeCoordinate - child: Window - x, y: CARD16 - -6. Events - -Version 0.3 of the Composite protocol defines one new event - - TransformCoordinateNotify - - subtype: COORDINATEEVENT - window: Window - child: Window - time: Timestamp - serialNumber: CARD32 - count: CARD32 - x, y: INT16 - - This event is delivered to the client requesting for coordinate - redirection for 'window'. 'x' and 'y' are a location in 'child' if - not None, else in 'window'. 'time' is the time of any related - pointer event. 'serialNumber' serves to sequence transformations. - 'count' indicates the number of events still to be delivered for - 'window' to satisfy a particular operation within the server - - The client must respond to this event with a suitable - TransformCoordinate request that includes matching 'window', 'child' - and serialNumber fields. - - 'serialNumber' may be repeated in multiple events, indicating that - the server needs to redo the same transformation for some reason. - -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 client's 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 - update: UPDATETYPE - - errors: Window, Access, Match - - 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. - - The root window may not be redirected. Doing so results in a Match - error. - - RedirectSubwindows - - window: Window - update UPDATETYPE - - errors: Window, Access - - Hierarchies starting at all current and future children of window - will be redirected as in RedirectWindow. If update is Manual, - then painting of the window background during window manipulation - and ClearArea requests is inhibited. - - UnredirectWindow: - - window: Window - - errors: Window, Value - - Redirection of the specified window will be terminated. If - the specified window was not selected for redirection by the - current client, a 'Value' error results. - - UnredirectWindows: - - window: Window - - errors: Window, Value - - Redirection of all children of window will be terminated. If - the specified window was not selected for sub-redirection by the - current client, a 'Value' error results. - -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. - -10. Associating a Pixmap ID with the off-screen storage (0.2 and later) - - NameWindowPixmap - - window: Window - pixmap: Pixmap - - errors: Window, Match, IDChoice - - This request makes 'pixmap' a reference to the off-screen storage - for 'window'. This pixmap will remain allocated until freed, even - if 'window' is unmapped, reconfigured or destroyed. However, - 'window' will get a new pixmap allocated each time it is - mapped or resized, so this request will need to be reinvoked for - the client to continue to refer to the storage holding the current - window contents. Generates a 'Match' error if 'window' is not - redirected or is not visible. - -11. External coordinate transformation (0.3 and later) - - RedirectCoordinate - - window: Window - redirect: BOOL - - errors: Window, Access - - If 'redirect' is TRUE, the requesting client is placed in charge of - coordinate transformations between 'window' and its children. If - 'redirect' is FALSE, any such redirection is disabled. Any - transformations needed by the server will be delivered to the - requesting client in TransformCoordinateNotify events and the - requesting client must reply with matching TransformCoordinate - requests for the server to continue with the operation. - - Generates an 'Access' error if another client has - redirected coordinates for 'window'. - - TransformCoordinate - - window: Window - serialNumber: CARD32 - x, y: INT16 - coordinates: LISTofCompositeCoordinate - - This provides the transformation data needed by the server for a - single TransformCoordinateNotify event. 'serialNumber' must match - the serial number delivered in the event. 'x' and 'y' represent the - coordinate from the event relative to the 'window'. 'coordinates' - represent the coordinate from the event relative to each child - listed. Any children not listed in 'coordinates' are given the - default transformation using the child window position within the - parent as a simple translation. - - The result of this is that any pointer data seen by means of - the protocol will appear to reflect the transformation - performed by this request. -- cgit v1.2.3 From dd2133540f8dd0f0f66ecf24e01113184045af83 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 9 Jan 2007 10:42:31 -0800 Subject: Update protocol spec for 0.3 -> 0.4 rename and new 0.3 request. The original overlay window text was from Deron Johnson, but I moved it around to be where I understand the pieces of the description were meant to go. --- compositeproto.txt | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 74 insertions(+), 4 deletions(-) diff --git a/compositeproto.txt b/compositeproto.txt index aab857b..77b1b85 100644 --- a/compositeproto.txt +++ b/compositeproto.txt @@ -1,9 +1,14 @@ Composite Extension - Version 0.3 - 2006-1-22 + Version 0.4 + 2006-2-24 Keith Packard keithp@keithp.com + Version 0.3 + 2006-5-13 + Deron Johnson + deron.johnson@sun.com + 1. Introduction Many user interface operations would benefit from having pixel contents of @@ -65,6 +70,8 @@ may be done with the Damage extension. The off-screen storage includes the window contents, its borders and the contents of all descendants. +3.1 NameWindowPixmap + Version 0.2 of the protocol introduces a mechanism for associating an XID with the off-screen pixmap used to store these contents. This can be used to hold onto window contents after the window is unmapped (and hence animate @@ -97,7 +104,37 @@ GrabServer/UngrabServer will permit atomic sequences that can update the screen without artifact. As all of these operations are asynchronous, network latency should not adversely affect update latency. -Version 0.3 of the protocol adds the coordinate transformation redirection +3.2 Composite Overlay Window + +Version 0.3 of the protocol adds the Composite Overlay Window, which +provides compositing managers with a surface on which to draw without +interference. This window is always above normal windows and is always +below the screen saver window. It is an InputOutput window whose width +and height are the screen dimensions. Its visual is the root visual +and its border width is zero. Attempts to redirect it using the +composite extension are ignored. This window does not appear in the +reply of the QueryTree request. It is also an override redirect window. +These last two features make it invisible to window managers and other X11 +clients. The only way to access the XID of this window is via the +CompositeGetOverlayWindow request. Initially, the Composite Overlay +Window is unmapped. + +CompositeGetOverlayWindow returns the XID of the Composite Overlay +Window. If the window has not yet been mapped, it is mapped by this +request. When all clients who have called this request have terminated +their X11 connections the window is unmapped. + +Composite managers may render directly to the Composite Overlay +Window, or they may reparent other windows to be children of this +window and render to these. Multiple clients may render to the +Composite Overlay Window, create child windows of it, reshape it, and +redefine its input region, but the specific arbitration rules followed +by these clients is not defined by this specification; these policies +should be defined by the clients themselves. + +3.3 Coordinate transform redirection + +Version 0.4 of the protocol adds the coordinate transformation redirection portions of the protocol which externalize the relationship between parent and child positions with respect to pointer coordinates. @@ -251,7 +288,40 @@ operations other than QueryVersion. window contents. Generates a 'Match' error if 'window' is not redirected or is not visible. -11. External coordinate transformation (0.3 and later) +11. Composite Overlay Window (0.3 and later) + + CompositeGetOverlayWindow + + window: Window + + -> + + overlayWin: Window + + This request returns the XID of the Composite Overlay Window for + the screen specified by the argument 'window'. This request + indicates that the client wishes to use the Composite Overlay + Window of this screen. If this Composite Overlay Window has not + yet been mapped, it is mapped by this request. + + The Composite Overlay Window for a particular screen will be + unmapped when all clients who have invoked this request have + also invoked CompositeReleaseOverlayWindow for that screen. Also, + CompositeReleaseOverlayWindow for a screen will be implicitly + called when a client using the Composite Overlay Window on that + screen terminates its X11 connection. + + + CompositeReleaseOverlayWindow + + window: Window + + This request specifies that the client is no longer using the + Composite Overlay Window on the screen specified by the + argument 'window'. A screen's Composite Overlay Window is + unmapped when there are no longer any clients using it. + +12. External coordinate transformation (0.4 and later) RedirectCoordinate -- cgit v1.2.3 From 6acacb52efd6f0927c9b82fe864f17623e7dc8c2 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Tue, 17 Apr 2007 20:47:50 -0700 Subject: Protocol spec nit cleanups Fix versioning from 0.3/0.4 merge Update description of RedirectWindow to match names in protocol diagrams --- compositeproto.txt | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/compositeproto.txt b/compositeproto.txt index 77b1b85..8740920 100644 --- a/compositeproto.txt +++ b/compositeproto.txt @@ -1,11 +1,8 @@ - Composite Extension - Version 0.4 - 2006-2-24 + Composite Extension + Version 0.4 + 2007-4-17 Keith Packard keithp@keithp.com - - Version 0.3 - 2006-5-13 Deron Johnson deron.johnson@sun.com @@ -152,7 +149,7 @@ The composite extension does not define any new errors. 6. Events -Version 0.3 of the Composite protocol defines one new event +Version 0.4 of the Composite protocol defines one new event TransformCoordinateNotify @@ -213,9 +210,9 @@ operations other than QueryVersion. errors: Window, Access, Match 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 + storage. 'update' specifies whether the contents are mirrored to + the parent window automatically or not. Only one client may specify + an update type of Manual, another attempt will result in an Access error. When all clients enabling redirection terminate, the redirection will automatically be disabled. -- cgit v1.2.3 From bca9592612d60142e3c624b90649475b561b8eda Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Tue, 17 Apr 2007 20:48:18 -0700 Subject: Add *~ to .gitignore to skip emacs/patch droppings --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 521ba35..4945c82 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ config.status configure install-sh missing +*~ -- cgit v1.2.3 From 1838412121d0bac8ce443d362e75439d58a93a4d Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 3 Jul 2007 14:09:41 -0700 Subject: Define new manual-redirect clipping semantics and bump version to 0.4. Manual-redirect windows no longer clip their parents, nor do they affect expose event computation. This makes it possible to create application-level composited windows which can be damaged by other window manipulations. This patch also removes the coordinate transformation stuff which was never released. --- composite.h | 10 +++------- compositeproto.h | 48 ------------------------------------------------ compositeproto.txt | 46 +++++++++++++--------------------------------- 3 files changed, 16 insertions(+), 88 deletions(-) diff --git a/composite.h b/composite.h index 009007b..30b190f 100644 --- a/composite.h +++ b/composite.h @@ -49,7 +49,7 @@ #define COMPOSITE_NAME "Composite" #define COMPOSITE_MAJOR 0 -#define COMPOSITE_MINOR 3 +#define COMPOSITE_MINOR 4 #define CompositeRedirectAutomatic 0 #define CompositeRedirectManual 1 @@ -63,13 +63,9 @@ #define X_CompositeNameWindowPixmap 6 #define X_CompositeGetOverlayWindow 7 #define X_CompositeReleaseOverlayWindow 8 -#define X_CompositeRedirectCoordinate 9 -#define X_CompositeTransformCoordinate 10 -#define CompositeNumberRequests (X_CompositeTransformCoordinate + 1) +#define CompositeNumberRequests (X_CompositeReleaseOverlayWindow + 1) -#define CompositeTransformCoordinateNotify 0 - -#define CompositeNumberEvents 1 +#define CompositeNumberEvents 0 #endif /* _COMPOSITE_H_ */ diff --git a/compositeproto.h b/compositeproto.h index b7c605b..c57628c 100644 --- a/compositeproto.h +++ b/compositeproto.h @@ -185,54 +185,6 @@ typedef struct { #define sz_xCompositeReleaseOverlayWindowReq sizeof(xCompositeReleaseOverlayWindowReq) -/* Version 0.4 additions */ - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length; - Window window B32; - BOOL redirect; - BYTE unused1; - CARD16 unused2 B16; -} xCompositeRedirectCoordinateReq; - -#define sz_xCompositeRedirectCoordinateReq 12 - -typedef struct { - CARD8 type; - CARD8 subtype; /* XXX use this? */ - CARD16 sequenceNumber B16; - Time time B32; - Window window B32; - Window child B32; - CARD32 serialNumber B32; - CARD32 count B32; - CARD16 x B16; - CARD16 y B16; - CARD32 pad1 B32; -} xCompositeTransformCoordinateNotifyEvent; - -typedef struct { - Window window B32; - CARD16 x B16; - CARD16 y B16; -} xCompositeCoordinate; - -#define sz_xCompositeCoordinate 8 - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length; - Window window B32; - CARD32 serialNumber B32; - CARD16 x B16; - CARD16 y B16; -} xCompositeTransformCoordinateReq; - -#define sz_xCompositeTransformCoordinateReq 16 - #undef Window #undef Region diff --git a/compositeproto.txt b/compositeproto.txt index 8740920..4b86621 100644 --- a/compositeproto.txt +++ b/compositeproto.txt @@ -1,6 +1,6 @@ Composite Extension Version 0.4 - 2007-4-17 + 2007-7-3 Keith Packard keithp@keithp.com Deron Johnson @@ -34,6 +34,9 @@ both early prototypes and the final design include: + Deron Johnson for the Looking Glass implementation and a prototype of the coordinate transformation mechanism. + + Ryan Lortie for helping figure out reasonable parent clipping + semantics in the presense of manual redirected children. + 3. Architecture The composite extension provides three related mechanisms: @@ -129,11 +132,16 @@ redefine its input region, but the specific arbitration rules followed by these clients is not defined by this specification; these policies should be defined by the clients themselves. -3.3 Coordinate transform redirection +3.3 Clipping semantics redefined -Version 0.4 of the protocol adds the coordinate transformation redirection -portions of the protocol which externalize the relationship between -parent and child positions with respect to pointer coordinates. +Version 0.4 of the protocol changes the semantics of clipping in the +presense of manual redirect children. In version 0.3, a parent was always +clipped to child windows, independent of the kind of redirection going on. +With version 0.4, the parent is no longer clipped to child windows which are +manually redirected. This means the parent can draw in the child region without using +IncludeInferiors mode, and (perhaps more importantly), it will receive +expose events in those regions caused by other actions. This new behaviour +is not selectable. 4. Errors @@ -147,34 +155,6 @@ The composite extension does not define any new errors. child: Window x, y: CARD16 -6. Events - -Version 0.4 of the Composite protocol defines one new event - - TransformCoordinateNotify - - subtype: COORDINATEEVENT - window: Window - child: Window - time: Timestamp - serialNumber: CARD32 - count: CARD32 - x, y: INT16 - - This event is delivered to the client requesting for coordinate - redirection for 'window'. 'x' and 'y' are a location in 'child' if - not None, else in 'window'. 'time' is the time of any related - pointer event. 'serialNumber' serves to sequence transformations. - 'count' indicates the number of events still to be delivered for - 'window' to satisfy a particular operation within the server - - The client must respond to this event with a suitable - TransformCoordinate request that includes matching 'window', 'child' - and serialNumber fields. - - 'serialNumber' may be repeated in multiple events, indicating that - the server needs to redo the same transformation for some reason. - 7. Extension Initialization The client must negotiate the version of the extension before executing -- cgit v1.2.3 From 25e8047e25652be388dc66d85c180dcc4ccea4f6 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 3 Jul 2007 14:11:10 -0700 Subject: Bump version in configure.ac to 0.4 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 581ad12..3a5fc5e 100644 --- a/configure.ac +++ b/configure.ac @@ -24,7 +24,7 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ([2.57]) -AC_INIT([CompositeProto], [0.3], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AC_INIT([CompositeProto], [0.4], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE -- cgit v1.2.3 From 5ac473a9375fa43896e379da96d1955653960350 Mon Sep 17 00:00:00 2001 From: "Jeremy C. Reed" Date: Thu, 16 Aug 2007 11:28:30 -0500 Subject: Temporarily define Pixmap (just like Window and Region). (From pkgsrc.) --- compositeproto.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compositeproto.h b/compositeproto.h index c57628c..2e392e2 100644 --- a/compositeproto.h +++ b/compositeproto.h @@ -51,6 +51,7 @@ #define Window CARD32 #define Region CARD32 +#define Pixmap CARD32 /* * requests and replies @@ -187,5 +188,6 @@ typedef struct { #undef Window #undef Region +#undef Pixmap #endif /* _COMPOSITEPROTO_H_ */ -- cgit v1.2.3 From 2ffb32d61cbed1452d67abb2028ac13910550392 Mon Sep 17 00:00:00 2001 From: James Cloos Date: Thu, 6 Dec 2007 16:38:57 -0500 Subject: Replace static ChangeLog with dist-hook to generate from git log --- ChangeLog | 88 ------------------------------------------------------------- Makefile.am | 10 +++++++ 2 files changed, 10 insertions(+), 88 deletions(-) delete mode 100644 ChangeLog diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index 89c8b5b..0000000 --- a/ChangeLog +++ /dev/null @@ -1,88 +0,0 @@ -2006-3-30 Deron Johnson - - * composite.h - * compositeproto.h - * configure.ac - Composite Version 0.3: CompositeGetOverlayWindow, CompositeReleaseOverlayWindow - Moved Coordinate Transform Redirect defines to 0.4 and bumped request numbers - -2005-12-14 Kevin E. Martin - - * configure.ac: - Update package version number for final X11R7 release candidate. - -2004-07-08 Keith Packard - - * composite.h: - * compositeproto.h: - * protocol: - Add NameWindowPixmap request. - Bump protocol to 0.2 - -2004-06-27 Eric Anholt - - * protocol: - Fix some apostrophe issues. - -2004-02-03 Jim Gettys - - * AUTHORS: needed author's attribution - -2004-01-15 Daniel Stone - * Tag release 2.0 for first freedesktop.org clientside release. - -2003-11-08 Keith Packard - - * protocol: - Note that Manual Subwindows mode disables background painting. - -2003-11-06 Keith Packard - - * composite.h: - * compositeproto.h: - Add update mode to Unredirect requests so clients - can redirect multiple times (and then unredirect) - Add CompositeNumberRequests - Fix some typeos - -2003-11-04 Keith Packard - - * COPYING: - * INSTALL: - * Makefile.am: - * README: - * composite.h: - * compositeext.pc.in: - * compositeproto.h: - * configure.ac: - * protocol: - Change name from Apportion to Composite - Clarify that root cannot be redirected. - Add more error values. - -2003-10-29 Keith Packard - - * COPYING: - * INSTALL: - * Makefile.am: - * README: - * apportion.h: - * apportionext.pc.in: - * apportionproto.h: - * autogen.sh: - * configure.ac: - * protocol: - autofoo - Add protocol headers - Use enum for update mode instead of bool - -2003-10-29 Keith Packard - - * protocol: - Define clipping while redirected - -2003-10-24 Keith Packard - - * ChangeLog - * protocol - Initial protocol design imported diff --git a/Makefile.am b/Makefile.am index dfc4a1c..105a360 100644 --- a/Makefile.am +++ b/Makefile.am @@ -33,3 +33,13 @@ compositedocdir = $(datadir)/doc/$(PACKAGE) compositedoc_DATA = compositeproto.txt EXTRA_DIST = autogen.sh compositeproto.pc.in $(compositedoc_DATA) + +EXTRA_DIST += ChangeLog +MAINTAINERCLEANFILES = ChangeLog + +.PHONY: ChangeLog + +ChangeLog: + (GIT_DIR=$(top_srcdir)/.git git-log > .changelog.tmp && mv .changelog.tmp ChangeLog; rm -f .changelog.tmp) || (touch ChangeLog; echo 'git directory not found: installing possibly empty changelog.' >&2) + +dist-hook: ChangeLog -- cgit v1.2.3 From 961dbcda7fcfd15a3e60bfb905f05286ba33508f Mon Sep 17 00:00:00 2001 From: Gaetan Nadon Date: Wed, 8 Jul 2009 10:03:40 -0400 Subject: compositeproto: use XORG_CHANGELOG macro to create ChangeLog. #22611 Build break: Makefile.am: command not found: git-log Adding the macro in configure.ac and use it in Makefile.am Refer to: https://bugs.freedesktop.org/show_bug.cgi?id=22611 Tested: running autogen.sh, make and 'make dist' Signed-off-by: Gaetan Nadon Signed-off-by: Peter Hutterer --- Makefile.am | 2 +- configure.ac | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 105a360..4f4da59 100644 --- a/Makefile.am +++ b/Makefile.am @@ -40,6 +40,6 @@ MAINTAINERCLEANFILES = ChangeLog .PHONY: ChangeLog ChangeLog: - (GIT_DIR=$(top_srcdir)/.git git-log > .changelog.tmp && mv .changelog.tmp ChangeLog; rm -f .changelog.tmp) || (touch ChangeLog; echo 'git directory not found: installing possibly empty changelog.' >&2) + $(CHANGELOG_CMD) dist-hook: ChangeLog diff --git a/configure.ac b/configure.ac index 3a5fc5e..7fa9070 100644 --- a/configure.ac +++ b/configure.ac @@ -28,7 +28,12 @@ AC_INIT([CompositeProto], [0.4], [https://bugs.freedesktop.org/enter_bug.cgi?pro AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE +# Require xorg-macros: XORG_RELEASE_VERSION XORG_CHANGELOG +m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.2 or later before running autoconf/autogen])]) +XORG_MACROS_VERSION(1.2) + XORG_RELEASE_VERSION +XORG_CHANGELOG AC_OUTPUT([Makefile compositeproto.pc]) -- cgit v1.2.3 From bbdc2ae4f4115332337460631911857cbadaf603 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Fri, 2 Oct 2009 18:52:44 -0700 Subject: Add pointers to mailing list, git repo, and wiki to README Signed-off-by: Alan Coopersmith --- README | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/README b/README index 9c03568..66b40a4 100644 --- a/README +++ b/README @@ -7,3 +7,27 @@ extension. Library and server implementations are separate. Keith Packard keithp@keithp.com + +All questions regarding this software should be directed at the +Xorg mailing list: + + http://lists.freedesktop.org/mailman/listinfo/xorg + +Please submit bug reports to the Xorg bugzilla: + + https://bugs.freedesktop.org/enter_bug.cgi?product=xorg + +The master development code repository can be found at: + + git://anongit.freedesktop.org/git/xorg/proto/compositeproto + + http://cgit.freedesktop.org/xorg/proto/compositeproto + +For patch submission instructions, see: + + http://www.x.org/wiki/Development/Documentation/SubmittingPatches + +For more information on the git code manager, see: + + http://wiki.x.org/wiki/GitPage + -- cgit v1.2.3 From ad173235db562b7f788ad82e5b4849c1519bd0b5 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Fri, 2 Oct 2009 18:57:51 -0700 Subject: Migrate to xorg macros 1.3 & XORG_DEFAULT_OPTIONS Signed-off-by: Alan Coopersmith --- configure.ac | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index 7fa9070..fedf760 100644 --- a/configure.ac +++ b/configure.ac @@ -28,12 +28,11 @@ AC_INIT([CompositeProto], [0.4], [https://bugs.freedesktop.org/enter_bug.cgi?pro AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE -# Require xorg-macros: XORG_RELEASE_VERSION XORG_CHANGELOG -m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.2 or later before running autoconf/autogen])]) -XORG_MACROS_VERSION(1.2) +# Require xorg-macros: XORG_DEFAULT_OPTIONS +m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.3 or later before running autoconf/autogen])]) +XORG_MACROS_VERSION(1.3) -XORG_RELEASE_VERSION -XORG_CHANGELOG +XORG_DEFAULT_OPTIONS AC_OUTPUT([Makefile compositeproto.pc]) -- cgit v1.2.3 From 39612a7153ac3e800c5dbb11a7f760c53797bf73 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Fri, 2 Oct 2009 18:59:54 -0700 Subject: compositeproto 0.4.1 Signed-off-by: Alan Coopersmith --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index fedf760..0fd3fb8 100644 --- a/configure.ac +++ b/configure.ac @@ -24,7 +24,7 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ([2.57]) -AC_INIT([CompositeProto], [0.4], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AC_INIT([CompositeProto], [0.4.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE -- cgit v1.2.3 From 00dc749894784dc6f1b749903ef872572f678c3c Mon Sep 17 00:00:00 2001 From: Gaetan Nadon Date: Sat, 14 Nov 2009 18:26:46 -0500 Subject: .gitignore: use common defaults with custom section # 24239 Using common defaults will reduce errors and maintenance. Only the very small or inexistent custom section need periodic maintenance when the structure of the component changes. Do not edit defaults. --- .gitignore | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 71 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 4945c82..896b3f5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,78 @@ -Makefile -Makefile.in +# +# X.Org module default exclusion patterns +# The next section if for module specific patterns +# +# Do not edit the following section +# GNU Build System (Autotools) aclocal.m4 -autom4te.cache -compositeproto.pc +autom4te.cache/ +autoscan.log +ChangeLog +compile +config.guess +config.h +config.h.in config.log +config-ml.in +config.py config.status +config.status.lineno +config.sub configure +configure.scan +depcomp +.deps/ +INSTALL install-sh +.libs/ +libtool +libtool.m4 +ltmain.sh +lt~obsolete.m4 +ltoptions.m4 +ltsugar.m4 +ltversion.m4 +Makefile +Makefile.in +mdate-sh missing +mkinstalldirs +*.pc +py-compile +stamp-h? +symlink-tree +texinfo.tex +ylwrap + +# Do not edit the following section +# Edit Compile Debug Document Distribute *~ +*.[0-9] +*.[0-9]x +*.bak +*.bin +core +*.dll +*.exe +*-ISO*.bdf +*-JIS*.bdf +*-KOI8*.bdf +*.kld +*.ko +*.ko.cmd +*.lai +*.l[oa] +*.[oa] +*.obj +*.patch +*.so +*.pcf.gz +*.pdb +*.tar.bz2 +*.tar.gz +# +# Add & Override patterns for compositeproto +# +# Edit the following section as needed +# For example, !report.pc overrides *.pc. See 'man gitignore' +# -- cgit v1.2.3 From 8a7c2c629635510a0728d5ab086b0f4b600b0e49 Mon Sep 17 00:00:00 2001 From: Gaetan Nadon Date: Sun, 15 Nov 2009 18:11:36 -0500 Subject: configure.ac: deploy the new XORG_DEFAULT_OPTIONS #24242 This macro aggregate a number of existing macros that sets commmon X.Org components configuration options. It shields the configuration file from future changes. --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 0fd3fb8..1d3750e 100644 --- a/configure.ac +++ b/configure.ac @@ -29,9 +29,9 @@ AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE # Require xorg-macros: XORG_DEFAULT_OPTIONS -m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.3 or later before running autoconf/autogen])]) +m4_ifndef([XORG_MACROS_VERSION], + [m4_fatal([must install xorg-macros 1.3 or later before running autoconf/autogen])]) XORG_MACROS_VERSION(1.3) - XORG_DEFAULT_OPTIONS AC_OUTPUT([Makefile -- cgit v1.2.3 From ad60112eb2eacb50954bf9cd461b9e90d6f64a63 Mon Sep 17 00:00:00 2001 From: Gaetan Nadon Date: Sun, 15 Nov 2009 18:31:28 -0500 Subject: Makefile.am: INSTALL file is missing or incorrect #24206 The standard GNU file on building/installing tarball is copied using the XORG_INSTALL macro contained in XORG_DEFAULT_OPTIONS Add INSTALL target --- INSTALL | 293 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- Makefile.am | 7 +- 2 files changed, 293 insertions(+), 7 deletions(-) diff --git a/INSTALL b/INSTALL index 64b284c..8b82ade 100644 --- a/INSTALL +++ b/INSTALL @@ -1,8 +1,291 @@ -CompositeExt is built with the traditional configure script: +Installation Instructions +************************* - $ ./configure --prefix=/usr/X11R6 +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, +2006, 2007, 2008 Free Software Foundation, Inc. -This should generate valid Makefiles, then: + This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + + Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. + + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 6. Often, you can also type `make uninstall' to remove the installed + files again. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + +Installation Names +================== + + By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: + + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--prefix=DIR' + Use DIR as the installation prefix. *Note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. - $ make - $ make install diff --git a/Makefile.am b/Makefile.am index 4f4da59..3132dbf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -37,9 +37,12 @@ EXTRA_DIST = autogen.sh compositeproto.pc.in $(compositedoc_DATA) EXTRA_DIST += ChangeLog MAINTAINERCLEANFILES = ChangeLog -.PHONY: ChangeLog +.PHONY: ChangeLog INSTALL + +INSTALL: + $(INSTALL_CMD) ChangeLog: $(CHANGELOG_CMD) -dist-hook: ChangeLog +dist-hook: ChangeLog INSTALL -- cgit v1.2.3 From 55f6f1eec2a0baca0f6c7738cc2e54e7098b3652 Mon Sep 17 00:00:00 2001 From: Gaetan Nadon Date: Sun, 15 Nov 2009 19:45:26 -0500 Subject: Makefile.am: ChangeLog not required: EXTRA_DIST or *CLEANFILES #24432 ChangeLog filename is known to Automake and requires no further coding in the makefile. --- Makefile.am | 3 --- 1 file changed, 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index 3132dbf..4aaf760 100644 --- a/Makefile.am +++ b/Makefile.am @@ -34,9 +34,6 @@ compositedoc_DATA = compositeproto.txt EXTRA_DIST = autogen.sh compositeproto.pc.in $(compositedoc_DATA) -EXTRA_DIST += ChangeLog -MAINTAINERCLEANFILES = ChangeLog - .PHONY: ChangeLog INSTALL INSTALL: -- cgit v1.2.3 From 260cc8eadd89b3fc9f59e505e34dcb5bc09018bd Mon Sep 17 00:00:00 2001 From: Gaetan Nadon Date: Sun, 15 Nov 2009 20:25:50 -0500 Subject: NEWS: remove empty file #24206 --- NEWS | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 NEWS diff --git a/NEWS b/NEWS deleted file mode 100644 index e69de29..0000000 -- cgit v1.2.3 From 330cbabbbf73b310b237e6745185f338d7d33998 Mon Sep 17 00:00:00 2001 From: Gaetan Nadon Date: Wed, 18 Nov 2009 19:00:34 -0500 Subject: INSTALL: file is missing or incorrect #24206 The standard GNU file on building/installing tarball is copied using the XORG_INSTALL macro contained in XORG_DEFAULT_OPTIONS --- INSTALL | 291 ---------------------------------------------------------------- 1 file changed, 291 deletions(-) delete mode 100644 INSTALL diff --git a/INSTALL b/INSTALL deleted file mode 100644 index 8b82ade..0000000 --- a/INSTALL +++ /dev/null @@ -1,291 +0,0 @@ -Installation Instructions -************************* - -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -2006, 2007, 2008 Free Software Foundation, Inc. - - This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - - Briefly, the shell commands `./configure; make; make install' should -configure, build, and install this package. The following -more-detailed instructions are generic; see the `README' file for -instructions specific to this package. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. Caching is -disabled by default to prevent problems with accidental use of stale -cache files. - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You need `configure.ac' if -you want to change it or regenerate `configure' using a newer version -of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. - - Running `configure' might take a while. While running, it prints - some messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - - 6. Often, you can also type `make uninstall' to remove the installed - files again. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' -for details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c99 CFLAGS=-g LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you can use GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - With a non-GNU `make', it is safer to compile the package for one -architecture at a time in the source code directory. After you have -installed the package for one architecture, use `make distclean' before -reconfiguring for another architecture. - - On MacOS X 10.5 and later systems, you can create libraries and -executables that work on multiple system types--known as "fat" or -"universal" binaries--by specifying multiple `-arch' options to the -compiler but only a single `-arch' option to the preprocessor. Like -this: - - ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ - CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ - CPP="gcc -E" CXXCPP="g++ -E" - - This is not guaranteed to produce working output in all cases, you -may have to build one architecture at a time and combine the results -using the `lipo' tool if you have problems. - -Installation Names -================== - - By default, `make install' installs the package's commands under -`/usr/local/bin', include files under `/usr/local/include', etc. You -can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses -PREFIX as the prefix for installing programs and libraries. -Documentation and other data files still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Particular systems -================== - - On HP-UX, the default C compiler is not ANSI C compatible. If GNU -CC is not installed, it is recommended to use the following options in -order to use an ANSI C compiler: - - ./configure CC="cc -Ae" - -and if that doesn't work, install pre-built binaries of GCC for HP-UX. - - On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot -parse its `' header file. The option `-nodtk' can be used as -a workaround. If GNU CC is not installed, it is therefore recommended -to try - - ./configure CC="cc" - -and if that doesn't work, try - - ./configure CC="cc -nodtk" - -Specifying the System Type -========================== - - There may be some features `configure' cannot figure out -automatically, but needs to determine by the type of machine the package -will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints -a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - - Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -causes the specified `gcc' to be used as the C compiler (unless it is -overridden in the site shell script). - -Unfortunately, this technique does not work for `CONFIG_SHELL' due to -an Autoconf bug. Until the bug is fixed you can use this workaround: - - CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash - -`configure' Invocation -====================== - - `configure' recognizes the following options to control how it -operates. - -`--help' -`-h' - Print a summary of all of the options to `configure', and exit. - -`--help=short' -`--help=recursive' - Print a summary of the options unique to this package's - `configure', and exit. The `short' variant lists options used - only in the top level, while the `recursive' variant lists options - also present in any nested packages. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--prefix=DIR' - Use DIR as the installation prefix. *Note Installation Names:: - for more details, including other options available for fine-tuning - the installation locations. - -`--no-create' -`-n' - Run the configure checks, but stop before creating any output - files. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - -- cgit v1.2.3 From 5ecb066e04595d300a0faad0f95c859a709ff857 Mon Sep 17 00:00:00 2001 From: Gaetan Nadon Date: Sun, 22 Nov 2009 19:24:47 -0500 Subject: Makefile.am: add ChangeLog and INSTALL on MAINTAINERCLEANFILES Now that the INSTALL file is generated. Allows running make maintainer-clean. --- Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile.am b/Makefile.am index 4aaf760..1e95976 100644 --- a/Makefile.am +++ b/Makefile.am @@ -34,6 +34,8 @@ compositedoc_DATA = compositeproto.txt EXTRA_DIST = autogen.sh compositeproto.pc.in $(compositedoc_DATA) +MAINTAINERCLEANFILES = ChangeLog INSTALL + .PHONY: ChangeLog INSTALL INSTALL: -- cgit v1.2.3 From fdf8d73a27cd0cadae5a14e7a88870121ae113aa Mon Sep 17 00:00:00 2001 From: Rémi Cardona Date: Thu, 17 Dec 2009 08:32:20 +0100 Subject: Use $(docdir) for compositeproto.txt install path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rémi Cardona Reviewed-by: Gaetan Nadon Reviewed-by: Alan Coopersmith Reviewed-by: Dan Nicholson --- Makefile.am | 5 ++--- configure.ac | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Makefile.am b/Makefile.am index 1e95976..11d4e80 100644 --- a/Makefile.am +++ b/Makefile.am @@ -29,10 +29,9 @@ composite_HEADERS = \ pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = compositeproto.pc -compositedocdir = $(datadir)/doc/$(PACKAGE) -compositedoc_DATA = compositeproto.txt +dist_doc_DATA = compositeproto.txt -EXTRA_DIST = autogen.sh compositeproto.pc.in $(compositedoc_DATA) +EXTRA_DIST = autogen.sh compositeproto.pc.in MAINTAINERCLEANFILES = ChangeLog INSTALL diff --git a/configure.ac b/configure.ac index 1d3750e..26182d6 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ dnl PERFORMANCE OF THIS SOFTWARE. dnl dnl Process this file with autoconf to create configure. -AC_PREREQ([2.57]) +AC_PREREQ([2.60]) AC_INIT([CompositeProto], [0.4.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE -- cgit v1.2.3 From 843e916e15b117c1142ab78d35b9ea722bdc7a0b Mon Sep 17 00:00:00 2001 From: Gaetan Nadon Date: Mon, 16 Nov 2009 11:47:44 -0500 Subject: COPYING: add Copyright from SUN Microsystems The COPYING file contains all Copyright notices from source code. Refer to composite.h. Signed-off-by: Gaetan Nadon --- COPYING | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/COPYING b/COPYING index 4fbf9af..37038d2 100644 --- a/COPYING +++ b/COPYING @@ -1,4 +1,22 @@ -$Id: COPYING,v 1.2 2003-11-05 05:39:58 keithp Exp $ +Copyright © 2006 Sun Microsystems + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Sun Microsystems not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Sun Microsystems makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. Copyright © 2003 Keith Packard -- cgit v1.2.3 From e827d7b875a6b16e9e7208af3407cb96cd1e91ed Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Fri, 15 Jan 2010 13:36:08 -0800 Subject: Purge CVS/RCS $Id$ tags Signed-off-by: Alan Coopersmith --- Makefile.am | 2 -- composite.h | 2 -- compositeproto.h | 3 --- configure.ac | 2 -- 4 files changed, 9 deletions(-) diff --git a/Makefile.am b/Makefile.am index 11d4e80..e982323 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,4 @@ # -# $Id: Makefile.am,v 1.2 2003-11-05 05:39:58 keithp Exp $ -# # Copyright © 2003 Keith Packard, Noah Levitt # # Permission to use, copy, modify, distribute, and sell this software and its diff --git a/composite.h b/composite.h index 30b190f..cb60928 100644 --- a/composite.h +++ b/composite.h @@ -1,6 +1,4 @@ /* - * $Id: composite.h,v 1.4 2004/07/08 07:20:55 keithp Exp $ - * * Copyright © 2006 Sun Microsystems * * Permission to use, copy, modify, distribute, and sell this software and its diff --git a/compositeproto.h b/compositeproto.h index 2e392e2..92c3148 100644 --- a/compositeproto.h +++ b/compositeproto.h @@ -1,7 +1,4 @@ /* - * $Id: compositeproto.h,v 1.4 2004/07/08 07:20:55 keithp Exp $ - * - * * Copyright © 2006 Sun Microsystems * * Permission to use, copy, modify, distribute, and sell this software and its diff --git a/configure.ac b/configure.ac index 26182d6..45969f7 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,4 @@ dnl -dnl $Id: configure.ac,v 1.2 2003-11-05 05:39:58 keithp Exp $ -dnl dnl Copyright © 2003 Keith Packard, Noah Levitt dnl dnl Permission to use, copy, modify, distribute, and sell this software and its -- cgit v1.2.3 From 1a48a0d70e00fd11521e436864a8ec0705e58285 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Fri, 15 Jan 2010 13:34:49 -0800 Subject: Update Sun license notices to current X.Org standard form Signed-off-by: Alan Coopersmith --- COPYING | 35 ++++++++++++++++++----------------- composite.h | 36 +++++++++++++++++++----------------- compositeproto.h | 36 +++++++++++++++++++----------------- 3 files changed, 56 insertions(+), 51 deletions(-) diff --git a/COPYING b/COPYING index 37038d2..23c1a6c 100644 --- a/COPYING +++ b/COPYING @@ -1,22 +1,23 @@ -Copyright © 2006 Sun Microsystems +Copyright © 2006 Sun Microsystems, Inc. All rights reserved. -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of Sun Microsystems not be used in -advertising or publicity pertaining to distribution of the software without -specific, written prior permission. Sun Microsystems makes no -representations about the suitability of this software for any purpose. It -is provided "as is" without express or implied warranty. +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: -SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. Copyright © 2003 Keith Packard diff --git a/composite.h b/composite.h index cb60928..7725321 100644 --- a/composite.h +++ b/composite.h @@ -1,24 +1,26 @@ /* - * Copyright © 2006 Sun Microsystems + * Copyright © 2006 Sun Microsystems, Inc. All rights reserved. * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Sun Microsystems not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Sun Microsystems makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: * - * SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +/* * Copyright © 2003 Keith Packard * * Permission to use, copy, modify, distribute, and sell this software and its diff --git a/compositeproto.h b/compositeproto.h index 92c3148..aa6cd8a 100644 --- a/compositeproto.h +++ b/compositeproto.h @@ -1,24 +1,26 @@ /* - * Copyright © 2006 Sun Microsystems + * Copyright © 2006 Sun Microsystems, Inc. All rights reserved. * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Sun Microsystems not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Sun Microsystems makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: * - * SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +/* * Copyright © 2003 Keith Packard * * Permission to use, copy, modify, distribute, and sell this software and its -- cgit v1.2.3 From 68ff97cd30c709439c088bfea2c33a4f9632ed38 Mon Sep 17 00:00:00 2001 From: Gaetan Nadon Date: Sun, 28 Mar 2010 19:00:30 -0400 Subject: config: remove the pkgconfig pc.in file from EXTRA_DIST Automake always includes it in the tarball. autogen.sh is also not required in any GNU package. Signed-off-by: Gaetan Nadon --- Makefile.am | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index e982323..5a14884 100644 --- a/Makefile.am +++ b/Makefile.am @@ -29,7 +29,6 @@ pkgconfig_DATA = compositeproto.pc dist_doc_DATA = compositeproto.txt -EXTRA_DIST = autogen.sh compositeproto.pc.in MAINTAINERCLEANFILES = ChangeLog INSTALL -- cgit v1.2.3 From 2432bd8da01c8da74c3a1b0c7ea2c2207380ecd1 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 6 Apr 2010 14:17:20 -0700 Subject: Move compositeproto files to their sub-directory Signed-off-by: Keith Packard --- .gitignore | 78 --------- AUTHORS | 1 - COPYING | 41 ----- Makefile.am | 43 ----- README | 33 ---- autogen.sh | 12 -- composite.h | 71 -------- compositeproto.h | 192 -------------------- compositeproto.pc.in | 9 - compositeproto.txt | 339 ------------------------------------ compositeproto/.gitignore | 78 +++++++++ compositeproto/AUTHORS | 1 + compositeproto/COPYING | 41 +++++ compositeproto/Makefile.am | 43 +++++ compositeproto/README | 33 ++++ compositeproto/autogen.sh | 12 ++ compositeproto/composite.h | 71 ++++++++ compositeproto/compositeproto.h | 192 ++++++++++++++++++++ compositeproto/compositeproto.pc.in | 9 + compositeproto/compositeproto.txt | 339 ++++++++++++++++++++++++++++++++++++ compositeproto/configure.ac | 37 ++++ configure.ac | 37 ---- 22 files changed, 856 insertions(+), 856 deletions(-) delete mode 100644 .gitignore delete mode 100644 AUTHORS delete mode 100644 COPYING delete mode 100644 Makefile.am delete mode 100644 README delete mode 100755 autogen.sh delete mode 100644 composite.h delete mode 100644 compositeproto.h delete mode 100644 compositeproto.pc.in delete mode 100644 compositeproto.txt create mode 100644 compositeproto/.gitignore create mode 100644 compositeproto/AUTHORS create mode 100644 compositeproto/COPYING create mode 100644 compositeproto/Makefile.am create mode 100644 compositeproto/README create mode 100755 compositeproto/autogen.sh create mode 100644 compositeproto/composite.h create mode 100644 compositeproto/compositeproto.h create mode 100644 compositeproto/compositeproto.pc.in create mode 100644 compositeproto/compositeproto.txt create mode 100644 compositeproto/configure.ac delete mode 100644 configure.ac diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 896b3f5..0000000 --- a/.gitignore +++ /dev/null @@ -1,78 +0,0 @@ -# -# X.Org module default exclusion patterns -# The next section if for module specific patterns -# -# Do not edit the following section -# GNU Build System (Autotools) -aclocal.m4 -autom4te.cache/ -autoscan.log -ChangeLog -compile -config.guess -config.h -config.h.in -config.log -config-ml.in -config.py -config.status -config.status.lineno -config.sub -configure -configure.scan -depcomp -.deps/ -INSTALL -install-sh -.libs/ -libtool -libtool.m4 -ltmain.sh -lt~obsolete.m4 -ltoptions.m4 -ltsugar.m4 -ltversion.m4 -Makefile -Makefile.in -mdate-sh -missing -mkinstalldirs -*.pc -py-compile -stamp-h? -symlink-tree -texinfo.tex -ylwrap - -# Do not edit the following section -# Edit Compile Debug Document Distribute -*~ -*.[0-9] -*.[0-9]x -*.bak -*.bin -core -*.dll -*.exe -*-ISO*.bdf -*-JIS*.bdf -*-KOI8*.bdf -*.kld -*.ko -*.ko.cmd -*.lai -*.l[oa] -*.[oa] -*.obj -*.patch -*.so -*.pcf.gz -*.pdb -*.tar.bz2 -*.tar.gz -# -# Add & Override patterns for compositeproto -# -# Edit the following section as needed -# For example, !report.pc overrides *.pc. See 'man gitignore' -# diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index 8e18f9b..0000000 --- a/AUTHORS +++ /dev/null @@ -1 +0,0 @@ -Keith Packard, HP diff --git a/COPYING b/COPYING deleted file mode 100644 index 23c1a6c..0000000 --- a/COPYING +++ /dev/null @@ -1,41 +0,0 @@ -Copyright © 2006 Sun Microsystems, Inc. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next -paragraph) shall be included in all copies or substantial portions of the -Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -Copyright © 2003 Keith Packard - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of Keith Packard not be used in -advertising or publicity pertaining to distribution of the software without -specific, written prior permission. Keith Packard makes no -representations about the suitability of this software for any purpose. It -is provided "as is" without express or implied warranty. - -KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index 5a14884..0000000 --- a/Makefile.am +++ /dev/null @@ -1,43 +0,0 @@ -# -# Copyright © 2003 Keith Packard, Noah Levitt -# -# Permission to use, copy, modify, distribute, and sell this software and its -# documentation for any purpose is hereby granted without fee, provided that -# the above copyright notice appear in all copies and that both that -# copyright notice and this permission notice appear in supporting -# documentation, and that the name of Keith Packard not be used in -# advertising or publicity pertaining to distribution of the software without -# specific, written prior permission. Keith Packard makes no -# representations about the suitability of this software for any purpose. It -# is provided "as is" without express or implied warranty. -# -# KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -# EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR -# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -# DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -# PERFORMANCE OF THIS SOFTWARE. - -compositedir = $(includedir)/X11/extensions -composite_HEADERS = \ - composite.h \ - compositeproto.h - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = compositeproto.pc - -dist_doc_DATA = compositeproto.txt - - -MAINTAINERCLEANFILES = ChangeLog INSTALL - -.PHONY: ChangeLog INSTALL - -INSTALL: - $(INSTALL_CMD) - -ChangeLog: - $(CHANGELOG_CMD) - -dist-hook: ChangeLog INSTALL diff --git a/README b/README deleted file mode 100644 index 66b40a4..0000000 --- a/README +++ /dev/null @@ -1,33 +0,0 @@ - Composite Extension - Version 0.1 - 2003-11-04 - -This package contains header files and documentation for the composite -extension. Library and server implementations are separate. - -Keith Packard -keithp@keithp.com - -All questions regarding this software should be directed at the -Xorg mailing list: - - http://lists.freedesktop.org/mailman/listinfo/xorg - -Please submit bug reports to the Xorg bugzilla: - - https://bugs.freedesktop.org/enter_bug.cgi?product=xorg - -The master development code repository can be found at: - - git://anongit.freedesktop.org/git/xorg/proto/compositeproto - - http://cgit.freedesktop.org/xorg/proto/compositeproto - -For patch submission instructions, see: - - http://www.x.org/wiki/Development/Documentation/SubmittingPatches - -For more information on the git code manager, see: - - http://wiki.x.org/wiki/GitPage - diff --git a/autogen.sh b/autogen.sh deleted file mode 100755 index 904cd67..0000000 --- a/autogen.sh +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/sh - -srcdir=`dirname $0` -test -z "$srcdir" && srcdir=. - -ORIGDIR=`pwd` -cd $srcdir - -autoreconf -v --install || exit 1 -cd $ORIGDIR || exit $? - -$srcdir/configure --enable-maintainer-mode "$@" diff --git a/composite.h b/composite.h deleted file mode 100644 index 7725321..0000000 --- a/composite.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright © 2006 Sun Microsystems, Inc. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/* - * Copyright © 2003 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifndef _COMPOSITE_H_ -#define _COMPOSITE_H_ - -#include - -#define COMPOSITE_NAME "Composite" -#define COMPOSITE_MAJOR 0 -#define COMPOSITE_MINOR 4 - -#define CompositeRedirectAutomatic 0 -#define CompositeRedirectManual 1 - -#define X_CompositeQueryVersion 0 -#define X_CompositeRedirectWindow 1 -#define X_CompositeRedirectSubwindows 2 -#define X_CompositeUnredirectWindow 3 -#define X_CompositeUnredirectSubwindows 4 -#define X_CompositeCreateRegionFromBorderClip 5 -#define X_CompositeNameWindowPixmap 6 -#define X_CompositeGetOverlayWindow 7 -#define X_CompositeReleaseOverlayWindow 8 - -#define CompositeNumberRequests (X_CompositeReleaseOverlayWindow + 1) - -#define CompositeNumberEvents 0 - -#endif /* _COMPOSITE_H_ */ diff --git a/compositeproto.h b/compositeproto.h deleted file mode 100644 index aa6cd8a..0000000 --- a/compositeproto.h +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright © 2006 Sun Microsystems, Inc. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/* - * Copyright © 2003 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifndef _COMPOSITEPROTO_H_ -#define _COMPOSITEPROTO_H_ - -#include -#include - -#define Window CARD32 -#define Region CARD32 -#define Pixmap CARD32 - -/* - * requests and replies - */ -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length B16; - CARD32 majorVersion B32; - CARD32 minorVersion B32; -} xCompositeQueryVersionReq; - -#define sz_xCompositeQueryVersionReq 12 - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 majorVersion B32; - CARD32 minorVersion B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; -} xCompositeQueryVersionReply; - -#define sz_xCompositeQueryVersionReply 32 - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length B16; - Window window B32; - CARD8 update; - CARD8 pad1; - CARD16 pad2 B16; -} xCompositeRedirectWindowReq; - -#define sz_xCompositeRedirectWindowReq 12 - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length B16; - Window window B32; - CARD8 update; - CARD8 pad1; - CARD16 pad2 B16; -} xCompositeRedirectSubwindowsReq; - -#define sz_xCompositeRedirectSubwindowsReq 12 - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length B16; - Window window B32; - CARD8 update; - CARD8 pad1; - CARD16 pad2 B16; -} xCompositeUnredirectWindowReq; - -#define sz_xCompositeUnredirectWindowReq 12 - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length B16; - Window window B32; - CARD8 update; - CARD8 pad1; - CARD16 pad2 B16; -} xCompositeUnredirectSubwindowsReq; - -#define sz_xCompositeUnredirectSubwindowsReq 12 - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length B16; - Region region B32; - Window window B32; -} xCompositeCreateRegionFromBorderClipReq; - -#define sz_xCompositeCreateRegionFromBorderClipReq 12 - -/* Version 0.2 additions */ - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length; - Window window B32; - Pixmap pixmap B32; -} xCompositeNameWindowPixmapReq; - -#define sz_xCompositeNameWindowPixmapReq 12 - -/* Version 0.3 additions */ - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length B16; - Window window B32; -} xCompositeGetOverlayWindowReq; - -#define sz_xCompositeGetOverlayWindowReq sizeof(xCompositeGetOverlayWindowReq) - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - Window overlayWin B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; -} xCompositeGetOverlayWindowReply; - -#define sz_xCompositeGetOverlayWindowReply sizeof(xCompositeGetOverlayWindowReply) - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length B16; - Window window B32; -} xCompositeReleaseOverlayWindowReq; - -#define sz_xCompositeReleaseOverlayWindowReq sizeof(xCompositeReleaseOverlayWindowReq) - -#undef Window -#undef Region -#undef Pixmap - -#endif /* _COMPOSITEPROTO_H_ */ diff --git a/compositeproto.pc.in b/compositeproto.pc.in deleted file mode 100644 index 6348022..0000000 --- a/compositeproto.pc.in +++ /dev/null @@ -1,9 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: CompositeExt -Description: Composite extension headers -Version: @PACKAGE_VERSION@ -Cflags: -I${includedir} diff --git a/compositeproto.txt b/compositeproto.txt deleted file mode 100644 index 4b86621..0000000 --- a/compositeproto.txt +++ /dev/null @@ -1,339 +0,0 @@ - Composite Extension - Version 0.4 - 2007-7-3 - Keith Packard - keithp@keithp.com - Deron Johnson - deron.johnson@sun.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 - - + Carsten Haitzler for Enlightenment, the original eye-candy window - manager which demonstrated that clever hacks are an awfully - close substitute for changes in the underlying system. - - + Jim Gettys for key insights into the relationship between damage - events and per-window pixmap usage - - + Mike Harris and Owen Taylor for figuring out what to call it. - - + Deron Johnson for the Looking Glass implementation and - a prototype of the coordinate transformation mechanism. - - + Ryan Lortie for helping figure out reasonable parent clipping - semantics in the presense of manual redirected children. - -3. Architecture - -The composite extension provides three 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. - - 3. External parent - child pointer coordinate transformation. - When a hierarchy is under manual compositing, the relationship - of coordinates within the parent to those in the child may - not be known within the X server. This mechanism provides - for redirection of these transformations through a client. - -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, its borders and the -contents of all descendants. - -3.1 NameWindowPixmap - -Version 0.2 of the protocol introduces a mechanism for associating an XID -with the off-screen pixmap used to store these contents. This can be used -to hold onto window contents after the window is unmapped (and hence animate -it's disappearance), and also to access the border of the window, which is -not reachable through the Window ID itself. A new pixmap is created each -time the window is mapped or resized; as these events are nicely signalled -with existing events, no additional notification is needed. The old pixmap -will remain allocated as long as the Pixmap ID is left valid, it is -important that the client use the FreePixmap request when it is done with -the contents and to create a new name for the newly allocated pixmap. - -In automatic update mode, the X server is itself responsible for presenting -the child window contents within the parent. It seems reasonable, then, for -rendering to the parent window to be clipped so as not to interfere with any -child window content. In an environment with a mixure of manual and -automatic updating windows, rendering to the parent in the area nominally -occupied by a manual update window should be able to affect parent pixel -values in those areas, but such rendering should be clipped to automatic -update windows, and presumably to other manual update windows managed by -other applications. In any of these cases, it should be easy to ensure that -rendering has no effect on any non-redirected windows. - -Instead of attempting to define new clipping modes for rendering, the -Composite extension instead defines ClipByChildren rendering to the parent -to exclude regions occupied by redirected windows (either automatic or -manual). The CreateRegionFromBorderClip request can be used along with -IncludeInferiors clipping modes to restrict manual shadow updates to the -apporpriate region of the screen. Bracketing operations with -GrabServer/UngrabServer will permit atomic sequences that can update the -screen without artifact. As all of these operations are asynchronous, -network latency should not adversely affect update latency. - -3.2 Composite Overlay Window - -Version 0.3 of the protocol adds the Composite Overlay Window, which -provides compositing managers with a surface on which to draw without -interference. This window is always above normal windows and is always -below the screen saver window. It is an InputOutput window whose width -and height are the screen dimensions. Its visual is the root visual -and its border width is zero. Attempts to redirect it using the -composite extension are ignored. This window does not appear in the -reply of the QueryTree request. It is also an override redirect window. -These last two features make it invisible to window managers and other X11 -clients. The only way to access the XID of this window is via the -CompositeGetOverlayWindow request. Initially, the Composite Overlay -Window is unmapped. - -CompositeGetOverlayWindow returns the XID of the Composite Overlay -Window. If the window has not yet been mapped, it is mapped by this -request. When all clients who have called this request have terminated -their X11 connections the window is unmapped. - -Composite managers may render directly to the Composite Overlay -Window, or they may reparent other windows to be children of this -window and render to these. Multiple clients may render to the -Composite Overlay Window, create child windows of it, reshape it, and -redefine its input region, but the specific arbitration rules followed -by these clients is not defined by this specification; these policies -should be defined by the clients themselves. - -3.3 Clipping semantics redefined - -Version 0.4 of the protocol changes the semantics of clipping in the -presense of manual redirect children. In version 0.3, a parent was always -clipped to child windows, independent of the kind of redirection going on. -With version 0.4, the parent is no longer clipped to child windows which are -manually redirected. This means the parent can draw in the child region without using -IncludeInferiors mode, and (perhaps more importantly), it will receive -expose events in those regions caused by other actions. This new behaviour -is not selectable. - -4. Errors - -The composite extension does not define any new errors. - -5. Types - - UPDATETYPE { Automatic, Manual } - - CompositeCoordinate - child: Window - x, y: CARD16 - -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 client's 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 - update: UPDATETYPE - - errors: Window, Access, Match - - The hierarchy starting at 'window' is directed to off-screen - storage. 'update' specifies whether the contents are mirrored to - the parent window automatically or not. Only one client may specify - an update type of Manual, another attempt will result in an - Access error. When all clients enabling redirection terminate, - the redirection will automatically be disabled. - - The root window may not be redirected. Doing so results in a Match - error. - - RedirectSubwindows - - window: Window - update UPDATETYPE - - errors: Window, Access - - Hierarchies starting at all current and future children of window - will be redirected as in RedirectWindow. If update is Manual, - then painting of the window background during window manipulation - and ClearArea requests is inhibited. - - UnredirectWindow: - - window: Window - - errors: Window, Value - - Redirection of the specified window will be terminated. If - the specified window was not selected for redirection by the - current client, a 'Value' error results. - - UnredirectWindows: - - window: Window - - errors: Window, Value - - Redirection of all children of window will be terminated. If - the specified window was not selected for sub-redirection by the - current client, a 'Value' error results. - -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. - -10. Associating a Pixmap ID with the off-screen storage (0.2 and later) - - NameWindowPixmap - - window: Window - pixmap: Pixmap - - errors: Window, Match, IDChoice - - This request makes 'pixmap' a reference to the off-screen storage - for 'window'. This pixmap will remain allocated until freed, even - if 'window' is unmapped, reconfigured or destroyed. However, - 'window' will get a new pixmap allocated each time it is - mapped or resized, so this request will need to be reinvoked for - the client to continue to refer to the storage holding the current - window contents. Generates a 'Match' error if 'window' is not - redirected or is not visible. - -11. Composite Overlay Window (0.3 and later) - - CompositeGetOverlayWindow - - window: Window - - -> - - overlayWin: Window - - This request returns the XID of the Composite Overlay Window for - the screen specified by the argument 'window'. This request - indicates that the client wishes to use the Composite Overlay - Window of this screen. If this Composite Overlay Window has not - yet been mapped, it is mapped by this request. - - The Composite Overlay Window for a particular screen will be - unmapped when all clients who have invoked this request have - also invoked CompositeReleaseOverlayWindow for that screen. Also, - CompositeReleaseOverlayWindow for a screen will be implicitly - called when a client using the Composite Overlay Window on that - screen terminates its X11 connection. - - - CompositeReleaseOverlayWindow - - window: Window - - This request specifies that the client is no longer using the - Composite Overlay Window on the screen specified by the - argument 'window'. A screen's Composite Overlay Window is - unmapped when there are no longer any clients using it. - -12. External coordinate transformation (0.4 and later) - - RedirectCoordinate - - window: Window - redirect: BOOL - - errors: Window, Access - - If 'redirect' is TRUE, the requesting client is placed in charge of - coordinate transformations between 'window' and its children. If - 'redirect' is FALSE, any such redirection is disabled. Any - transformations needed by the server will be delivered to the - requesting client in TransformCoordinateNotify events and the - requesting client must reply with matching TransformCoordinate - requests for the server to continue with the operation. - - Generates an 'Access' error if another client has - redirected coordinates for 'window'. - - TransformCoordinate - - window: Window - serialNumber: CARD32 - x, y: INT16 - coordinates: LISTofCompositeCoordinate - - This provides the transformation data needed by the server for a - single TransformCoordinateNotify event. 'serialNumber' must match - the serial number delivered in the event. 'x' and 'y' represent the - coordinate from the event relative to the 'window'. 'coordinates' - represent the coordinate from the event relative to each child - listed. Any children not listed in 'coordinates' are given the - default transformation using the child window position within the - parent as a simple translation. - - The result of this is that any pointer data seen by means of - the protocol will appear to reflect the transformation - performed by this request. diff --git a/compositeproto/.gitignore b/compositeproto/.gitignore new file mode 100644 index 0000000..896b3f5 --- /dev/null +++ b/compositeproto/.gitignore @@ -0,0 +1,78 @@ +# +# X.Org module default exclusion patterns +# The next section if for module specific patterns +# +# Do not edit the following section +# GNU Build System (Autotools) +aclocal.m4 +autom4te.cache/ +autoscan.log +ChangeLog +compile +config.guess +config.h +config.h.in +config.log +config-ml.in +config.py +config.status +config.status.lineno +config.sub +configure +configure.scan +depcomp +.deps/ +INSTALL +install-sh +.libs/ +libtool +libtool.m4 +ltmain.sh +lt~obsolete.m4 +ltoptions.m4 +ltsugar.m4 +ltversion.m4 +Makefile +Makefile.in +mdate-sh +missing +mkinstalldirs +*.pc +py-compile +stamp-h? +symlink-tree +texinfo.tex +ylwrap + +# Do not edit the following section +# Edit Compile Debug Document Distribute +*~ +*.[0-9] +*.[0-9]x +*.bak +*.bin +core +*.dll +*.exe +*-ISO*.bdf +*-JIS*.bdf +*-KOI8*.bdf +*.kld +*.ko +*.ko.cmd +*.lai +*.l[oa] +*.[oa] +*.obj +*.patch +*.so +*.pcf.gz +*.pdb +*.tar.bz2 +*.tar.gz +# +# Add & Override patterns for compositeproto +# +# Edit the following section as needed +# For example, !report.pc overrides *.pc. See 'man gitignore' +# diff --git a/compositeproto/AUTHORS b/compositeproto/AUTHORS new file mode 100644 index 0000000..8e18f9b --- /dev/null +++ b/compositeproto/AUTHORS @@ -0,0 +1 @@ +Keith Packard, HP diff --git a/compositeproto/COPYING b/compositeproto/COPYING new file mode 100644 index 0000000..23c1a6c --- /dev/null +++ b/compositeproto/COPYING @@ -0,0 +1,41 @@ +Copyright © 2006 Sun Microsystems, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +Copyright © 2003 Keith Packard + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Keith Packard not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Keith Packard makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + diff --git a/compositeproto/Makefile.am b/compositeproto/Makefile.am new file mode 100644 index 0000000..5a14884 --- /dev/null +++ b/compositeproto/Makefile.am @@ -0,0 +1,43 @@ +# +# Copyright © 2003 Keith Packard, Noah Levitt +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of Keith Packard not be used in +# advertising or publicity pertaining to distribution of the software without +# specific, written prior permission. Keith Packard makes no +# representations about the suitability of this software for any purpose. It +# is provided "as is" without express or implied warranty. +# +# KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +# EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +# DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +compositedir = $(includedir)/X11/extensions +composite_HEADERS = \ + composite.h \ + compositeproto.h + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = compositeproto.pc + +dist_doc_DATA = compositeproto.txt + + +MAINTAINERCLEANFILES = ChangeLog INSTALL + +.PHONY: ChangeLog INSTALL + +INSTALL: + $(INSTALL_CMD) + +ChangeLog: + $(CHANGELOG_CMD) + +dist-hook: ChangeLog INSTALL diff --git a/compositeproto/README b/compositeproto/README new file mode 100644 index 0000000..66b40a4 --- /dev/null +++ b/compositeproto/README @@ -0,0 +1,33 @@ + Composite Extension + Version 0.1 + 2003-11-04 + +This package contains header files and documentation for the composite +extension. Library and server implementations are separate. + +Keith Packard +keithp@keithp.com + +All questions regarding this software should be directed at the +Xorg mailing list: + + http://lists.freedesktop.org/mailman/listinfo/xorg + +Please submit bug reports to the Xorg bugzilla: + + https://bugs.freedesktop.org/enter_bug.cgi?product=xorg + +The master development code repository can be found at: + + git://anongit.freedesktop.org/git/xorg/proto/compositeproto + + http://cgit.freedesktop.org/xorg/proto/compositeproto + +For patch submission instructions, see: + + http://www.x.org/wiki/Development/Documentation/SubmittingPatches + +For more information on the git code manager, see: + + http://wiki.x.org/wiki/GitPage + diff --git a/compositeproto/autogen.sh b/compositeproto/autogen.sh new file mode 100755 index 0000000..904cd67 --- /dev/null +++ b/compositeproto/autogen.sh @@ -0,0 +1,12 @@ +#! /bin/sh + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. + +ORIGDIR=`pwd` +cd $srcdir + +autoreconf -v --install || exit 1 +cd $ORIGDIR || exit $? + +$srcdir/configure --enable-maintainer-mode "$@" diff --git a/compositeproto/composite.h b/compositeproto/composite.h new file mode 100644 index 0000000..7725321 --- /dev/null +++ b/compositeproto/composite.h @@ -0,0 +1,71 @@ +/* + * Copyright © 2006 Sun Microsystems, Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +/* + * Copyright © 2003 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef _COMPOSITE_H_ +#define _COMPOSITE_H_ + +#include + +#define COMPOSITE_NAME "Composite" +#define COMPOSITE_MAJOR 0 +#define COMPOSITE_MINOR 4 + +#define CompositeRedirectAutomatic 0 +#define CompositeRedirectManual 1 + +#define X_CompositeQueryVersion 0 +#define X_CompositeRedirectWindow 1 +#define X_CompositeRedirectSubwindows 2 +#define X_CompositeUnredirectWindow 3 +#define X_CompositeUnredirectSubwindows 4 +#define X_CompositeCreateRegionFromBorderClip 5 +#define X_CompositeNameWindowPixmap 6 +#define X_CompositeGetOverlayWindow 7 +#define X_CompositeReleaseOverlayWindow 8 + +#define CompositeNumberRequests (X_CompositeReleaseOverlayWindow + 1) + +#define CompositeNumberEvents 0 + +#endif /* _COMPOSITE_H_ */ diff --git a/compositeproto/compositeproto.h b/compositeproto/compositeproto.h new file mode 100644 index 0000000..aa6cd8a --- /dev/null +++ b/compositeproto/compositeproto.h @@ -0,0 +1,192 @@ +/* + * Copyright © 2006 Sun Microsystems, Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +/* + * Copyright © 2003 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef _COMPOSITEPROTO_H_ +#define _COMPOSITEPROTO_H_ + +#include +#include + +#define Window CARD32 +#define Region CARD32 +#define Pixmap CARD32 + +/* + * requests and replies + */ +typedef struct { + CARD8 reqType; + CARD8 compositeReqType; + CARD16 length B16; + CARD32 majorVersion B32; + CARD32 minorVersion B32; +} xCompositeQueryVersionReq; + +#define sz_xCompositeQueryVersionReq 12 + +typedef struct { + BYTE type; /* X_Reply */ + BYTE pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 majorVersion B32; + CARD32 minorVersion B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; +} xCompositeQueryVersionReply; + +#define sz_xCompositeQueryVersionReply 32 + +typedef struct { + CARD8 reqType; + CARD8 compositeReqType; + CARD16 length B16; + Window window B32; + CARD8 update; + CARD8 pad1; + CARD16 pad2 B16; +} xCompositeRedirectWindowReq; + +#define sz_xCompositeRedirectWindowReq 12 + +typedef struct { + CARD8 reqType; + CARD8 compositeReqType; + CARD16 length B16; + Window window B32; + CARD8 update; + CARD8 pad1; + CARD16 pad2 B16; +} xCompositeRedirectSubwindowsReq; + +#define sz_xCompositeRedirectSubwindowsReq 12 + +typedef struct { + CARD8 reqType; + CARD8 compositeReqType; + CARD16 length B16; + Window window B32; + CARD8 update; + CARD8 pad1; + CARD16 pad2 B16; +} xCompositeUnredirectWindowReq; + +#define sz_xCompositeUnredirectWindowReq 12 + +typedef struct { + CARD8 reqType; + CARD8 compositeReqType; + CARD16 length B16; + Window window B32; + CARD8 update; + CARD8 pad1; + CARD16 pad2 B16; +} xCompositeUnredirectSubwindowsReq; + +#define sz_xCompositeUnredirectSubwindowsReq 12 + +typedef struct { + CARD8 reqType; + CARD8 compositeReqType; + CARD16 length B16; + Region region B32; + Window window B32; +} xCompositeCreateRegionFromBorderClipReq; + +#define sz_xCompositeCreateRegionFromBorderClipReq 12 + +/* Version 0.2 additions */ + +typedef struct { + CARD8 reqType; + CARD8 compositeReqType; + CARD16 length; + Window window B32; + Pixmap pixmap B32; +} xCompositeNameWindowPixmapReq; + +#define sz_xCompositeNameWindowPixmapReq 12 + +/* Version 0.3 additions */ + +typedef struct { + CARD8 reqType; + CARD8 compositeReqType; + CARD16 length B16; + Window window B32; +} xCompositeGetOverlayWindowReq; + +#define sz_xCompositeGetOverlayWindowReq sizeof(xCompositeGetOverlayWindowReq) + +typedef struct { + BYTE type; /* X_Reply */ + BYTE pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + Window overlayWin B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xCompositeGetOverlayWindowReply; + +#define sz_xCompositeGetOverlayWindowReply sizeof(xCompositeGetOverlayWindowReply) + +typedef struct { + CARD8 reqType; + CARD8 compositeReqType; + CARD16 length B16; + Window window B32; +} xCompositeReleaseOverlayWindowReq; + +#define sz_xCompositeReleaseOverlayWindowReq sizeof(xCompositeReleaseOverlayWindowReq) + +#undef Window +#undef Region +#undef Pixmap + +#endif /* _COMPOSITEPROTO_H_ */ diff --git a/compositeproto/compositeproto.pc.in b/compositeproto/compositeproto.pc.in new file mode 100644 index 0000000..6348022 --- /dev/null +++ b/compositeproto/compositeproto.pc.in @@ -0,0 +1,9 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: CompositeExt +Description: Composite extension headers +Version: @PACKAGE_VERSION@ +Cflags: -I${includedir} diff --git a/compositeproto/compositeproto.txt b/compositeproto/compositeproto.txt new file mode 100644 index 0000000..4b86621 --- /dev/null +++ b/compositeproto/compositeproto.txt @@ -0,0 +1,339 @@ + Composite Extension + Version 0.4 + 2007-7-3 + Keith Packard + keithp@keithp.com + Deron Johnson + deron.johnson@sun.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 + + + Carsten Haitzler for Enlightenment, the original eye-candy window + manager which demonstrated that clever hacks are an awfully + close substitute for changes in the underlying system. + + + Jim Gettys for key insights into the relationship between damage + events and per-window pixmap usage + + + Mike Harris and Owen Taylor for figuring out what to call it. + + + Deron Johnson for the Looking Glass implementation and + a prototype of the coordinate transformation mechanism. + + + Ryan Lortie for helping figure out reasonable parent clipping + semantics in the presense of manual redirected children. + +3. Architecture + +The composite extension provides three 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. + + 3. External parent - child pointer coordinate transformation. + When a hierarchy is under manual compositing, the relationship + of coordinates within the parent to those in the child may + not be known within the X server. This mechanism provides + for redirection of these transformations through a client. + +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, its borders and the +contents of all descendants. + +3.1 NameWindowPixmap + +Version 0.2 of the protocol introduces a mechanism for associating an XID +with the off-screen pixmap used to store these contents. This can be used +to hold onto window contents after the window is unmapped (and hence animate +it's disappearance), and also to access the border of the window, which is +not reachable through the Window ID itself. A new pixmap is created each +time the window is mapped or resized; as these events are nicely signalled +with existing events, no additional notification is needed. The old pixmap +will remain allocated as long as the Pixmap ID is left valid, it is +important that the client use the FreePixmap request when it is done with +the contents and to create a new name for the newly allocated pixmap. + +In automatic update mode, the X server is itself responsible for presenting +the child window contents within the parent. It seems reasonable, then, for +rendering to the parent window to be clipped so as not to interfere with any +child window content. In an environment with a mixure of manual and +automatic updating windows, rendering to the parent in the area nominally +occupied by a manual update window should be able to affect parent pixel +values in those areas, but such rendering should be clipped to automatic +update windows, and presumably to other manual update windows managed by +other applications. In any of these cases, it should be easy to ensure that +rendering has no effect on any non-redirected windows. + +Instead of attempting to define new clipping modes for rendering, the +Composite extension instead defines ClipByChildren rendering to the parent +to exclude regions occupied by redirected windows (either automatic or +manual). The CreateRegionFromBorderClip request can be used along with +IncludeInferiors clipping modes to restrict manual shadow updates to the +apporpriate region of the screen. Bracketing operations with +GrabServer/UngrabServer will permit atomic sequences that can update the +screen without artifact. As all of these operations are asynchronous, +network latency should not adversely affect update latency. + +3.2 Composite Overlay Window + +Version 0.3 of the protocol adds the Composite Overlay Window, which +provides compositing managers with a surface on which to draw without +interference. This window is always above normal windows and is always +below the screen saver window. It is an InputOutput window whose width +and height are the screen dimensions. Its visual is the root visual +and its border width is zero. Attempts to redirect it using the +composite extension are ignored. This window does not appear in the +reply of the QueryTree request. It is also an override redirect window. +These last two features make it invisible to window managers and other X11 +clients. The only way to access the XID of this window is via the +CompositeGetOverlayWindow request. Initially, the Composite Overlay +Window is unmapped. + +CompositeGetOverlayWindow returns the XID of the Composite Overlay +Window. If the window has not yet been mapped, it is mapped by this +request. When all clients who have called this request have terminated +their X11 connections the window is unmapped. + +Composite managers may render directly to the Composite Overlay +Window, or they may reparent other windows to be children of this +window and render to these. Multiple clients may render to the +Composite Overlay Window, create child windows of it, reshape it, and +redefine its input region, but the specific arbitration rules followed +by these clients is not defined by this specification; these policies +should be defined by the clients themselves. + +3.3 Clipping semantics redefined + +Version 0.4 of the protocol changes the semantics of clipping in the +presense of manual redirect children. In version 0.3, a parent was always +clipped to child windows, independent of the kind of redirection going on. +With version 0.4, the parent is no longer clipped to child windows which are +manually redirected. This means the parent can draw in the child region without using +IncludeInferiors mode, and (perhaps more importantly), it will receive +expose events in those regions caused by other actions. This new behaviour +is not selectable. + +4. Errors + +The composite extension does not define any new errors. + +5. Types + + UPDATETYPE { Automatic, Manual } + + CompositeCoordinate + child: Window + x, y: CARD16 + +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 client's 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 + update: UPDATETYPE + + errors: Window, Access, Match + + The hierarchy starting at 'window' is directed to off-screen + storage. 'update' specifies whether the contents are mirrored to + the parent window automatically or not. Only one client may specify + an update type of Manual, another attempt will result in an + Access error. When all clients enabling redirection terminate, + the redirection will automatically be disabled. + + The root window may not be redirected. Doing so results in a Match + error. + + RedirectSubwindows + + window: Window + update UPDATETYPE + + errors: Window, Access + + Hierarchies starting at all current and future children of window + will be redirected as in RedirectWindow. If update is Manual, + then painting of the window background during window manipulation + and ClearArea requests is inhibited. + + UnredirectWindow: + + window: Window + + errors: Window, Value + + Redirection of the specified window will be terminated. If + the specified window was not selected for redirection by the + current client, a 'Value' error results. + + UnredirectWindows: + + window: Window + + errors: Window, Value + + Redirection of all children of window will be terminated. If + the specified window was not selected for sub-redirection by the + current client, a 'Value' error results. + +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. + +10. Associating a Pixmap ID with the off-screen storage (0.2 and later) + + NameWindowPixmap + + window: Window + pixmap: Pixmap + + errors: Window, Match, IDChoice + + This request makes 'pixmap' a reference to the off-screen storage + for 'window'. This pixmap will remain allocated until freed, even + if 'window' is unmapped, reconfigured or destroyed. However, + 'window' will get a new pixmap allocated each time it is + mapped or resized, so this request will need to be reinvoked for + the client to continue to refer to the storage holding the current + window contents. Generates a 'Match' error if 'window' is not + redirected or is not visible. + +11. Composite Overlay Window (0.3 and later) + + CompositeGetOverlayWindow + + window: Window + + -> + + overlayWin: Window + + This request returns the XID of the Composite Overlay Window for + the screen specified by the argument 'window'. This request + indicates that the client wishes to use the Composite Overlay + Window of this screen. If this Composite Overlay Window has not + yet been mapped, it is mapped by this request. + + The Composite Overlay Window for a particular screen will be + unmapped when all clients who have invoked this request have + also invoked CompositeReleaseOverlayWindow for that screen. Also, + CompositeReleaseOverlayWindow for a screen will be implicitly + called when a client using the Composite Overlay Window on that + screen terminates its X11 connection. + + + CompositeReleaseOverlayWindow + + window: Window + + This request specifies that the client is no longer using the + Composite Overlay Window on the screen specified by the + argument 'window'. A screen's Composite Overlay Window is + unmapped when there are no longer any clients using it. + +12. External coordinate transformation (0.4 and later) + + RedirectCoordinate + + window: Window + redirect: BOOL + + errors: Window, Access + + If 'redirect' is TRUE, the requesting client is placed in charge of + coordinate transformations between 'window' and its children. If + 'redirect' is FALSE, any such redirection is disabled. Any + transformations needed by the server will be delivered to the + requesting client in TransformCoordinateNotify events and the + requesting client must reply with matching TransformCoordinate + requests for the server to continue with the operation. + + Generates an 'Access' error if another client has + redirected coordinates for 'window'. + + TransformCoordinate + + window: Window + serialNumber: CARD32 + x, y: INT16 + coordinates: LISTofCompositeCoordinate + + This provides the transformation data needed by the server for a + single TransformCoordinateNotify event. 'serialNumber' must match + the serial number delivered in the event. 'x' and 'y' represent the + coordinate from the event relative to the 'window'. 'coordinates' + represent the coordinate from the event relative to each child + listed. Any children not listed in 'coordinates' are given the + default transformation using the child window position within the + parent as a simple translation. + + The result of this is that any pointer data seen by means of + the protocol will appear to reflect the transformation + performed by this request. diff --git a/compositeproto/configure.ac b/compositeproto/configure.ac new file mode 100644 index 0000000..45969f7 --- /dev/null +++ b/compositeproto/configure.ac @@ -0,0 +1,37 @@ +dnl +dnl Copyright © 2003 Keith Packard, Noah Levitt +dnl +dnl Permission to use, copy, modify, distribute, and sell this software and its +dnl documentation for any purpose is hereby granted without fee, provided that +dnl the above copyright notice appear in all copies and that both that +dnl copyright notice and this permission notice appear in supporting +dnl documentation, and that the name of Keith Packard not be used in +dnl advertising or publicity pertaining to distribution of the software without +dnl specific, written prior permission. Keith Packard makes no +dnl representations about the suitability of this software for any purpose. It +dnl is provided "as is" without express or implied warranty. +dnl +dnl KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +dnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +dnl EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +dnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +dnl DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +dnl TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +dnl PERFORMANCE OF THIS SOFTWARE. +dnl +dnl Process this file with autoconf to create configure. + +AC_PREREQ([2.60]) +AC_INIT([CompositeProto], [0.4.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AM_INIT_AUTOMAKE([foreign dist-bzip2]) +AM_MAINTAINER_MODE + +# Require xorg-macros: XORG_DEFAULT_OPTIONS +m4_ifndef([XORG_MACROS_VERSION], + [m4_fatal([must install xorg-macros 1.3 or later before running autoconf/autogen])]) +XORG_MACROS_VERSION(1.3) +XORG_DEFAULT_OPTIONS + +AC_OUTPUT([Makefile + compositeproto.pc]) + diff --git a/configure.ac b/configure.ac deleted file mode 100644 index 45969f7..0000000 --- a/configure.ac +++ /dev/null @@ -1,37 +0,0 @@ -dnl -dnl Copyright © 2003 Keith Packard, Noah Levitt -dnl -dnl Permission to use, copy, modify, distribute, and sell this software and its -dnl documentation for any purpose is hereby granted without fee, provided that -dnl the above copyright notice appear in all copies and that both that -dnl copyright notice and this permission notice appear in supporting -dnl documentation, and that the name of Keith Packard not be used in -dnl advertising or publicity pertaining to distribution of the software without -dnl specific, written prior permission. Keith Packard makes no -dnl representations about the suitability of this software for any purpose. It -dnl is provided "as is" without express or implied warranty. -dnl -dnl KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -dnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -dnl EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR -dnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -dnl DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -dnl TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -dnl PERFORMANCE OF THIS SOFTWARE. -dnl -dnl Process this file with autoconf to create configure. - -AC_PREREQ([2.60]) -AC_INIT([CompositeProto], [0.4.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) -AM_INIT_AUTOMAKE([foreign dist-bzip2]) -AM_MAINTAINER_MODE - -# Require xorg-macros: XORG_DEFAULT_OPTIONS -m4_ifndef([XORG_MACROS_VERSION], - [m4_fatal([must install xorg-macros 1.3 or later before running autoconf/autogen])]) -XORG_MACROS_VERSION(1.3) -XORG_DEFAULT_OPTIONS - -AC_OUTPUT([Makefile - compositeproto.pc]) - -- cgit v1.2.3