From: Sehong Na Date: Sat, 31 May 2014 04:21:14 +0000 (+0900) Subject: Initialize Tizen 2.3 X-Git-Tag: 2.3a_release X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Ftizen_2.3;p=framework%2Fuifw%2Fxorg%2Fproto%2Fx11proto-resource.git Initialize Tizen 2.3 --- 30e2284e9814c24ae21c14471317acfc4d5b553d diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..d878fd6 --- /dev/null +++ b/COPYING @@ -0,0 +1,22 @@ +Copyright (c) 2002 XFree86 Inc + +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 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 +XFREE86 PROJECT 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. + +Except as contained in this notice, the name of the XFree86 Project shall not +be used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from the XFree86 Project. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..e9cbed0 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,320 @@ +commit 4be619918d604cbf63994ebe8357b811b5bd2452 +Author: Erkki Seppälä +Date: Fri May 27 21:25:39 2011 -0700 + + Bumped version number: 1.1.1 => 1.2.0 + + Signed-off-by: Erkki Seppälä + Signed-off-by: Alan Coopersmith + +commit c4228d3189b1d12fa65e826ab356b2eee4f0548b +Author: Alan Coopersmith +Date: Tue May 24 15:01:42 2011 -0700 + + Distribute & install resproto.txt with the release + + Signed-off-by: Alan Coopersmith + +commit b2629d78ae8acfbfc449f6b0e973716975d4e8d7 +Author: Erkki Seppälä +Date: Tue Nov 30 14:12:58 2010 +0200 + + Protocol records for XRes v1.2 + + Incorporates comments from the list. + + Signed-off-by: Erkki Seppälä + Reviewed-by: Rami Ylimäki + Signed-off-by: Alan Coopersmith + +commit 1eb1d726921493db463b9b790bf25532fdc43287 +Author: Rami Ylimäki +Date: Fri Dec 31 14:21:08 2010 +0200 + + Added protocol description for XRes v1.2 + + Version 1.2 of XResource protocol adds two requests: + XResQueryClientIds and XResQueryResourceBytes. They can be used for + more exactly determining which resources are used by which clients. + + This patch incorporates comments from the mailing list. + + Acked-by: Gaetan Nadon + Reviewed-by: Erkki Seppälä + Signed-off-by: Rami Ylimäki + Signed-off-by: Alan Coopersmith + +commit 386946098f97b9137af3265b5608fdcf22c7d49a +Author: Alan Coopersmith +Date: Thu Jan 6 22:16:55 2011 -0800 + + Add missing XFree86 copyright notice to COPYING + + Signed-off-by: Alan Coopersmith + +commit 2cbf7d2ba3da72c2454d707e0109732c46a0c9d9 +Author: Alan Coopersmith +Date: Wed Dec 8 22:19:47 2010 -0800 + + resourceproto 1.1.1 + + Signed-off-by: Alan Coopersmith + +commit 3389416e4c58b7e7ccad8d2bccb65f3e291ef43b +Author: Alan Coopersmith +Date: Wed Dec 8 22:17:49 2010 -0800 + + config: replace deprecated AC_OUTPUT file list with AC_CONFIG_FILES + + Regroup AC statements under the Autoconf initialization section. + Regroup AM statements under the Automake initialization section. + Add missing AC_CONFIG_SRCDIR + + Signed-off-by: Alan Coopersmith + +commit 0545a1f26d56ab329b69be76a27e2d4d9b0f88df +Author: Gaetan Nadon +Date: Sun Mar 28 19:25:52 2010 -0400 + + config: update AC_PREREQ statement to 2.60 + + Unrelated to the previous patches, the new value simply reflects + the reality that the minimum level for autoconf to configure + all x.org modules is 2.60 dated June 2006. + + ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.60.tar.gz + + Signed-off-by: Gaetan Nadon + +commit b5bb2e1707490805ea022f5110f229e5fbdc09e0 +Author: Gaetan Nadon +Date: Sun Mar 28 19:00:31 2010 -0400 + + config: remove the pkgconfig pc.in file from EXTRA_DIST + + Automake always includes it in the tarball. + + Signed-off-by: Gaetan Nadon + +commit 06fc8dd07770bb8b10323581419c2e53e9a3f3ef +Author: Gaetan Nadon +Date: Sun Nov 22 19:24:48 2009 -0500 + + Makefile.am: add ChangeLog and INSTALL on MAINTAINERCLEANFILES + + Now that the INSTALL file is generated. + Allows running make maintainer-clean. + +commit 8c0d56bd432819c6ee23af52d93c3cd0d3331f00 +Author: Gaetan Nadon +Date: Mon Nov 16 11:13:30 2009 -0500 + + README: file created or updated #24206 + + Contains a set of URLs to freedesktop.org. + +commit f98b754b0f5fea6162f4f5a0679dd35829440ce4 +Author: Gaetan Nadon +Date: Sun Nov 15 19:45:27 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 8184f9a6280de23d1cc140dd2ac9bc78625e434a +Author: Gaetan Nadon +Date: Sun Nov 15 18:31:29 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 406346c1a261127fae382a96010e7fb654115188 +Author: Gaetan Nadon +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 2b0811c46f7aa76cdc14eb3516f3120e31cdaf73 +Author: Gaetan Nadon +Date: Sun Nov 15 13:55:25 2009 -0500 + + configure.ac: AM_MAINTAINER_MODE missing #24238 + + This turns off maintainer mode build rules in tarballs. + Works in conjunction with autogen.sh --enable-maintainer-mode + +commit adb6c60a2f6705310d586fc4dfec97e41624915a +Author: Gaetan Nadon +Date: Sat Nov 14 18:26:47 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 11843ce15572214833063a26ac87a2fa6ab74bca +Author: Peter Hutterer +Date: Tue Aug 25 16:13:15 2009 +1000 + + resourceproto 1.1.0 + +commit 2388aa12158fca3d8c38ee59ecc5cf35eafa7d57 +Author: Peter Hutterer +Date: Tue Aug 25 16:29:38 2009 +1000 + + Remove RCS tags. + +commit 0a4fd7fc0cf0f56fbe112bd14725560adfa67b73 +Author: Paulo Cesar Pereira de Andrade +Date: Tue Jan 27 20:06:28 2009 -0200 + + Janitor: Correct make distcheck and dont distribute autogen.sh + +commit 40fded7637faa3548052cbf419d48ea081b1b5cb +Author: James Cloos +Date: Thu Dec 6 16:39:06 2007 -0500 + + Replace static ChangeLog with dist-hook to generate from git log + +commit 2740cf052e07fef8808991863409829bab22f016 +Author: James Cloos +Date: Mon Sep 3 05:54:15 2007 -0400 + + Add *~ to .gitignore to skip patch/emacs droppings + +commit c24f19b61eb4a59b7a71f8aa238f3093d71b2fb2 +Author: Alan Coopersmith +Date: Fri Jul 14 18:56:31 2006 -0700 + + renamed: .cvsignore -> .gitignore + +commit 9268501218b3f4eb1b0ce13bfab9e9543adc01a1 +Author: Kevin E Martin +Date: Thu Dec 15 00:24:38 2005 +0000 + + Update package version number for final X11R7 release candidate. + +commit 0002f2f7e13aeabd494b55be2280b060410a6e8a +Author: Kevin E Martin +Date: Wed Oct 19 02:48:15 2005 +0000 + + Update package version number for RC1 release. + +commit e09681a1043fbc48447033b78de2c87252507d1b +Author: Eric Anholt +Date: Tue Aug 2 19:19:39 2005 +0000 + + Add basic .cvsignore files for proto modules. + +commit f6008b2e1f5051ab421abbe08614aac67847742e +Author: Kevin E Martin +Date: Fri Jul 29 21:22:56 2005 +0000 + + Various changes preparing packages for RC0: + - Verify and update package version numbers as needed + - Implement versioning scheme + - Change bug address to point to bugzilla bug entry form + - Disable loadable i18n in libX11 by default (use --enable-loadable-i18n to + reenable it) + - Fix makedepend to use pkgconfig and pass distcheck + - Update build script to build macros first + - Update modular Xorg version + +commit 79eb18feab7f1a9e07d97adb3be754b3c863d696 +Author: Søren Sandmann Pedersen +Date: Tue Jun 7 18:51:23 2005 +0000 + + - symlink.sh: Move XRes.h from proto/Resource to + lib/XRes/include/X11/extensions + - symlink.sh: Add XRes linking + - xc/lib/XRes/*.c: conditionally include config.h + - lib/XRes: add directories and build system. + +commit 53500326172c6277a698926f78e042f80f03bb2d +Author: Daniel Stone +Date: Sat May 21 04:18:30 2005 +0000 + + Set version to 1.0. + +commit f5f3a42ee3de80dfbb798727c77ad0454b70723e +Author: Adam Jackson +Date: Thu May 19 00:22:40 2005 +0000 + + revert last change, didn't do right thing at all, sorry for the noise + +commit 5d91974af1155de1086434a36a6c1531a8d80d7b +Author: Adam Jackson +Date: Thu May 19 00:10:19 2005 +0000 + + Require automake 1.7 in AM_INIT_AUTOMAKE + +commit d66e491cd3a75b7e88177b9857dd7079d11361fe +Author: Josh Triplett +Date: Tue May 17 19:43:16 2005 +0000 + + Add COPYING file for Resource. Per the advice of Daniel Stone, Resource + falls under the generic XFree86 catch-all license (from before the + problematic license change). + +commit 7e6e21adc53035ddffba7bb29676b7f483956df8 +Author: Søren Sandmann Pedersen +Date: Mon May 9 18:20:06 2005 +0000 + + Change all the protonames from Ext to Proto. + +commit f7ef242967454e96ecc41751ed04b8ec434d17c8 +Author: Kevin E Martin +Date: Fri May 6 01:46:31 2005 +0000 + + Initial build system files for proto module. + +commit e33c0b156299bb0d582b573ffe185699d6415b88 +Author: Egbert Eich +Date: Fri Apr 23 18:43:06 2004 +0000 + + Merging XORG-CURRENT into trunk + +commit eeb54769c6aec119ae900ed41a1cd12d62c88aa9 +Author: Egbert Eich +Date: Sun Mar 14 08:31:36 2004 +0000 + + Importing vendor version xf86-4_4_99_1 on Sun Mar 14 00:26:39 PST 2004 + +commit 600d724bb28e8604eefa891daf2adefc38f6c03a +Author: Egbert Eich +Date: Wed Mar 3 12:10:54 2004 +0000 + + Importing vendor version xf86-4_4_0 on Wed Mar 3 04:09:24 PST 2004 + +commit 17c656129e003eba2f71b644c335eabb96e3361a +Author: Egbert Eich +Date: Thu Feb 26 13:35:11 2004 +0000 + + readding XFree86's cvs IDs + +commit d2ba0bfffba0903acdfd37973c0c11be3bbfec48 +Author: Egbert Eich +Date: Thu Feb 26 09:22:27 2004 +0000 + + Importing vendor version xf86-4_3_99_903 on Wed Feb 26 01:21:00 PST 2004 + +commit 7d9398ff4706c144a8562f2272c89b67947c7e0d +Author: Kaleb Keithley +Date: Fri Nov 14 16:48:42 2003 +0000 + + XFree86 4.3.0.1 + +commit 258c66ae0da974c415026fcf4961b1ced793eaaf +Author: Kaleb Keithley +Date: Fri Nov 14 16:48:42 2003 +0000 + + Initial revision diff --git a/INSTALL b/INSTALL new file mode 100644 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 `' 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 100644 index 0000000..d5d496f --- /dev/null +++ b/Makefile.am @@ -0,0 +1,20 @@ +resourcedir = $(includedir)/X11/extensions +resource_HEADERS = \ + XResproto.h + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = resourceproto.pc + +dist_doc_DATA = resproto.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 100755 index 0000000..e4c5d5d --- /dev/null +++ b/README @@ -0,0 +1,30 @@ + X Resource Extension + +This extension defines a protocol that allows a client to query the X server +about its usage of various resources. + +Extension : X-Resource + +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/resourceproto + + http://cgit.freedesktop.org/xorg/proto/resourceproto + +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/XResproto.h b/XResproto.h new file mode 100644 index 0000000..d7e20b1 --- /dev/null +++ b/XResproto.h @@ -0,0 +1,227 @@ +/* + Copyright (c) 2002 XFree86 Inc +*/ + +#ifndef _XRESPROTO_H +#define _XRESPROTO_H + +#define XRES_MAJOR_VERSION 1 +#define XRES_MINOR_VERSION 2 + +#define XRES_NAME "X-Resource" + +/* v1.0 */ +#define X_XResQueryVersion 0 +#define X_XResQueryClients 1 +#define X_XResQueryClientResources 2 +#define X_XResQueryClientPixmapBytes 3 + +/* Version 1.1 has been accidentally released from the version */ +/* control and while it doesn't have differences to version 1.0, the */ +/* next version is labeled 1.2 in order to remove the risk of confusion. */ + +/* v1.2 */ +#define X_XResQueryClientIds 4 +#define X_XResQueryResourceBytes 5 + +typedef struct { + CARD32 resource_base; + CARD32 resource_mask; +} xXResClient; +#define sz_xXResClient 8 + +typedef struct { + CARD32 resource_type; + CARD32 count; +} xXResType; +#define sz_xXResType 8 + +/* XResQueryVersion */ + +typedef struct _XResQueryVersion { + CARD8 reqType; + CARD8 XResReqType; + CARD16 length B16; + CARD8 client_major; + CARD8 client_minor; + CARD16 unused B16; +} xXResQueryVersionReq; +#define sz_xXResQueryVersionReq 8 + +typedef struct { + CARD8 type; + CARD8 pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD16 server_major B16; + CARD16 server_minor B16; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xXResQueryVersionReply; +#define sz_xXResQueryVersionReply 32 + +/* XResQueryClients */ + +typedef struct _XResQueryClients { + CARD8 reqType; + CARD8 XResReqType; + CARD16 length B16; +} xXResQueryClientsReq; +#define sz_xXResQueryClientsReq 4 + +typedef struct { + CARD8 type; + CARD8 pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 num_clients B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xXResQueryClientsReply; +#define sz_xXResQueryClientsReply 32 + +/* XResQueryClientResources */ + +typedef struct _XResQueryClientResources { + CARD8 reqType; + CARD8 XResReqType; + CARD16 length B16; + CARD32 xid B32; +} xXResQueryClientResourcesReq; +#define sz_xXResQueryClientResourcesReq 8 + +typedef struct { + CARD8 type; + CARD8 pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 num_types B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xXResQueryClientResourcesReply; +#define sz_xXResQueryClientResourcesReply 32 + +/* XResQueryClientPixmapBytes */ + +typedef struct _XResQueryClientPixmapBytes { + CARD8 reqType; + CARD8 XResReqType; + CARD16 length B16; + CARD32 xid B32; +} xXResQueryClientPixmapBytesReq; +#define sz_xXResQueryClientPixmapBytesReq 8 + +typedef struct { + CARD8 type; + CARD8 pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 bytes B32; + CARD32 bytes_overflow B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; +} xXResQueryClientPixmapBytesReply; +#define sz_xXResQueryClientPixmapBytesReply 32 + +/* v1.2 XResQueryClientIds */ + +#define X_XResClientXIDMask 0x01 +#define X_XResLocalClientPIDMask 0x02 + +typedef struct _XResClientIdSpec { + CARD32 client B32; + CARD32 mask B32; +} xXResClientIdSpec; +#define sz_xXResClientIdSpec 8 + +typedef struct _XResClientIdValue { + xXResClientIdSpec spec; + CARD32 length B32; + // followed by length CARD32s +} xXResClientIdValue; +#define sz_xResClientIdValue (sz_xXResClientIdSpec + 4) + +typedef struct _XResQueryClientIds { + CARD8 reqType; + CARD8 XResReqType; + CARD16 length B16; + CARD32 numSpecs B32; + // followed by numSpecs times XResClientIdSpec +} xXResQueryClientIdsReq; +#define sz_xXResQueryClientIdsReq 8 + +typedef struct { + CARD8 type; + CARD8 pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 numIds B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; + // followed by numIds times XResClientIdValue +} xXResQueryClientIdsReply; +#define sz_xXResQueryClientIdsReply 32 + +/* v1.2 XResQueryResourceBytes */ + +typedef struct _XResResourceIdSpec { + CARD32 resource; + CARD32 type; +} xXResResourceIdSpec; +#define sz_xXResResourceIdSpec 8 + +typedef struct _XResQueryResourceBytes { + CARD8 reqType; + CARD8 XResReqType; + CARD16 length B16; + CARD32 client B32; + CARD32 numSpecs B32; + // followed by numSpecs times XResResourceIdSpec +} xXResQueryResourceBytesReq; +#define sz_xXResQueryResourceBytesReq 12 + +typedef struct _XResResourceSizeSpec { + xXResResourceIdSpec spec; + CARD32 bytes B32; + CARD32 refCount B32; + CARD32 useCount B32; +} xXResResourceSizeSpec; +#define sz_xXResResourceSizeSpec (sz_xXResResourceIdSpec + 12) + +typedef struct _XResResourceSizeValue { + xXResResourceSizeSpec size; + CARD32 numCrossReferences B32; + // followed by numCrossReferences times XResResourceSizeSpec +} xXResResourceSizeValue; +#define sz_xXResResourceSizeValue (sz_xXResResourceSizeSpec + 4) + +typedef struct { + CARD8 type; + CARD8 pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 numSizes B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; + // followed by numSizes times XResResourceSizeValue +} xXResQueryResourceBytesReply; +#define sz_xXResQueryResourceBytesReply 32 + +#endif /* _XRESPROTO_H */ diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..904cd67 --- /dev/null +++ b/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/configure.ac b/configure.ac new file mode 100644 index 0000000..328a7cf --- /dev/null +++ b/configure.ac @@ -0,0 +1,22 @@ +dnl +dnl Process this file with autoconf to create configure. + +# Initialize Autoconf +AC_PREREQ([2.60]) +AC_INIT([ResourceProto],[1.2.0], + [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AC_CONFIG_SRCDIR([Makefile.am]) + +# Initialize Automake +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_CONFIG_FILES([Makefile + resourceproto.pc]) +AC_OUTPUT diff --git a/packaging/xorg-x11-proto-resource.spec b/packaging/xorg-x11-proto-resource.spec new file mode 100644 index 0000000..60d52d6 --- /dev/null +++ b/packaging/xorg-x11-proto-resource.spec @@ -0,0 +1,46 @@ +Name: xorg-x11-proto-resource +Summary: X.Org X11 Protocol resourceproto +Version: 1.2.0 +Release: 2 +Group: Development/System +License: MIT +URL: http://www.x.org +Source0: %{name}-%{version}.tar.gz +Provides: resourceproto + +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/*.h +%{_datadir}/pkgconfig/*.pc + diff --git a/resourceproto.pc.in b/resourceproto.pc.in new file mode 100644 index 0000000..2851df1 --- /dev/null +++ b/resourceproto.pc.in @@ -0,0 +1,9 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: ResourceProto +Description: Resource extension headers +Version: @PACKAGE_VERSION@ +Cflags: -I${includedir} diff --git a/resproto.txt b/resproto.txt new file mode 100644 index 0000000..8b322ff --- /dev/null +++ b/resproto.txt @@ -0,0 +1,462 @@ + DRAFT FOR REVIEW + The X Resource Extension + Version 1.2 + Rami Ylimäki + rami.ylimaki@vincit.fi + + ❧❧❧❧❧❧❧❧❧❧❧ + +1. Introduction + +The protocol description of X Resource Extension version 1.1 has been +either lost or has never been written. This specification documents +version 1.0 based on reverse engineered library and server +code. Version 1.1 has been accidentally released from the version +control and while it doesn't have differences to version 1.0, this +version is labeled 1.2 in order to remove the risk of confusion. In +addition to the 1.0 description, this document introduces a new 1.2 +version of the extension. + +Version 1.2 is a minor release and therefore the changes are +compatible with the previous version. Main enhancements over version +1.0 are: + +- Client identification is now possible. For example, servers + supporting version 1.2 may report PID of local clients. + +- Size of any resource can be queried from the server. Servers may not + necessarily support size calculation for every resource. However, + clients have now at least the chance to let the server do resource + size estimation for them. + + ❧❧❧❧❧❧❧❧❧❧❧ + +2. Notations used in this document + +Notation for data types and requests follows the guidelines set in +sections 2-4 of X Window System Protocol standard. + + ❧❧❧❧❧❧❧❧❧❧❧ + +3. Interoperability between version 1.1 and 1.2 + +Version 1.2 only introduces two new requests. However, these requests +could be seen as generalized versions of existing requests. Even +though we aren't deprecating any old requests, libraries could +implement some old requests using the new ones. + +The new XResQueryClientIds request could be used instead of +XResQueryClients. + +The new XResQueryResourceBytes request could be used instead of +XResQueryClientPixmapBytes. + +Using the old requests is still acceptable because we don't want to +change the semantics of existing requests between version 1.1 and 1.2. + + ❧❧❧❧❧❧❧❧❧❧❧ + +4. Data types + +4.1 Types in version 1.0 + +CLIENTXIDRANGE [ resource_base: CARD32 + resource_mask: CARD32 ] + +This type is used for reply of XResQueryClients in version 1.1. It +represents the range of resource allocated for a client and can be +also used for client identification. + +resource_base + First resource ID reserved for a client. Used also to identify the + clients themselves. +resource_mask + Mask that can be used to identify a client from some resource + ID. Just zero the bits indicated by this mask from any resource ID + to identify the client that owns the resource. + +CLIENTXID [ client: XID ] + +This type identifies a single client by a resource owned by that +client or by the first resource ID allocated for the client +(resource_base of CLIENTXIDRANGE). Whenever a resource ID is used, it +is masked by resource_mask of CLIENTXIDRANGE to find out the client +that owns the resource. + +CLIENTRESOURCETYPECOUNT [ resource_type: ATOM + count: CARD32 ] + +This type is used for reply of XResQueryClientResources in version +1.1. It represents the number of certain type of resources that are +owned by some client. + +resource_type + Atom specifying the type of a resource. +count + Number of resources of the given type owned by a client. + +4.2 Types in version 1.2 + +4.2.1 Types used by XResQueryClientIds + +CLIENTIDMASK { ClientXid = 0x1, LocalClientPid = 0x2 } + +A bitmask specifying a client identification method. Currently only +the PID of local clients is supported in the form of +LocalClientPid. ClientXid is provided for backward compatibility with +version 1.0 so that the new 1.2 requests (XResQueryClientIds) can be +used in place of the older ones (XResQueryClients). + +CLIENTIDSPEC [ client: CLIENTXID or None + mask: SETofCLIENTIDMASK or None ] + +A data structure for selecting client IDs. + +client + ID of a resource allocated for some client. Only the part + identifying a client is actually used. The resource_base of + CLIENTXIDRANGE can be used if the client doesn't own any + resources. However, any resource ID is accepted because that makes + identifying the owners of existing resources easy. The null + resource None can be used to select all clients. +mask + Collection of identification methods that should be applied on the + client. The special value None can be used to apply all supported + identification methods. + +CLIENTIDVALUE [ spec: CLIENTIDSPEC + length: CARD32 + value: LISTofCARD32 ] + +A data structure specifying a single client ID. + +spec + A unique identifier for a specific ID of some client. Wildcards + such as None and bitmask unions aren't allowed. The data structure + must always identify a single client and single ID type. However, + the client doesn't have to be specified as the resource_base of + CLIENTXIDRANGE and can be any resource owned by the client. +length + Specifies the length of an ID in units of CARD32. The length + depends on the ID type. In version 1.2 the lengths are 0 for + ClientXid and 4 for LocalClientPid. The length of ClientXid is 0 + because that is already stored in the spec field. +value + Actual ID data. In version 1.2 this is missing for ClientXid and + consists of a single CARD32 for LocalClientPid. + +4.2.2 Types used by XResQueryResourceBytes + +To better understand how resources are related to each other, it's +useful to introduce the concepts of main resource and cross +reference. By main resource we just mean a normal resource that has a +valid XID. By cross reference we mean a resource that is used by some +other resource. + +The same resource may have both of these roles depending on the +context. For example, there could be an ordinary pixmap resource. When +we talk about this resource in isolation the term main resource is +used. We call the exact same resource a cross reference when we are +concentrating on some higher level resource, such as window or +graphics context, that is using the lower level resource. Cross +references may also be internal server resources that don't have a +valid XID. + +RESOURCEIDSPEC [ resource: XID or None + type: ATOM or None/AnyPropertyType ] + +A data structure for selecting or identifying resources. The +interpretation of fields changes depending on the context. The +differences in interpretation are described below. + +resource + An XID of a resource. The null resource None can be used to select + all resources matching some type if the data structure is used in + XResQueryResourceBytes request. The null resource None can be used + to mark private server resources if the data structure is used in + a cross reference of XResQueryResourceBytes reply. +type + An atom identifying the resource type. The null atom + None/AnyPropertyType can be used to select all resource types + matching some resource ID if the data structure is used in + XResQueryResourceBytes request. + +RESOURCESIZESPEC [ spec: RESOURCEIDSPEC + bytes: CARD32 + ref_count: CARD32 + use_count: CARD32 ] + +A data structure specifying the size of a single resource. + +spec + Uniquely identifies a single resource. Wildcards such as None and + AnyPropertyType aren't allowed for main resources. In cross + references, None is used to mark internal server resources. +bytes + Number of bytes allocated for the resource. The size of a resource + is never divided by a reference count. This is the number of bytes + released in server when there are no more references left to the + resource. +ref_count + Number of total users of the resource. Typically the reference + count is 1 but for pixmaps and other resources used from different + contexts the count may be larger. +use_count + Number of times the resource is used by some other resource. For + main resources this is typically 1, because a resource doesn't + usually use itself recursively. For cross references this is the + number of times the resource is used and is also 1 usually. + +RESOURCESIZEVALUE [ size: RESOURCESIZESPEC + num_cross_references: CARD32 + cross_references: LISTofRESOURCESIZESPEC ] + +A data structure specifying sizes of cross references to other +resources in addition to the main resource size. + +size + Size of a main resource. +num_cross_references + Number of cross references to other resources from the main + resource. Currently resources can only have pixmaps as cross + references but this can be extended to other types in the + future. For simple resources this field is therefore 0 and the + cross_references list is missing. +cross_references: + Size specifications for cross references. Note that cross + references may contain resources that don't have a valid XID. For + example, a DRI2 drawable might have a cross reference to a private + pixmap that is used internally in the server only. These private + cross references are contained in this list also. This makes it + possible to emulate XResGetClientPixmapBytes with + XResGetResourceBytes. + + ❧❧❧❧❧❧❧❧❧❧❧ + +5. Requests + +5.1 Requests in version 1.0 + +┌─── + XResQueryVersion + client_major: CARD8 + client_minor: CARD8 + ▶ + server_major: CARD16 + server_minor: CARD16 +└─── + +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 version 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. + +client_major + Major X Resource Extension version supported by client. +client_minor + Minor X Resource Extension version supported by client. +server_major + Highest version supported by server that is compatible with + client. +server_minor + Highest version supported by server that is compatible with + client. + +┌─── + XResQueryClients + ▶ + num_clients: CARD32 + clients: LISTofCLIENTXIDRANGE +└─── + +The request asks X server to return the list of all currently +connected clients. + +num_clients + Number of currently connected clients. +clients + List of XID ranges allocated for the connected clients. + +┌─── + XResQueryClientResources + client: CLIENTXID + ▶ + num_types: CARD32 + types: LISTofCLIENTRESOURCETYPECOUNT + + Errors: Value +└─── + +This request can be used to ask the number of resources owned by a +client. The server will return the counts of each type of resource. + +client + An XID in the resource range of a client. This identifies the + client and not some specific resource. +num_types + Number of different resource types owned by the client. +types + A list of counts for each resource type. + +A value error is generated if invalid resource or client XID is given +in the request. + +┌─── + XResQueryClientPixmapBytes + client: CLIENTXID + ▶ + bytes: CARD32 + bytes_overflow: CARD32 + + Errors: Value +└─── + +This request is used to get the pixmap usage of some client. The +returned number is a sum of memory usage of each pixmap that can be +attributed to the given client. Ideally the server goes through all +pixmaps and divides each pixmap size by the pixmap reference count to +get a pixmap reference size. The reference size is then added to the +returned sum if the client happens to be referencing that pixmap. In +practice some pixmap references may be missed, because it would be too +difficult to keep track of all pixmap references. However, the server +will check the most important client resources that are using pixmaps +and tries to estimate the pixmap usage as well as is possible. In +other words, the server need only make a best-effort attempt to +calculate resource source, so actual resource size may differ from +that reported in practice. + +client + Identifies a client by an ID in its resource ID range. +bytes: + Number of bytes attributed to pixmap references from the client + resources. +bytes_overflow: + Higher order word for the bytes field in case the sum of pixmap + reference sizes doesn't fit in CARD32. + +A value error is generated if invalid resource or client XID is given +in the request. + +5.2 Requests in version 1.2 + +┌─── + XResQueryClientIds + num_specs: CARD32 + client_specs: LISTofCLIENTIDSPEC + ▶ + num_ids: CARD32 + client_ids: LISTofCLIENTIDVALUE + + Errors: Value +└─── + +XResQueryClientIds can be used to identify a given set of clients with +some identification method. The request sends a list of specifiers +that select clients and identification methods to server. The server +then tries to identify the chosen clients using the identification +methods specified for each client. The server returns IDs for those +clients that were successfully identified. It's not an error condition +if some identification method couldn't be applied to a client. If the +server is unable to identify some clients, they simply aren't included +in the returned list. + +The request supports wildcards in the client specifications so that in +the most general case all IDs of all clients can be queried with a +single CLIENTIDSPEC. + +The CLIENTIDSPEC of request and CLIENTIDSPEC of CLIENTIDVALUE in reply +usually match each other. For example, if a request selected a client +by a resource ID owned by the client, then the client is identified by +the same resource ID in the reply. This has been done so that it would +be easy to identify an owner of some resource. + +However, the CLIENTIDSPEC of returned CLIENTIDVALUE never contains any +wildcards. If the request used a wildcard to specify all clients in a +single CLIENTIDSPEC, then the reply has expanded the wildcard and +returns separate CLIENTIDVALUE records for each client. In this case +wildcarded clients are identified by resource_base of CLIENTXIDRANGE. + +The LocalClientPid type of IDs are included in the reply list only if +the client executing the request asked for it and was also a local +client itself. It doesn't make sense for remote clients to ask PIDs of +local clients. + +num_specs + Number of client ID specifications. +client_specs + A list specifying identification methods for clients. Supports + multiple identification methods and clients in a single + specification. See CLIENTIDSPEC for details. +num_ids + Number of IDs that were successfully determined. Can be different + from num_specs or even zero if the server didn't support any + identification methods for the given clients. +client_ids + A list specifying ID information for successfully identified + clients. If wildcards were used in a single CLIENTIDSPEC of + client_specs, then multiple CLIENTIDVALUE records may be returned + for that CLIENTIDSPEC. See CLIENTIDVALUE for details. + +A Value error is returned if the request specifies an invalid client +XID or invalid identification method type. + +┌─── + XResQueryResourceBytes + client: CLIENTXID or None + num_specs: CARD32 + resource_specs: LISTofRESOURCEIDSPEC + ▶ + num_sizes: CARD32 + sizes: LISTofRESOURCESIZEVALUE + + Errors: Atom, Value +└─── + +XResQueryResourceBytes can be used to ask the sizes of resources from +X server. The request sends a list of specifiers that selects +resources for size calculation. The server tries to calculate the +sizes of chosen resources and returns an estimate for a resource only +if the size could be determined. It's not an error condition if a size +couldn't be calculated. In that case the resources simply aren't +included in the returned list. + +The request supports wildcards so that in the most general case sizes +of all resources of all clients can be queried with a single +RESOURCEIDSPEC. However, the reply has all wildcards expanded and +reports a size of a single resource in each RESOURCESIZEVALUE. + +client + An ID of a client can be given to limit the query to resources of + that client. Just like in CLIENTIDSPEC, any resource ID can be + given to identify a client and None can be used if the query + shouldn't be limited to a specific client. Note that in some cases + this field is redundant because resource_specs already fully + determines which resources are selected. If the client ID doesn't + match the owner of any resource in resource_specs, no sizes are + returned and no error is generated. +num_specs + Number of resource specifications. +resource_specs + A list of resource specifications. Each specification can either + uniquely identify a single resource or multiple resources if + wildcarding is used. See RESOURCEIDSPEC for details. +num_sizes + Number of resources whose size could be determined. Can be + different from num_specs or even zero if the server didn't support + size calculation for the given resources. +sizes + A list of resource sizes. Each resource size is linked to a unique + resource. Wildcards are never used in the returned size + records. For example, it's not possible to receive a single + RESOURCESIZEVALUE that would specify the size of all pixmaps if + the sizes of pixmap type resources were asked. Instead, a single + RESOURCESIZEVALUE would be returned for each pixmap in that case. + +An Atom error is returned if the request specifies an invalid resource +type. A Value error is returned if the request specifies an invalid +XID for a client or a resource. + + ❧❧❧❧❧❧❧❧❧❧❧