Tizen 2.1 base tizen_2.1 tizen_2.2 2.1b_release 2.2.1_release 2.2_release accepted/tizen_2.1/20130425.024120 submit/tizen_2.1/20130424.234810 submit/tizen_2.2/20130714.155200
authorJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:54:36 +0000 (01:54 +0900)
committerJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:54:36 +0000 (01:54 +0900)
13 files changed:
AUTHORS [new file with mode: 0644]
COPYING [new file with mode: 0755]
ChangeLog [new file with mode: 0755]
INSTALL [new file with mode: 0644]
Makefile.am [new file with mode: 0755]
README [new file with mode: 0644]
autogen.sh [new file with mode: 0755]
composite.h [new file with mode: 0755]
compositeproto.h [new file with mode: 0755]
compositeproto.pc.in [new file with mode: 0644]
compositeproto.txt [new file with mode: 0644]
configure.ac [new file with mode: 0755]
packaging/xorg-x11-proto-composite.spec [new file with mode: 0644]

diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..8e18f9b
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1 @@
+Keith Packard, HP
diff --git a/COPYING b/COPYING
new file mode 100755 (executable)
index 0000000..b541db8
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,41 @@
+Copyright (c) 2006, Oracle and/or its affiliates. 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/ChangeLog b/ChangeLog
new file mode 100755 (executable)
index 0000000..afb677d
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,360 @@
+commit d358d6290af3d9cedb7b6d7e16058370e4779508
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date:   Fri Oct 29 20:27:55 2010 -0700
+
+    compositeproto 0.4.2
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 6eece824c1cb40bdfc1007b26ce765803d110712
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date:   Fri Oct 29 20:26:29 2010 -0700
+
+    Sun's copyrights now belong to Oracle
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 68ff97cd30c709439c088bfea2c33a4f9632ed38
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date:   Sun Mar 28 19:00:30 2010 -0400
+
+    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 <memsize@videotron.ca>
+
+commit 1a48a0d70e00fd11521e436864a8ec0705e58285
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Fri Jan 15 13:34:49 2010 -0800
+
+    Update Sun license notices to current X.Org standard form
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit e827d7b875a6b16e9e7208af3407cb96cd1e91ed
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Fri Jan 15 13:36:08 2010 -0800
+
+    Purge CVS/RCS $Id$ tags
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit 843e916e15b117c1142ab78d35b9ea722bdc7a0b
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date:   Mon Nov 16 11:47:44 2009 -0500
+
+    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 <memsize@videotron.ca>
+
+commit fdf8d73a27cd0cadae5a14e7a88870121ae113aa
+Author: Rémi Cardona <remi@gentoo.org>
+Date:   Thu Dec 17 08:32:20 2009 +0100
+
+    Use $(docdir) for compositeproto.txt install path
+    
+    Signed-off-by: Rémi Cardona <remi@gentoo.org>
+    Reviewed-by: Gaetan Nadon <memsize@videotron.ca>
+    Reviewed-by: Alan Coopersmith <alan.coopersmith@sun.com>
+    Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
+
+commit 5ecb066e04595d300a0faad0f95c859a709ff857
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date:   Sun Nov 22 19:24:47 2009 -0500
+
+    Makefile.am: add ChangeLog and INSTALL on MAINTAINERCLEANFILES
+    
+    Now that the INSTALL file is generated.
+    Allows running make maintainer-clean.
+
+commit 330cbabbbf73b310b237e6745185f338d7d33998
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date:   Wed Nov 18 19:00:34 2009 -0500
+
+    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
+
+commit 260cc8eadd89b3fc9f59e505e34dcb5bc09018bd
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date:   Sun Nov 15 20:25:50 2009 -0500
+
+    NEWS: remove empty file #24206
+
+commit 55f6f1eec2a0baca0f6c7738cc2e54e7098b3652
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date:   Sun Nov 15 19:45:26 2009 -0500
+
+    Makefile.am: ChangeLog not required: EXTRA_DIST or *CLEANFILES #24432
+    
+    ChangeLog filename is known to Automake and requires no further
+    coding in the makefile.
+
+commit ad60112eb2eacb50954bf9cd461b9e90d6f64a63
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date:   Sun Nov 15 18:31:28 2009 -0500
+
+    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
+
+commit 8a7c2c629635510a0728d5ab086b0f4b600b0e49
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date:   Sun Nov 15 18:11:36 2009 -0500
+
+    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.
+
+commit 00dc749894784dc6f1b749903ef872572f678c3c
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date:   Sat Nov 14 18:26:46 2009 -0500
+
+    .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.
+
+commit 39612a7153ac3e800c5dbb11a7f760c53797bf73
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Fri Oct 2 18:59:54 2009 -0700
+
+    compositeproto 0.4.1
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit ad173235db562b7f788ad82e5b4849c1519bd0b5
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Fri Oct 2 18:57:51 2009 -0700
+
+    Migrate to xorg macros 1.3 & XORG_DEFAULT_OPTIONS
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit bbdc2ae4f4115332337460631911857cbadaf603
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Fri Oct 2 18:52:44 2009 -0700
+
+    Add pointers to mailing list, git repo, and wiki to README
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit 961dbcda7fcfd15a3e60bfb905f05286ba33508f
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date:   Wed Jul 8 10:03:40 2009 -0400
+
+    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 <memsize@videotron.ca>
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 2ffb32d61cbed1452d67abb2028ac13910550392
+Author: James Cloos <cloos@jhcloos.com>
+Date:   Thu Dec 6 16:38:57 2007 -0500
+
+    Replace static ChangeLog with dist-hook to generate from git log
+
+commit 5ac473a9375fa43896e379da96d1955653960350
+Author: Jeremy C. Reed <reed@glacier.reedmedia.net>
+Date:   Thu Aug 16 11:28:30 2007 -0500
+
+    Temporarily define Pixmap (just like Window and Region). (From pkgsrc.)
+
+commit 25e8047e25652be388dc66d85c180dcc4ccea4f6
+Author: Keith Packard <keithp@neko.keithp.com>
+Date:   Tue Jul 3 14:11:10 2007 -0700
+
+    Bump version in configure.ac to 0.4
+
+commit 1838412121d0bac8ce443d362e75439d58a93a4d
+Author: Keith Packard <keithp@neko.keithp.com>
+Date:   Tue Jul 3 14:09:41 2007 -0700
+
+    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.
+
+commit bca9592612d60142e3c624b90649475b561b8eda
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Tue Apr 17 20:48:18 2007 -0700
+
+    Add *~ to .gitignore to skip emacs/patch droppings
+
+commit 6acacb52efd6f0927c9b82fe864f17623e7dc8c2
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Tue Apr 17 20:47:50 2007 -0700
+
+    Protocol spec nit cleanups
+    
+    Fix versioning from 0.3/0.4 merge
+    Update description of RedirectWindow to match names in protocol diagrams
+
+commit dd2133540f8dd0f0f66ecf24e01113184045af83
+Author: Eric Anholt <eric@anholt.net>
+Date:   Tue Jan 9 10:42:31 2007 -0800
+
+    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.
+
+commit ea2c1d120e58e3eb5f2d8eedb3c32b2cfa052366
+Author: Eric Anholt <eric@anholt.net>
+Date:   Tue Jan 9 09:46:31 2007 -0800
+
+    Move composite protocol description to the new canonical location/name.
+
+commit 34251361a60c9e0c0f3c51416985e067c2aa255a
+Author: Aaron Plattner <aplattner@nvidia.com>
+Date:   Tue Dec 5 12:39:15 2006 -0800
+
+    Have NameWindowPixmap return a Match error on unrealized windows.
+
+commit 5ecbf06cb7786009e8e1547f4bc2b0640599f655
+Author: root <root@explosivo.(none)>
+Date:   Tue Aug 15 14:30:32 2006 -0700
+
+    Correct the spelling of compositedocdir_DATA.  Otherwise automake complains.
+
+commit ba9ca99638fac157b126a2d9a3e57385bad32998
+Author: Deron <dj4236@chiru.it.sfbay.sun.com>
+Date:   Fri Mar 31 03:29:42 2006 -0800
+
+    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.
+
+commit 565c0bcc569f5ab9114314185316fe2129aa5a3e
+Author: Keith Packard <keithp@evo.keithp.com>
+Date:   Fri Feb 24 02:55:19 2006 +0100
+
+    Add coordinate transform redirect protocol bits
+
+commit 8e0790045d33525ec182afd3997014b46ef77b66
+Author: Keith Packard <keithp@evo.keithp.com>
+Date:   Fri Feb 24 02:06:13 2006 +0100
+
+    Clean up mistakes integrating xorg changes
+
+commit 1d43eaf21b32fef4aba8a58dee323344b7f48d16
+Author: Keith Packard <keithp@evo.keithp.com>
+Date:   Fri Feb 24 02:03:25 2006 +0100
+
+    Remove .cvsignore
+
+commit 694da3931be9bb03e23e4fbaf54d331c2202b2fc
+Author: Keith Packard <keithp@evo.keithp.com>
+Date:   Fri Feb 24 02:01:54 2006 +0100
+
+    Add .gitignore
+
+commit 369d28141b1b296abeb4365b5c57846d72faeb82
+Author: Keith Packard <keithp@evo.keithp.com>
+Date:   Fri Feb 24 02:01:10 2006 +0100
+
+    Paste Xorg changes on top of historical xlibs repository
+
+commit 7388d4f6dd9e0c71d79c33905135622be15ccd13
+Author: Keith Packard <keithp@keithp.com>
+Date:   Mon Feb 20 18:41:15 2006 +0000
+
+    Update to include CTR
+
+commit 90d453e5ab0cd140e936c71c118e442f6f6563f7
+Author: Daniel Stone <daniel@fooishbar.org>
+Date:   Mon Jan 3 05:16:04 2005 +0000
+
+    New autogen.sh from Thomas Fitzsimmons that works with srcdir != objdir.
+
+commit 734331f433e1d853aba942e17b3ed3efb0d972ab
+Author: Keith Packard <keithp@keithp.com>
+Date:   Thu Jul 8 07:20:55 2004 +0000
+
+    Add NameWindowPixmap request. Bump protocol to 0.2
+
+commit 19bb2c38370f5ef9296d451970f93e570b5a8546
+Author: Eric Anholt <anholt@freebsd.org>
+Date:   Sun Jun 27 07:23:56 2004 +0000
+
+    Fix some apostrophe issues.
+
+commit 47c46ad42a57d1dc8f2cf2e9e5d8b1478e75cd3b
+Author: Jim Gettys <jg@freedesktop.org>
+Date:   Tue Feb 3 20:42:46 2004 +0000
+
+    Add author's information
+
+commit cad37f16480f8f3f51e5dd9d3b3314ec8f73cee9
+Author: Daniel Stone <daniel@fooishbar.org>
+Date:   Thu Jan 15 03:42:08 2004 +0000
+
+    Tag release 2.0 for first freedesktop.org clientside release.
+
+commit 0acceb62100f3acb3a00615c51bfd8e3f57e3ff9
+Author: Carl Worth <cworth@cworth.org>
+Date:   Tue Nov 11 18:34:48 2003 +0000
+
+    Updated .cvsignore
+
+commit 35a9c80252b35720c1afc5dc53153228e2084b10
+Author: Keith Packard <keithp@keithp.com>
+Date:   Sun Nov 9 07:07:21 2003 +0000
+
+    Note that Manual Subwindows mode disables background painting.
+
+commit 11105d870631fe5f858291fbf167f1da400d7fa9
+Author: Keith Packard <keithp@keithp.com>
+Date:   Fri Nov 7 04:21:01 2003 +0000
+
+    Add update mode to Unredirect requests so clients can redirect multiple times (and then unredirect) Add CompositeNumberRequests Fix some typeos
+
+commit 0b7b69d3b678f584062ca352f60382325057d9f1
+Author: Keith Packard <keithp@keithp.com>
+Date:   Wed Nov 5 05:39:58 2003 +0000
+
+    Change name from Apportion to Composite Clarify that root cannot be redirected. Add more error values.
+
+commit 5113df7e49393afb5d9199f030b6f4e025a54039
+Author: Keith Packard <keithp@keithp.com>
+Date:   Thu Oct 30 04:31:19 2003 +0000
+
+    autofoo Add protocol headers Use enum for update mode instead of bool
+
+commit 00b320e307a997677e74c73f9c856e7b08bc20e2
+Author: Keith Packard <keithp@keithp.com>
+Date:   Wed Oct 29 23:48:40 2003 +0000
+
+    Define clipping while redirected
+
+commit 7cc591f9ffac4a01f7801d924beace89ed3460bb
+Author: Keith Packard <keithp@keithp.com>
+Date:   Tue Oct 28 20:43:27 2003 +0000
+
+    spelling mistake
+
+commit faa486b819f8b3088201923541a1c0a71efa249a
+Author: Keith Packard <keithp@keithp.com>
+Date:   Fri Oct 24 23:05:41 2003 +0000
+
+    Initial revision
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..8b82ade
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,291 @@
+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 `<wchar.h>' 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.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100755 (executable)
index 0000000..5a14884
--- /dev/null
@@ -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/README b/README
new file mode 100644 (file)
index 0000000..66b40a4
--- /dev/null
+++ b/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/autogen.sh b/autogen.sh
new file mode 100755 (executable)
index 0000000..904cd67
--- /dev/null
@@ -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/composite.h b/composite.h
new file mode 100755 (executable)
index 0000000..e460118
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2006, Oracle and/or its affiliates. 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 <X11/extensions/xfixeswire.h>
+
+#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
new file mode 100755 (executable)
index 0000000..0417f2c
--- /dev/null
@@ -0,0 +1,192 @@
+/*
+ * Copyright (c) 2006, Oracle and/or its affiliates. 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 <X11/Xmd.h>
+#include <X11/extensions/composite.h>
+
+#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
new file mode 100644 (file)
index 0000000..6348022
--- /dev/null
@@ -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.txt b/compositeproto.txt
new file mode 100644 (file)
index 0000000..4b86621
--- /dev/null
@@ -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/configure.ac b/configure.ac
new file mode 100755 (executable)
index 0000000..d83be2f
--- /dev/null
@@ -0,0 +1,38 @@
+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.2],
+        [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/packaging/xorg-x11-proto-composite.spec b/packaging/xorg-x11-proto-composite.spec
new file mode 100644 (file)
index 0000000..a764306
--- /dev/null
@@ -0,0 +1,46 @@
+Name:     xorg-x11-proto-composite
+Summary:  X.Org X11 Protocol compositeproto
+Version:  0.4.2
+Release:  2
+Group:    Development/System
+License:  MIT
+URL:      http://www.x.org
+Source0:  %{name}-%{version}.tar.gz
+Provides: compositeproto
+
+BuildRequires: pkgconfig
+BuildRequires: pkgconfig(xorg-macros)
+
+# some file to be intalled can be ignored when rpm generates packages
+%define _unpackaged_files_terminate_build 0
+
+%description
+Description: %{summary}
+
+%prep
+%setup -q
+
+%build
+
+./autogen.sh
+%reconfigure --disable-static \
+             --libdir=%{_datadir} \
+             --without-xmlto
+
+# Call make instruction with smp support
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+%make_install
+
+%remove_docs
+
+%clean
+rm -rf %{buildroot}
+
+%files
+%defattr(-,root,root,-)
+%{_includedir}/X11/extensions/*
+%{_datadir}/pkgconfig/*
+