diff options
author | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2010-10-31 09:58:44 +0000 |
---|---|---|
committer | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2010-10-31 09:58:44 +0000 |
commit | 15cfeaf39e88a4dddd48c1532923395d5b059c84 (patch) | |
tree | 11f824d4f73384ddc9029966257a9a2067720f2f /proto | |
parent | 3a404017839c144b19a58272e8c762364e965743 (diff) |
Update to scrnsaverproto 1.2.1. No functionnal change.
Diffstat (limited to 'proto')
-rw-r--r-- | proto/scrnsaverproto/ChangeLog | 113 | ||||
-rw-r--r-- | proto/scrnsaverproto/INSTALL | 291 | ||||
-rw-r--r-- | proto/scrnsaverproto/Makefile.am | 13 | ||||
-rw-r--r-- | proto/scrnsaverproto/README | 30 | ||||
-rw-r--r-- | proto/scrnsaverproto/configure.ac | 21 | ||||
-rw-r--r-- | proto/scrnsaverproto/specs/Makefile.am | 64 | ||||
-rw-r--r-- | proto/scrnsaverproto/specs/saver.xml | 935 |
7 files changed, 1455 insertions, 12 deletions
diff --git a/proto/scrnsaverproto/ChangeLog b/proto/scrnsaverproto/ChangeLog index 0b68df419..d77c417e3 100644 --- a/proto/scrnsaverproto/ChangeLog +++ b/proto/scrnsaverproto/ChangeLog @@ -1,3 +1,116 @@ +commit b4899c5d6090efdf292f5686cc23ed90e3729e4b +Author: Alan Coopersmith <alan.coopersmith@oracle.com> +Date: Fri Oct 29 23:27:16 2010 -0700 + + ScrnSaverProto 1.2.1 + + Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> + +commit 2db9df02a69046bc2ee3d87432c91d996a733ecc +Author: Gaetan Nadon <memsize@videotron.ca> +Date: Tue Aug 3 15:32:12 2010 -0400 + + config: Require xorg-macros minimum of 1.10 for XORG_CHECK_SGML_DOCTOOLS + + Signed-off-by: Gaetan Nadon <memsize@videotron.ca> + +commit a8462405a2d2536867cc63587a49e5d130ea44ea +Author: Matt Dew <matt@osource.org> +Date: Sat Jul 31 12:23:10 2010 -0400 + + specs: replace troff source with docbook-xml source + + Signed-off-by: Gaetan Nadon <memsize@videotron.ca> + +commit 689268bf3fcd25015d07be8652fde6924a59b7d9 +Author: Gaetan Nadon <memsize@videotron.ca> +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 <memsize@videotron.ca> + +commit 5056835765a4a2103fbc6977740874762f5d5737 +Author: Gaetan Nadon <memsize@videotron.ca> +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 <memsize@videotron.ca> + +commit d7616943beb59d29349c16670340f677e340852c +Author: Gaetan Nadon <memsize@videotron.ca> +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 b758d8d966ccfdda4bdcbe24f679945dbfc2fff9 +Author: Gaetan Nadon <memsize@videotron.ca> +Date: Mon Nov 16 11:13:30 2009 -0500 + + README: file created or updated #24206 + + Contains a set of URLs to freedesktop.org. + +commit 72b6b958cb793feca0fad07276a9cc29c9d818f5 +Author: Gaetan Nadon <memsize@videotron.ca> +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 5d3c1539a272ce6bd5a11f16f8bc7ab9bce8f1e5 +Author: Gaetan Nadon <memsize@videotron.ca> +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 fd7a1f1a3ed7d7907f94b38e6a9a8c4a3b3d9bbb +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 180c9ee3be0bac7952351c89b0d219e672c1010c +Author: Gaetan Nadon <memsize@videotron.ca> +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 48110b9fd22f9cefc0cbe4902eabde995f398dd3 +Author: Gaetan Nadon <memsize@videotron.ca> +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 bcc25e87ba8e93c306b3cd00317a6f550c73f5cf Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Tue Aug 25 18:34:56 2009 +1000 diff --git a/proto/scrnsaverproto/INSTALL b/proto/scrnsaverproto/INSTALL new file mode 100644 index 000000000..8b82ade08 --- /dev/null +++ b/proto/scrnsaverproto/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/proto/scrnsaverproto/Makefile.am b/proto/scrnsaverproto/Makefile.am index cb098d13e..8f51dd872 100644 --- a/proto/scrnsaverproto/Makefile.am +++ b/proto/scrnsaverproto/Makefile.am @@ -1,3 +1,5 @@ +SUBDIRS=specs + scrnsaverdir = $(includedir)/X11/extensions scrnsaver_HEADERS = \ saver.h \ @@ -6,14 +8,15 @@ scrnsaver_HEADERS = \ pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = scrnsaverproto.pc -EXTRA_DIST = scrnsaverproto.pc.in -EXTRA_DIST += ChangeLog -MAINTAINERCLEANFILES = ChangeLog +MAINTAINERCLEANFILES = ChangeLog INSTALL + +.PHONY: ChangeLog INSTALL -.PHONY: ChangeLog +INSTALL: + $(INSTALL_CMD) ChangeLog: $(CHANGELOG_CMD) -dist-hook: ChangeLog +dist-hook: ChangeLog INSTALL diff --git a/proto/scrnsaverproto/README b/proto/scrnsaverproto/README new file mode 100644 index 000000000..cfa979467 --- /dev/null +++ b/proto/scrnsaverproto/README @@ -0,0 +1,30 @@ + MIT Screen Saver Extension + +This extension defines a protocol to control screensaver features +and also to query screensaver info on specific windows. + +Extension name: MIT-SCREEN-SAVER + +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/scrnsaverproto + + http://cgit.freedesktop.org/xorg/proto/scrnsaverproto + +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/proto/scrnsaverproto/configure.ac b/proto/scrnsaverproto/configure.ac index fff6f4003..993821647 100644 --- a/proto/scrnsaverproto/configure.ac +++ b/proto/scrnsaverproto/configure.ac @@ -1,12 +1,19 @@ -AC_PREREQ([2.57]) -AC_INIT([ScrnSaverProto], [1.2.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AC_PREREQ([2.60]) +AC_INIT([ScrnSaverProto], [1.2.1], + [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) +AM_MAINTAINER_MODE -# Require xorg-macros: XORG_CHANGELOG -m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.2 or later before running autoconf/autogen])]) -XORG_MACROS_VERSION(1.2) -XORG_RELEASE_VERSION -XORG_CHANGELOG +# Require xorg-macros minimum of 1.10 for HAVE_STYLESHEETS in XORG_CHECK_SGML_DOCTOOLS +m4_ifndef([XORG_MACROS_VERSION], + [m4_fatal([must install xorg-macros 1.10 or later before running autoconf/autogen])]) +XORG_MACROS_VERSION(1.10) +XORG_DEFAULT_OPTIONS +XORG_ENABLE_SPECS +XORG_WITH_XMLTO(0.0.20) +XORG_WITH_FOP +XORG_CHECK_SGML_DOCTOOLS(1.5) AC_OUTPUT([Makefile + specs/Makefile scrnsaverproto.pc]) diff --git a/proto/scrnsaverproto/specs/Makefile.am b/proto/scrnsaverproto/specs/Makefile.am new file mode 100644 index 000000000..a312ac94d --- /dev/null +++ b/proto/scrnsaverproto/specs/Makefile.am @@ -0,0 +1,64 @@ +# +# Copyright (c) 2010, 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. +# + +if ENABLE_SPECS +doc_sources = saver.xml +dist_doc_DATA = $(doc_sources) + +if HAVE_XMLTO +doc_DATA = $(doc_sources:.xml=.html) + +if HAVE_FOP +doc_DATA += $(doc_sources:.xml=.ps) $(doc_sources:.xml=.pdf) +endif + +if HAVE_XMLTO_TEXT +doc_DATA += $(doc_sources:.xml=.txt) +endif + +if HAVE_STYLESHEETS +XMLTO_FLAGS = -m $(XSL_STYLESHEET) + +doc_DATA += xorg.css +xorg.css: $(STYLESHEET_SRCDIR)/xorg.css + $(AM_V_GEN)cp -pf $(STYLESHEET_SRCDIR)/xorg.css $@ +endif + +CLEANFILES = $(doc_DATA) + +SUFFIXES = .xml .ps .pdf .txt .html + +.xml.txt: + $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) txt $< + +.xml.html: + $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) xhtml-nochunks $< + +.xml.pdf: + $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) --with-fop pdf $< + +.xml.ps: + $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) --with-fop ps $< + +endif HAVE_XMLTO +endif ENABLE_SPECS diff --git a/proto/scrnsaverproto/specs/saver.xml b/proto/scrnsaverproto/specs/saver.xml new file mode 100644 index 000000000..93b52290d --- /dev/null +++ b/proto/scrnsaverproto/specs/saver.xml @@ -0,0 +1,935 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" + "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"> + +<book id="saver"> + +<bookinfo> + <title>X11 Screen Saver Extension</title> + <subtitle>MIT X Consortium Proposed Standard</subtitle> + <releaseinfo>Version 1.0</releaseinfo> + <authorgroup> + <othercredit> + <firstname>Jim</firstname><surname>Fulton</surname> + <affiliation><orgname>Network Computing Devices, Inc</orgname></affiliation> + </othercredit> + <othercredit> + <firstname>Keith</firstname><surname>Packard</surname> + <affiliation><orgname> +X Consortium, Laboratory for Computer Science, Massachusetts Institute of Technology + </orgname></affiliation> + </othercredit> + </authorgroup> + + <copyright><year>1992</year><holder>Massachusetts Institute of Technology and Network Computing Devices, Inc</holder></copyright> + + <productnumber>X Version 11, Release 5</productnumber> + +<legalnotice> +<para> +Permission to use, copy, modify, and distribute this documentation for any +purpose and without fee is hereby granted, provided that the above copyright +notice and this permission notice appear in all copies. MIT and +Network Computing Devices, Inc. make no +representations about the suitability for any purpose of the information in +this document. This documentation is provided "as is" without express or +implied warranty. +</para> + +</legalnotice> +</bookinfo> + +<chapter id="title"> +<title>TITLE</title> +<sect1 id="Introduction_"> +<title>Introduction</title> +<para> +The X Window System provides support for changing the image on a display screen +after a user-settable period of inactivity to avoid burning the cathode ray +tube phosphors. However, no interfaces are provided for the user to control +the image that is drawn. This extension allows an external "screen saver" +client to detect when the alternate image is to be displayed and to provide the +graphics. +</para> +<para> +Current X server implementations typically provide at least one form of +"screen saver" image. Historically, this has been a copy of the X logo +drawn against the root background pattern. However, many users have asked +for the mechanism to allow them to write screen saver programs that provide +capabilities similar to those provided by other window systems. In +particular, such users often wish to be able to display corporate logos, +instructions on how to reactivate the screen, and automatic screen-locking +utilities. This extension provides a means for writing such clients. +</para> +</sect1> + +<sect1 id="Assumptions"> +<title>Assumptions</title> +<para> +This extension exports the notion of a special screen saver window that is +mapped above all other windows on a display. This window has the +<emphasis remap='I'>override-redirect</emphasis> attribute set so that it is not subject to manipulation by +the window manager. Furthermore, the X identifier for the window is never +returned by <function>QueryTree</function> requests on the root window, so it is typically +not visible to other clients. +</para> +</sect1> + +<sect1 id="Overview"> +<title>Overview</title> +<para> +The core +<function>SetScreenSaver</function> +request can be used to set the length of time without +activity on any input devices after which the screen saver should "activate" +and alter the image on the screen. This image periodically "cycles" to +reduce +the length of time that any particular pixel is illuminated. Finally, the +screen saver is "deactivated" in response to activity on any of the input +devices +or particular X requests. +</para> + +<para> +Screen saving is typically done by disabling video output to the display tube +or by drawing a changing pattern onto the display. If the server chooses the +latter approach, a window with a special identifier is created and mapped at +the top of the stacking order where it remains until the screen saver +deactivates. At this time, the window is unmapped and is not accessible to any +client requests. +</para> +<para> +The server's default mechanism is refered to as the <emphasis remap='I'>internal</emphasis> screen +saver. An <emphasis remap='I'>external</emphasis> +screen saver client requires a means of determining the window +id for the screen saver window and setting the attributes (e.g. size, +location, visual, colormap) to be used when the window is mapped. These +requirements form the basis of this extension. +</para> +</sect1> + +<sect1 id="Issues"> +<title>Issues</title> +<para> +This extension raises several interesting issues. First is the question of +what should be done if some other client has the server grabbed when the screen +saver is supposed to activate? This commonly occurs with window managers that +automatically ask the user to position a window when it is first mapped by +grabbing the server and drawing XORed lines on the root window. +</para> +<para> +Second, a screen saver program must control the actual RGB values sent to the +display tube to ensure that the values change periodically to avoid phosphor +burn in. Thus, the client must have a known colormap installed whenever the +screen saver window is displayed. To prevent screen flashing, the visual type +of the screen saver window should also be controlable. +</para> +<para> +Third, some implementations may wish to destroy the screen saver window when +it is not mapped so that it need not be avoided during event delivery. Thus, +screen saver clients may find that the requests that reference the screen +saver window may fail when the window is not displayed. +</para> +</sect1> + +<sect1 id="Protocol"> +<title>Protocol</title> +<para> +The Screen Saver extension is as follows: +</para> + +<sect2 id="Types"> +<title>Types</title> +<para> +In adition to the comon types described in the core protocol, the following +type is used in the request and event definitions in subsequent sections. +</para> + +<informaltable frame="none"> + <tgroup cols='2' align='left'> + <colspec colname='c1' colsep="0"/> + <colspec colname='c2' colsep="0"/> + <thead> + <row> + <entry>Name</entry> + <entry>Value</entry> + </row> + </thead> + <tbody> + <row rowsep="0"> + <entry>SCREENSAVEREVENT</entry> + <entry><emphasis role="bold">ScreenSaverNotify</emphasis>, + <emphasis role="bold">ScreenSaverCycle</emphasis></entry> + </row> + </tbody> + </tgroup> +</informaltable> +</sect2> + +<sect2 id="Errors"> +<title>Errors</title> +<para> +The Screen Saver extension adds no errors beyond the core protocol. +</para> +</sect2> + +<sect2 id="Requests"> +<title>Requests</title> +<para> +The Screen Saver extension adds the following requests: +</para> + +<literallayout> +<emphasis role="bold">ScreenSaverQueryVersion</emphasis> + client-major-version: CARD8 + client-minor-version: CARD8 +-> + server-major-version: CARD8 + server-minor-version: CARD8 +</literallayout> + +<para> +This request allows the client and server to determine which version of +the protocol should be used. The client sends the version that it +prefers; if the server understands that +version, it returns the same values and interprets subsequent requests +for this extension according to the specified version. Otherwise, +the server returns the closest version of the protocol that it can +support and interprets subsequent requests according to that version. +This document describes major version 1, minor version 0; the major +and minor revision numbers should only be incremented in response to +incompatible and compatible changes, respectively. +</para> + +<literallayout> +<emphasis role="bold">ScreenSaverQueryInfo</emphasis> +<emphasis>drawable</emphasis> DRAWABLE + +saver-window: WINDOW +state: {<emphasis role="bold">Disabled</emphasis>, <emphasis role="bold">Off</emphasis>, <emphasis role="bold">On</emphasis>} +kind: {<emphasis role="bold">Blanked</emphasis>, <emphasis role="bold">Internal</emphasis>, <emphasis role="bold">External</emphasis>} +til-or-since: CARD32 +idle: CARD32 +event-mask: SETofSCREENSAVEREVENT + +Errors: <emphasis role="bold">Drawable</emphasis> +</literallayout> + +<para> +This request returns information about the state of the screen +saver on the screen associated with <emphasis remap='I'>drawable</emphasis>. The <emphasis remap='I'>saver-window</emphasis> +is the XID that is associated with the screen saver window. This +window is not guaranteed to exist +except when external screen saver is active. Although it is a +child of the root, this window is not returned by +<function>QueryTree</function> +requests on the root. Whenever this window is mapped, it is always above +any of its siblings in the stacking order. XXX - TranslateCoords? +</para> +<para> +The <emphasis remap='I'>state</emphasis> field specifies whether or not the screen saver is currently +active and how the <emphasis remap='I'>til-or-since</emphasis> value should be interpretted: +</para> + +<informaltable frame="none"> + <tgroup cols='2' align='left'> + <colspec colname='c1' colsep="0"/> + <colspec colname='c2' colsep="0"/> + <tbody> + <row rowsep="0"> + <entry><emphasis role="bold">Off</emphasis></entry> + <entry> +The screen is not currently being saved; +<emphasis remap='I'>til-or-since</emphasis> +specifies the number of milliseconds until the screen saver is expected to +activate. + </entry> + </row> + <row rowsep="0"> + <entry><emphasis role="bold">On</emphasis></entry> + <entry> +The screen is currently being saved; +<emphasis remap='I'>til-or-since</emphasis> specifies +the number of milliseconds since the screen saver activated. + </entry> + </row> + <row rowsep="0"> + <entry><emphasis role="bold">Disabled</emphasis></entry> + <entry> +The screen saver is currently disabled; +<emphasis remap='I'>til-or-since</emphasis> is zero. + </entry> + </row> + </tbody> + </tgroup> +</informaltable> + +<para> +The <emphasis remap='I'>kind</emphasis> field specifies the mechanism that either is currently being +used or would have been were the screen being saved: +</para> + +<informaltable frame="none"> + <tgroup cols='2' align='left'> + <colspec colname='c1' colsep="0"/> + <colspec colname='c2' colsep="0"/> + <tbody> + <row rowsep="0"> + <entry><emphasis role="bold">Blanked</emphasis></entry> + <entry>The video signal to the display monitor was disabled.</entry> + </row> + <row rowsep="0"> + <entry><emphasis role="bold">Internal</emphasis></entry> + <entry>A server-dependent, built-in screen saver image was displayed; either no + client had set the screen saver window attributes or a different client + had the server grabbed when the screen saver activated.</entry> + </row> + <row rowsep="0"> + <entry><emphasis role="bold">External</emphasis></entry> + <entry>The screen saver window was mapped with attributes set by a + client using the <function>ScreenSaverSetAttributes</function> request.</entry> + </row> + </tbody> + </tgroup> +</informaltable> + +<para> +The <emphasis remap='I'>idle</emphasis> field specifies the number of milliseconds since the last +input was received from the user on any of the input devices. +</para> + +<para> +The <emphasis remap='I'>event-mask</emphasis> field specifies which, if any, screen saver +events this client has requested using <function>ScreenSaverSelectInput</function>. +</para> + +<para> +If <emphasis remap='I'>drawable</emphasis> is not a valid drawable identifier, a Drawable +error is returned and the request is ignored. +</para> + +<literallayout> +<emphasis role="bold">ScreenSaverSelectInput</emphasis> +drawable: DRAWABLE +event-mask: SETofSCREENSAVEREVENT +</literallayout> + +<para> +Errors: +<emphasis role="bold">Drawable</emphasis>, +<emphasis role="bold">Match</emphasis> +</para> + +<para> +This request specifies which Screen Saver extension events on the screen +associated with <emphasis remap='I'>drawable</emphasis> should be generated for this client. If +no bits are set in <emphasis remap='I'>event-mask</emphasis>, then no events will be generated. +Otherwise, any combination of the following bits may be set: +</para> + +<informaltable frame="none"> + <tgroup cols='2' align='center'> + <colspec colname='c1' colsep="0"/> + <colspec colname='c2' colsep="0"/> + <tbody> + <row rowsep="0"> + <entry><emphasis role="bold">ScreenSaverNotify</emphasis></entry> + <entry> +If this bit is set, <emphasis role="bold">ScreenSaverNotify</emphasis> events are generated whenever +the screen saver is activated or deactivated. + </entry> + </row> + <row rowsep="0"> + <entry><emphasis role="bold">ScreenSaverCycle</emphasis></entry> + <entry> +If this bit is set, <emphasis role="bold">ScreenSaverNotify</emphasis> events are generated whenever +the screen saver cycle interval passes. + </entry> + </row> + </tbody> + </tgroup> +</informaltable> + +<para> +If <emphasis remap='I'>drawable</emphasis> is not a valid drawable identifier, a Drawable +error is returned. If any undefined bits are set in <emphasis remap='I'>event-mask</emphasis>, +a Value error is returned. If an error is returned, +the request is ignored. +</para> + +<para> +<emphasis role="bold">ScreenSaverSetAttributes</emphasis> +</para> +<literallayout> +drawable: DRAWABLE +class: +{<emphasis role="bold">InputOutput</emphasis>, <emphasis role="bold">InputOnly</emphasis>, <emphasis role="bold">CopyFromParent</emphasis>} +depth: CARD8 +visual: VISUALID or <emphasis role="bold">CopyFromParent</emphasis> +x, y: INT16 +width, height, border-width: CARD16 +value-mask: BITMASK +value-list: LISTofVALUE + +<emphasis role="bold">Access</emphasis>, <emphasis role="bold">Window</emphasis>, <emphasis role="bold">Pixmap</emphasis>, <emphasis role="bold">Colormap</emphasis>, <emphasis role="bold">Cursor</emphasis>, <emphasis role="bold">Match</emphasis>, <emphasis role="bold">Value</emphasis>, <emphasis role="bold">Alloc</emphasis> +</literallayout> + +<para> +This request sets the attributes that this client would like to see +used in creating the screen saver window on the screen associated +with <emphasis remap='I'>drawable</emphasis>. If another client currently has the attributes set, +an Access error is generated and the request is ignored. +</para> + +<para> +Otherwise, the specified window attributes are checked as if +they were used in a core <function>CreateWindow</function> request whose +parent is the root. The <emphasis remap='I'>override-redirect</emphasis> field is ignored as +it is implicitly set to True. If the window attributes result in an +error according to the rules for <function>CreateWindow</function>, the request is ignored. +</para> +<para> +Otherwise, the attributes are stored and will take effect on the next +activation that occurs when the server is not grabbed by another client. +Any resources specified for the +<emphasis remap='I'>background-pixmap</emphasis> or <emphasis remap='I'>cursor</emphasis> attributes may be +freed immediately. The server is free to copy the <emphasis remap='I'>background-pixmap</emphasis> +or <emphasis remap='I'>cursor</emphasis> resources or to use them in place; therefore, the effect of +changing the contents of those resources is undefined. If the +specified <emphasis remap='I'>colormap</emphasis> no longer exists when the screen saver activates, +the parent's colormap is used instead. If no errors are generated by this +request, any previous +screen saver window attributes set by this client are released. +</para> +<para> +When the screen saver next activates and the server is not grabbed by +another client, the screen saver window is +created, if necessary, and set to the specified attributes and events +are generated as usual. The colormap +associated with the screen saver window is +installed. Finally, the screen saver window is mapped. +</para> +<para> +The window remains mapped and at the top of the stacking order +until the screen saver is deactivated in response to activity on +any of the user input devices, a <function>ForceScreenSaver</function> request with +a value of Reset, or any request that would cause the window to be +unmapped. +</para> +<para> +If the screen saver activates while the server is grabbed by another +client, the internal saver mechanism is used. The <function>ForceScreenSaver</function> +request may be used with a value of Active to +deactivate the internal saver and activate the external saver. +</para> +<para> +If the screen saver client's connection to the server is broken +while the screen saver is activated and the client's close down mode has not +been RetainPermanent or RetainTemporary, the current screen saver +is deactivated and the internal screen saver is immediately activated. +</para> +<para> +When the screen saver deactivates, the screen saver window's colormap +is uninstalled and the window is unmapped (except as described below). +The screen saver XID is disassociated +with the window and the server may, but is not required to, +destroy the window along with any children. +</para> +<para> +When the screen saver is being deactivated and then immediately +reactivated (such as when switching screen savers), the server +may leave the screen saver window mapped (typically to avoid +generating exposures). +</para> + +<para> +<emphasis role="bold">ScreenSaverUnsetAttributes</emphasis> +</para> + +<literallayout> +<emphasis>drawble</emphasis>: <emphasis role="bold">DRAWABLE</emphasis> + +Errors: <emphasis role="bold">Drawable</emphasis> +</literallayout> + +<para> +This request notifies the server that this client no longer +wishes to control the screen saver window. Any screen saver +attributes set by this client and any descendents of the screen +saver window created by this client should be released +immediately if the screen saver is not active, else upon +deactivation. +</para> +<para> +This request is ignored if the client has not previously set the screen saver +window attributes. +</para> +</sect2> + +<sect2 id="Events_"> +<title>Events</title> +<para> +The Screen Saver extension adds one event: +</para> +<para> +<emphasis role="bold">ScreenSaverNotify</emphasis> +</para> + +<literallayout> +<emphasis role="bold">root</emphasis>: WINDOW +<emphasis role="bold">window</emphasis>: WINDOW +<emphasis role="bold">state</emphasis>: {<emphasis role="bold">Off</emphasis>, <emphasis role="bold">On</emphasis>, <emphasis role="bold">Cycle</emphasis>} +<emphasis role="bold">kind</emphasis>: { <emphasis role="bold">Blanked</emphasis>, <emphasis role="bold">Internal</emphasis> , <emphasis role="bold">External</emphasis> } +<emphasis role="bold">forced</emphasis>: BOOL +<emphasis role="bold">time</emphasis>: TIMESTAMP +</literallayout> +<para> +This event is delivered to clients that have requested +ScreenSaverNotify events using the <function>ScreenSaverSelectInput</function> request +whenever the screen saver activates or deactivates. +</para> +<para> +The <emphasis remap='I'>root</emphasis> field specifies root window of the screen for +which the event was generated. The <emphasis remap='I'>window</emphasis> field specifies +the value that is returned by <function>ScreenSaverQueryInfo</function> as +the identifier for the screen saver window. This window is not +required to exist if the external screen saver is not active. +</para> +<para> +The <emphasis remap='I'>state</emphasis> field specifies the cause of the event: +</para> + +<informaltable frame="none"> + <tgroup cols='2' align='left'> + <colspec colname='c1' colsep="0"/> + <colspec colname='c2' colsep="0"/> + <tbody> + <row rowsep="0"> + <entry><emphasis role="bold">Off</emphasis></entry> + <entry> +The screen saver deactivated; this event is sent if the client has set the +ScreenSaverNotify bit in its event mask. + </entry> + </row> + <row rowsep="0"> + <entry><emphasis role="bold">On</emphasis></entry> + <entry> +The screen saver activated. This event is sent if the client has set the +ScreenSaverNotify bit in its event mask. + </entry> + </row> + <row rowsep="0"> + <entry><emphasis role="bold">Cycle</emphasis></entry> + <entry> +The cycle interval passed and the client is expected to change the image on +the screen. This event is sent if the client has set the +ScreenSaverCycle bit in its event mask. + </entry> + </row> + </tbody> + </tgroup> +</informaltable> + +<para> +If <emphasis remap='I'>state</emphasis> is set to +<emphasis role="bold">On </emphasis> or +<emphasis role="bold">Off</emphasis> +then <emphasis remap='I'>forced</emphasis> indicates whether or not +activation or deactivation was caused by a core +<function>ForceScreenSaver</function> +request; otherwise, <emphasis remap='I'>forced</emphasis> is set to False. +</para> + +<para> +The <emphasis remap='I'>kind</emphasis> field specifies mechanism that was used to save the screen +when the screen saver was activated, as described in +<function>ScreenSaverQueryInfo</function>. +</para> + +<para> +The <emphasis remap='I'>time</emphasis> field indicates the server time +when the event was generated. +</para> +</sect2> +</sect1> + +<sect1 id="Encoding"> +<title>Encoding</title> +<para> +Please refer to the X11 Protocol Encoding document as this document uses +conventions established there. +</para> +<para> +The name of this extension is "SCREEN-SAVER". +</para> + +<sect2 id="Common_Types"> +<title>Common Types</title> +<literallayout class="monospaced"> +SETofSCREENSAVEREVENT + #x00000001 ScreenSaverNotifyMask + #x00000002 ScreenSaverCycleMask +</literallayout> +</sect2> + +<sect2 id="Requests_2"> +<title>Requests</title> +<literallayout class="monospaced"> +<emphasis role="bold">ScreenSaverQueryVersion</emphasis> +1 CARD8 screen saver opcode +1 0 minor opcode +2 2 request length +1 CARD8 client major version +1 CARD8 client minor version +2 unused +-> +1 1 Reply +1 unused +2 CARD16 sequence number +4 0 reply length +1 CARD8 server major version +1 CARD8 server minor version +22 unused + +<emphasis role="bold">ScreenSaverQueryInfo</emphasis> +1 CARD8 screen saver opcode +1 1 minor opcode +2 2 request length +4 DRAWABLE drawable associated with screen +-> +1 1 Reply +1 CARD8 state + 0 Off + 1 On + 3 Disabled +2 CARD16 sequence number +4 0 reply length +4 WINDOW saver window +4 CARD32 milliseconds until saver or since saver +4 CARD32 milliseconds since last user device input +4 SETofSCREENSAVEREVENT event mask +1 CARD8 kind + 0 Blanked + 1 Internal + 2 External +10 unused + +<emphasis role="bold">ScreenSaverSelectInput</emphasis> +1 CARD8 screen saver opcode +1 2 minor opcode +2 3 request length +4 DRAWABLE drawable associated with screen +4 SETofSCREENSAVEREVENT event mask + +<emphasis role="bold">ScreenSaverSetAttributes</emphasis> +1 CARD8 screen saver opcode +1 3 minor opcode +2 6+n request length +4 DRAWABLE drawable associated with screen +2 INT16 x +2 INT16 y +2 CARD16 width +2 CARD16 height +2 CARD16 border-width +1 class + 0 CopyFromParent + 1 InputOutput + 2 InputOnly +1 CARD8 depth +4 VISUALID visual + 0 CopyFromParent +4 BITMASK value-mask (has n bits set to 1) + encodings are the same as for core CreateWindow +4n LISTofVALUE value-list + encodings are the same as for core CreateWindow + +<emphasis role="bold">ScreenSaverUnsetAttributes</emphasis> +1 CARD8 screen saver opcode +1 4 minor opcode +2 3 request length +4 DRAWABLE drawable associated with screen +</literallayout> +</sect2> + +<sect2 id="Events"> +<title>Events</title> + +<literallayout class="monospaced"> +<emphasis role="bold">ScreenSaverNotify</emphasis> +1 CARD8 code assigned by core +1 CARD8 state + 0 Off + 1 On + 2 Cycle +2 CARD16 sequence number +4 TIMESTAMP time +4 WINDOW root +4 WINDOW screen saver window +1 CARD8 kind + 0 Blanked + 1 Internal + 2 External +1 BOOL forced +14 unused +</literallayout> +</sect2> +</sect1> + +<sect1 id="Inter_Client_Communications_Conventions_"> +<title>Inter-Client Communications Conventions</title> +<para> +Screen saver clients should create at least one resource value whose +identifier can be stored in a property named +<emphasis role="bold">_SCREEN_SAVER_ID</emphasis> +on the root of each screen it is managing. +This property should have one 32-bit value corresponding to the resource +identifier; the type of the property should indicate the type of the +resource and should be one of the following: +<emphasis role="bold">WINDOW</emphasis>, +<emphasis role="bold">PIXMAP</emphasis>, +<emphasis role="bold">CURSOR</emphasis>, +<emphasis role="bold">FONT</emphasis>, or +<emphasis role="bold">COLORMAP</emphasis>. +</para> +</sect1> + +<sect1 id="C_language_binding"> +<title>C language binding</title> + +<para> +The C binding for this extension simply provide access to the protocol; they +add no semantics beyond what is described above. +</para> + +<para> +The include file for this extension is +<emphasis role="bold"><X11/extensions/scrnsaver.h></emphasis>. +</para> + + +<funcsynopsis> +<funcprototype> + <funcdef>Bool <function>XScreenSaverQueryExtension</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> + <paramdef>int <parameter>*event_base</parameter></paramdef> + <paramdef>int <parameter>*error_base</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para> +This routine returns +<emphasis role="bold">True</emphasis> +if the specified <emphasis remap='I'>display</emphasis> supports the +SCREEN-SAVER extension; otherwise it returns +<emphasis role="bold">False</emphasis>. +If the extension is supported, the event number for +<function>ScreenSaverNotify</function> +events is returned in the value pointed to by +<emphasis remap='I'>event_base</emphasis>. Since +no additional errors are defined by this extension, the results +of <emphasis remap='I'>error_base</emphasis> are not defined. +</para> + +<funcsynopsis> +<funcprototype> + <funcdef>Status <function>XScreenSaverQueryVersion</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> + <paramdef>int <parameter>*major</parameter></paramdef> + <paramdef>int <parameter>*minor</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para> +If the specified <emphasis remap='I'>display</emphasis> supports the +extension, the version numbers of the protocol +expected by the server are returned in +<emphasis remap='I'>major</emphasis> and +<emphasis remap='I'>minor</emphasis> and +a non-zero value is returned. Otherwise, the arguments are not +set and 0 is returned. +</para> + +<para>XScreenSaverInfo *</para> +<para>XScreenSaverAllocInfo()</para> + +<para> +This routine allocates and returns an +<emphasis role="bold">XScreenSaverInfo</emphasis> structure +for use in calls to <function>XScreenSaverQueryInfo</function>. +All fields in the +structure are initialized to zero. If insufficient memory is available, +NULL is returned. The results of this routine can be released +using <emphasis remap='I'>XFree</emphasis>. +</para> + +<funcsynopsis> +<funcprototype> + <funcdef>Status <function>XScreenSaverQueryInfo</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> + <paramdef>Drawable <parameter>drawable</parameter></paramdef> + <paramdef>XScreenSaverInfo <parameter>*saver_info</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para> +If the specified <emphasis remap='I'>display</emphasis> supports the extension, +information about the current state of the +screen server is returned in <emphasis remap='I'>saver_info</emphasis> and a non-zero value is +returned. The <function>XScreenSaverInfo</function> structure is +defined as follows: +</para> + +<literallayout class="monospaced"> +typedef struct { + Window window; /* screen saver window */ + int state; /* ScreenSaver{Off,On,Disabled} */ + int kind; /* ScreenSaver{Blanked,Internal,External} */ + unsigned long til_or_since; /* milliseconds */ + unsigned long idle; /* milliseconds */ + unsigned long event_mask; /* events */ +} XScreenSaverInfo; +</literallayout> + +<para> +See the <function>ScreenSaverQueryInfo</function> request for a +description of the fields. If the extension is not supported, +<emphasis remap='I'>saver_info</emphasis> is not changed and 0 +is returned. +</para> + +<funcsynopsis> +<funcprototype> + <funcdef>void <function>XScreenSaverSelectInput</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> + <paramdef>Drawable <parameter>drawable</parameter></paramdef> + <paramdef>unsigned long <parameter>event_mask</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para> +If the specified <emphasis remap='I'>display</emphasis> supports the extension, +this routine asks that events related to +the screen saver be generated for this client. +The format of the events generated is: +</para> + +<literallayout class="monospaced"> +typedef struct { + int type; /* of event */ + unsigned long serial; /* # of last request processed by server */ + Bool send_event; /* true if this came frome a SendEvent request */ + Display *display; /* Display the event was read from */ + Window window; /* screen saver window */ + Window root; /* root window of event screen */ + int state; /* ScreenSaver{Off,On,Cycle} */ + int kind; /* ScreenSaver{Blanked,Internal,External} */ + Bool forced; /* extents of new region */ + Time time; /* event timestamp */ +} XScreenSaverNotifyEvent; +</literallayout> + +<para> +See the definition of the +<function>ScreenSaverSelectInput</function> request for descriptions +of the allowed event masks. <!-- xref ? --> +</para> + +<funcsynopsis> +<funcprototype> + <funcdef>void <function>XScreenSaverSetAttributes</function></funcdef> + <paramdef>Display <parameter>*dpy</parameter></paramdef> + <paramdef>Drawable <parameter>drawable</parameter></paramdef> + <paramdef>int <parameter>x</parameter></paramdef> + <paramdef>int <parameter>y</parameter></paramdef> + <paramdef>unsigned int <parameter>width</parameter></paramdef> + <paramdef>unsigned int <parameter>height</parameter></paramdef> + <paramdef>unsigned int <parameter>border_width</parameter></paramdef> + <paramdef>int <parameter>depth</parameter></paramdef> + <paramdef>unsigned int <parameter>class</parameter></paramdef> + <paramdef>Visual <parameter>*visual</parameter></paramdef> + <paramdef>unsigned long <parameter>valuemask</parameter></paramdef> + <paramdef>XSetWindowAttributes <parameter>*attributes</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para> +If the specified <emphasis remap='I'>display</emphasis> supports the +extension, this routine sets the attributes to be used +the next time the external screen saver is activated. See the definition +of the <function>ScreenSaverSetAttributes</function> request for a +description of each of the arguments. +</para> + +<funcsynopsis> +<funcprototype> + <funcdef>void <function>XScreenSaverUnsetAttributes</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> + <paramdef>Drawable <parameter>drawable</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para> +If the specified <emphasis remap='I'>display</emphasis> supports the +extension, this routine instructs the server to discard +any previous screen saver window attributes set by this client. +</para> + +<funcsynopsis> +<funcprototype> + <funcdef>Status <function>XScreenSaverRegister</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> + <paramdef>int <parameter>screen</parameter></paramdef> + <paramdef>XID <parameter>xid</parameter></paramdef> + <paramdef>Atom <parameter>type</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para> +This routine stores the given <emphasis remap='I'>XID</emphasis> in the +<emphasis role="bold">_SCREEN_SAVER_ID</emphasis> property (of the given +<emphasis remap='I'>type</emphasis>) on the root window of the specified +<emphasis remap='I'>screen</emphasis>. It returns zero if an error +is encountered and the property is not changed, otherwise it returns +non-zero. +</para> + +<funcsynopsis> +<funcprototype> + <funcdef>Status <function>XScreenSaverUnregister</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> + <paramdef>int <parameter>screen</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para> +This routine removes any <function>_SCREEN_SAVER_ID</function> from the +root window of the specified <emphasis remap='I'>screen</emphasis>. +It returns zero if an error is encountered and the property is changed, +otherwise it returns non-zero. +</para> + +<funcsynopsis> +<funcprototype> + <funcdef>Status <function>XScreenSaverGetRegistered</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> + <paramdef>int <parameter>screen</parameter></paramdef> + <paramdef>XID <parameter>*xid</parameter></paramdef> + <paramdef>ATOM <parameter>*type</parameter></paramdef> +</funcprototype> +</funcsynopsis> + + +<para> +This routine returns the +<emphasis remap='I'>XID</emphasis> and +<emphasis remap='I'>type</emphasis> stored in the +<emphasis role="bold">_SCREEN_SAVER_ID</emphasis> property on the +root window of the specified <emphasis remap='I'>screen</emphasis>. +It returns zero if an error +is encountered or if the property does not exist or is not of the correct +format; otherwise it returns non-zero. +</para> + +</sect1> +</chapter> +</book> |