x11proto-scrnsaver: Changes to 'debian-unstable'
.gitignore | 78 ++++
ChangeLog | 113 ++++++
Makefile.am | 13
README | 30 +
configure.ac | 21 -
debian/changelog | 8
specs/.gitignore | 6
specs/Makefile.am | 64 +++
specs/saver.xml | 935 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
9 files changed, 1247 insertions(+), 21 deletions(-)
New commits:
commit 96b49eeae1f98958f41a5da32dba2a98df856813
Author: Robert Hooker <sarvatt@ubuntu.com>
Date: Tue Nov 2 19:54:46 2010 -0400
Update changelogs.
diff --git a/ChangeLog b/ChangeLog
index 0b68df4..d77c417 100644
--- a/ChangeLog
+++ b/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/debian/changelog b/debian/changelog
index 4886a3c..f6cb6a7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,14 @@
-x11proto-scrnsaver (1.2.0-3) UNRELEASED; urgency=low
+x11proto-scrnsaver (1.2.1-1) UNRELEASED; urgency=low
+ [ Julien Cristau ]
* Rename the build directory to not include DEB_BUILD_GNU_TYPE for no
good reason. Thanks, Colin Watson!
* Remove myself from Uploaders
- -- Julien Cristau <jcristau@debian.org> Sat, 16 Jan 2010 16:47:48 +0000
+ [ Robert Hooker ]
+ * New upstream release.
+
+ -- Robert Hooker <sarvatt@ubuntu.com> Tue, 02 Nov 2010 19:54:18 -0400
x11proto-scrnsaver (1.2.0-2) unstable; urgency=low
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>
diff --git a/configure.ac b/configure.ac
index c48decb..9938216 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,6 @@
AC_PREREQ([2.60])
-AC_INIT([ScrnSaverProto], [1.2.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
+AC_INIT([ScrnSaverProto], [1.2.1],
+ [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
AM_MAINTAINER_MODE
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>
diff --git a/configure.ac b/configure.ac
index f9f0b1a..c48decb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,10 +3,10 @@ AC_INIT([ScrnSaverProto], [1.2.0], [https://bugs.freedesktop.org/enter_bug.cgi?p
AM_INIT_AUTOMAKE([foreign dist-bzip2])
AM_MAINTAINER_MODE
-# Require xorg-macros: XORG_DEFAULT_OPTIONS
+# 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.3 or later before running autoconf/autogen])])
-XORG_MACROS_VERSION(1.3)
+ [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)
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>
diff --git a/Makefile.am b/Makefile.am
index 0a26e33..8f51dd8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,3 +1,5 @@
+SUBDIRS=specs
+
scrnsaverdir = $(includedir)/X11/extensions
scrnsaver_HEADERS = \
saver.h \
diff --git a/configure.ac b/configure.ac
index 13ed780..f9f0b1a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8,6 +8,11 @@ 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
+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/specs/.gitignore b/specs/.gitignore
new file mode 100644
index 0000000..12fe512
--- /dev/null
+++ b/specs/.gitignore
@@ -0,0 +1,6 @@
+# Add & Override for this directory and it's subdirectories
+*.html
+*.ps
+*.pdf
+*.txt
+*.css
diff --git a/specs/Makefile.am b/specs/Makefile.am
new file mode 100644
index 0000000..a312ac9
--- /dev/null
+++ b/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/specs/saver.xml b/specs/saver.xml
new file mode 100644
index 0000000..93b5229
--- /dev/null
+++ b/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
Reply to: