From a51dc808ada150cfc6ff4469444f3909999f6c24 Mon Sep 17 00:00:00 2001 From: Boram Park Date: Tue, 21 Aug 2012 18:03:30 +0900 Subject: [PATCH] upload tizen2.0 source --- COPYING | 49 +++ ChangeLog | 642 ++++++++++++++++++++++++++++++++++++ INSTALL | 291 ++++++++++++++++ Makefile.am | 43 +++ README | 25 ++ configure.ac | 55 +++ include/X11/extensions/scrnsaver.h | 134 ++++++++ man/Makefile.am | 53 +++ man/XScreenSaverAllocInfo.man | 1 + man/XScreenSaverGetRegistered.man | 1 + man/XScreenSaverQueryExtension.man | 1 + man/XScreenSaverQueryInfo.man | 1 + man/XScreenSaverQueryVersion.man | 1 + man/XScreenSaverRegister.man | 1 + man/XScreenSaverSelectInput.man | 1 + man/XScreenSaverSetAttributes.man | 1 + man/XScreenSaverSuspend.man | 1 + man/XScreenSaverUnregister.man | 1 + man/XScreenSaverUnsetAttributes.man | 1 + man/Xss.man | 363 ++++++++++++++++++++ packaging/libXScrnSaver.spec | 60 ++++ src/Makefile.am | 35 ++ src/XScrnSaver.c | 470 ++++++++++++++++++++++++++ xscrnsaver.pc.in | 12 + 24 files changed, 2243 insertions(+) create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 INSTALL create mode 100644 Makefile.am create mode 100644 README create mode 100644 configure.ac create mode 100644 include/X11/extensions/scrnsaver.h create mode 100644 man/Makefile.am create mode 100644 man/XScreenSaverAllocInfo.man create mode 100644 man/XScreenSaverGetRegistered.man create mode 100644 man/XScreenSaverQueryExtension.man create mode 100644 man/XScreenSaverQueryInfo.man create mode 100644 man/XScreenSaverQueryVersion.man create mode 100644 man/XScreenSaverRegister.man create mode 100644 man/XScreenSaverSelectInput.man create mode 100644 man/XScreenSaverSetAttributes.man create mode 100644 man/XScreenSaverSuspend.man create mode 100644 man/XScreenSaverUnregister.man create mode 100644 man/XScreenSaverUnsetAttributes.man create mode 100644 man/Xss.man create mode 100644 packaging/libXScrnSaver.spec create mode 100644 src/Makefile.am create mode 100644 src/XScrnSaver.c create mode 100644 xscrnsaver.pc.in diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..72196e4 --- /dev/null +++ b/COPYING @@ -0,0 +1,49 @@ +Copyright (c) 1992 X Consortium + +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 +X CONSORTIUM 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 X Consortium 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 X Consortium. + + +Copyright (C) 2003 The XFree86 Project, Inc. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice 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 NON-INFRINGEMENT. +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..8b2cc90 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,642 @@ +commit 0ec072963f5964e09fbf84f4cd7d7ff8a9f3291f +Author: Alan Coopersmith +Date: Wed Mar 7 21:05:41 2012 -0800 + + libXScrnSaver 1.2.2 + + Signed-off-by: Alan Coopersmith + +commit 7d4e80e24773cd961d3c5d04031873017a1551a2 +Author: Alan Coopersmith +Date: Thu Nov 10 21:41:58 2011 -0800 + + Fix gcc -Wwrite-strings warning + + Signed-off-by: Alan Coopersmith + +commit 1cd2ab96550b6b7d3abf92f76fe112798af727a4 +Author: Alan Coopersmith +Date: Fri Sep 16 22:52:51 2011 -0700 + + Strip trailing whitespace + + Performed with: find * -type f | xargs perl -i -p -e 's{[ \t]+$}{}' + git diff -w & git diff -b show no diffs from this change + + Signed-off-by: Alan Coopersmith + +commit cfd6e22a3722514beefb39c73970715e2037b3ea +Author: Gaetan Nadon +Date: Wed Feb 2 11:43:40 2011 -0500 + + config: comment, minor upgrade, quote and layout configure.ac + + Group statements per section as per Autoconf standard layout + Quote statements where appropriate. + Autoconf recommends not using dnl instead of # for comments + + Use AC_CONFIG_FILES to replace the deprecated AC_OUTPUT with parameters. + Add AC_CONFIG_SRCDIR([Makefile.am]) + + This helps automated maintenance and release activities. + Details can be found in http://wiki.x.org/wiki/NewModuleGuidelines + +commit 49b025eff5d5d343ae11c6bfea7731ca8bcbe332 +Author: Gaetan Nadon +Date: Fri Jan 28 19:41:37 2011 -0500 + + config: replace deprecated AM_CONFIG_HEADER with AC_CONFIG_HEADERS + + Signed-off-by: Gaetan Nadon + +commit ca2fc82f17a2bbe104b44ac33298377db0299c43 +Author: Gaetan Nadon +Date: Thu Jan 27 18:50:15 2011 -0500 + + config: remove AC_PROG_CC as it overrides AC_PROG_C_C99 + + XORG_STRICT_OPTION from XORG_DEFAULT_OPTIONS calls + AC_PROG_C_C99. This sets gcc with -std=gnu99. + If AC_PROG_CC macro is called afterwards, it resets CC to gcc. + + Signed-off-by: Gaetan Nadon + +commit aa25c745b032608c9cdc8006ed351d8ef435bf18 +Author: Alan Coopersmith +Date: Fri Oct 29 22:20:54 2010 -0700 + + libXScrnSaver 1.2.1 + + Signed-off-by: Alan Coopersmith + +commit f8b5e67d5b9fe5f6d8ff75561d66ac6a4bc16df2 +Author: Alan Coopersmith +Date: Fri Oct 29 22:18:40 2010 -0700 + + Sun's copyrights now belong to Oracle + + Signed-off-by: Alan Coopersmith + +commit 3ef4f63bf542411aa01e62ef5e8c8120afe255be +Author: Jesse Adkins +Date: Tue Sep 28 13:30:02 2010 -0700 + + Purge cvs tags. + + Signed-off-by: Jesse Adkins + Signed-off-by: Alan Coopersmith + +commit 25c4abc730f7d2407c33fcd5c48a6a82c541c921 +Author: Gaetan Nadon +Date: Tue Aug 17 09:00:28 2010 -0400 + + man: store shadow man pages in git rather than generating them + + Simplify the build process and the makefile. + + Local fix in CVS for bug 5628 is not required + as the problem has been fixed in + util-macros d9062e4077ebfd0985baf8418f3d0f111b9ddbba + + Signed-off-by: Gaetan Nadon + +commit 1fb51a78ae5a063aa384b0b6b6fb7b11e972fcfa +Author: Alan Coopersmith +Date: Thu Jul 8 15:04:20 2010 -0700 + + Use make rules instead of shell for loops to generate shadow man pages + + Allows parallel make and simpler build logs/error reporting + + Signed-off-by: Alan Coopersmith + +commit 2f5b75f49528c4bf57100b5d8fb83788013f7da9 +Author: Alan Coopersmith +Date: Thu Jul 8 15:01:36 2010 -0700 + + config: upgrade to util-macros 1.8 for additional man page support + + Use MAN_SUBST now supplied in XORG_MANPAGE_SECTIONS + The value of MAN_SUBST is the same for all X.Org packages. + + Use AC_PROG_SED now supplied by XORG_DEFAULT_OPTIONS + The existing statement can now be removed from the configuration file. + + Use automake provided $(AM_V_GEN) and XORG_DEFAULT_OPTIONS provided $(SED) + Enables silent rule and use platform appropriate version of sed. + + Signed-off-by: Alan Coopersmith + +commit d1a4b97476efc64d9c47202b877c72c8b0fed14d +Author: Fernando Carrijo +Date: Thu Jul 1 07:04:31 2010 -0300 + + Purge macros NEED_EVENTS and NEED_REPLIES + + Signed-off-by: Fernando Carrijo + Acked-by: Tiago Vignatti + Reviewed-by: Alan Coopersmith + +commit bd46f8e115caeb4f48af64fc235d2b317f01b41f +Author: Gaetan Nadon +Date: Mon Mar 29 16:50:33 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 d665b35a9b33b7b0a80b557115240ff5514bd8cf +Author: Gaetan Nadon +Date: Mon Mar 29 14:53:48 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 00e9520738c8660451cdf21e5a3b530924855822 +Author: Gaetan Nadon +Date: Tue Feb 16 10:37:21 2010 -0500 + + config: move CWARNFLAGS from configure.ac to Makefile.am + + Compiler warning flags should be explicitly set in the makefile + rather than being merged with other packages compiler flags. + + Signed-off-by: Gaetan Nadon + +commit 0b90e128718f269be334b9e60aa5b50604b1dc8c +Author: Alan Coopersmith +Date: Thu Jan 14 21:09:04 2010 -0800 + + Update Sun license notices to current X.Org standard form + + Signed-off-by: Alan Coopersmith + +commit 2f58888d29d779cb84072d1895934dfcee683f4c +Author: Gaetan Nadon +Date: Fri Nov 27 20:56:03 2009 -0500 + + Makefile.am: add ChangeLog and INSTALL on MAINTAINERCLEANFILES + + Now that the INSTALL file is generated. + Allows running make maintainer-clean. + +commit 27972a511fb73bad74dd0309487af050a6a99c42 +Author: Gaetan Nadon +Date: Wed Oct 28 14:09:10 2009 -0400 + + INSTALL, NEWS, README or AUTHORS files are missing/incorrect #24206 + + Add missing INSTALL file. Use standard GNU file on building tarball + README may have been updated + Remove AUTHORS file as it is empty and no content available yet. + Remove NEWS file as it is empty and no content available yet. + +commit fe1b6951a8e6ac4006b4f488121746cf71e4771d +Author: Gaetan Nadon +Date: Tue Oct 27 15:07:26 2009 -0400 + + 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 7c8ac21a9485beab00560764d16e41a4c26cfc02 +Author: Gaetan Nadon +Date: Mon Oct 26 22:08:42 2009 -0400 + + 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 b0b29818e4893fcf97a67fab58640740f285ad25 +Author: Gaetan Nadon +Date: Thu Oct 22 12:34:19 2009 -0400 + + .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 b27442666e132a521c5ce8c2aaa8de97abfa54b1 +Author: Jeremy Huddleston +Date: Wed Oct 21 12:47:23 2009 -0700 + + This is not a GNU project, so declare it foreign. + + On Wed, 2009-10-21 at 13:36 +1000, Peter Hutterer wrote: + > On Tue, Oct 20, 2009 at 08:23:55PM -0700, Jeremy Huddleston wrote: + > > I noticed an INSTALL file in xlsclients and libXvMC today, and it + > > was quite annoying to work around since 'autoreconf -fvi' replaces + > > it and git wants to commit it. Should these files even be in git? + > > Can I nuke them for the betterment of humanity and since they get + > > created by autoreconf anyways? + > + > See https://bugs.freedesktop.org/show_bug.cgi?id=24206 + + As an interim measure, replace AM_INIT_AUTOMAKE([dist-bzip2]) with + AM_INIT_AUTOMAKE([foreign dist-bzip2]). This will prevent the generation + of the INSTALL file. It is also part of the 24206 solution. + + Signed-off-by: Jeremy Huddleston + +commit aa162e709338904604b3f945999956044bcbc7cb +Author: Peter Hutterer +Date: Tue Aug 25 18:47:04 2009 +1000 + + Bump to 1.2.0 + + Signed-off-by: Peter Hutterer + +commit 1fd39b3fa18a3a315bf339f56a5fd9fb7a279f60 +Author: Peter Hutterer +Date: Tue Aug 25 18:48:26 2009 +1000 + + Require scrnsaverproto 1.2 to avoid header file conflicts. + + scrnsaverproto <= 1.1 provided screensaver.h. + + Signed-off-by: Peter Hutterer + +commit fb54ab90058f187f32c0679da35684accf8043c7 +Author: Julien Cristau +Date: Thu Aug 20 23:31:47 2009 +0200 + + Fix man vs header mismatch + + the manpage says the last member of XScreenSaverInfo is called + event_mask when in fact it is called eventMask in the header file. + + Debian bug#542698 + +commit 486af8df83765525d8c77bfa42b56fb193950c8a +Author: Alan Coopersmith +Date: Mon Feb 2 20:34:31 2009 -0800 + + Add README with pointers to mailing list, bugzilla & git repos + + Signed-off-by: Alan Coopersmith + +commit ed5bba86f67fdadeeaff584818d10864f3609e1a +Author: Paulo Cesar Pereira de Andrade +Date: Fri Jan 30 17:18:09 2009 -0200 + + Janitor: make distcheck, compiler warnings. + +commit f755643f48e780c6582132269ca8d5fb750c53bf +Author: Peter Hutterer +Date: Mon May 19 22:53:40 2008 +0930 + + Change AM_CFLAGS to pull in new header. + +commit 85762a27e0203aa380c4ed26dc08c7f1181d5210 +Author: Peter Hutterer +Date: Mon May 19 20:11:56 2008 +0930 + + Add screensaver.h to includedir. + + This header is a pure Xlib header and was moved here from the protocol module. + The history of the file can be found in the protocol module. + git://anongit.freedesktop.org/git/xorg/proto/scrnsaverproto + +commit ff9c27b08754c160256fe4d75cc4fbe07083f9d4 +Author: Peter Hutterer +Date: Mon May 19 18:49:26 2008 +0930 + + Rename parameters to clarify QueryVersion/QueryExtension. + + These parameters are not treated as input. Rename them to make the + inner workings slightly more obvious. + + X.Org Bug 14511 + +commit e3af1209b9c1fdb032d01e00b300d57278b81189 +Author: Alan Coopersmith +Date: Mon Mar 17 18:28:14 2008 -0700 + + Version bump: 1.1.3 + +commit a9208d44e5123c2f688097c2833abba7e6bcfc71 +Author: Paulo Cesar Pereira de Andrade +Date: Tue Mar 4 18:51:25 2008 -0300 + + libXScrnSaver ansification. + + Signed-off-by: Alan Coopersmith + +commit b805b9ebb2f981a507d16fc5524f573b8187e5f1 +Author: Alan Coopersmith +Date: Mon Mar 17 18:05:32 2008 -0700 + + Add hooks to check code with sparse/lint/etc. + +commit ae5c253a13cbb408cb41e173bffb993ec6aa6310 +Author: Matthieu Herrb +Date: Sun Mar 9 00:21:17 2008 +0100 + + Makefile.am: nuke RCS Id + +commit f641875615739ae6431e59b4fc47bb52fdce6381 +Author: James Cloos +Date: Thu Dec 6 15:51:14 2007 -0500 + + Add missing PHONY line for automatic ChangeLog generation + +commit ec5ca1927558d686c4957f2ae8c8c50c722cd87b +Author: Daniel Drake +Date: Tue May 29 10:07:00 2007 -0800 + + Bug #11084: libXScrnSaver COPYING file + + X.Org Bugzilla #11084 + +commit 8eced0dc1e259777bcda00539c0c59a57fa4a49d +Author: James Cloos +Date: Mon Sep 3 05:53:34 2007 -0400 + + Add *~ to .gitignore to skip patch/emacs droppings + +commit 36205d276fd8f783898abae4c32f72ab4eaab3c4 +Author: Daniel Stone +Date: Sat Dec 16 01:35:45 2006 +0200 + + bump to 1.1.2 + +commit 116299e6274c0c1bdd20b517fcc59ad95c438025 +Author: Daniel Stone +Date: Wed Dec 6 18:56:33 2006 +0200 + + Makefile.am: make ChangeLog hook safer + Make ChangeLog hook as safe as possible. + +commit 39fd9561a1cf899e933859279a2220b11e729548 +Author: Adam Jackson +Date: Fri Oct 13 16:29:20 2006 -0400 + + Bump to 1.1.1 + +commit 3705540d62bab68c5d41b73b59e2a7a23b001118 +Author: Adam Jackson +Date: Thu Oct 12 20:25:51 2006 -0400 + + Fix the ChangeLog hook to distcheck. + +commit be1d6f234b8366be9cc81bbc6e1774243102cb6d +Author: Matthieu Herrb +Date: Sat Jul 29 21:30:25 2006 +0200 + + Remove ChangeLog. Add a rule in Makefile.am to generate it using git-log. + +commit 27ce5ef4924cd162f9313d2c444d2830dc71e9ae +Author: Federico G. Schwindt +Date: Sat Jul 29 21:24:50 2006 +0200 + + correct header path. + +commit 5cbdc1b7dc3dedf341afdf6c7df741c015ceb6fa +Author: Alan Coopersmith +Date: Thu Jul 13 14:58:47 2006 -0700 + + renamed: .cvsignore -> .gitignore + +commit a183fb1a70d48155b67d98fb4e4aaca825842f12 +Author: Fredrik Höglund +Date: Fri Mar 31 18:43:09 2006 +0000 + + Update the package version number to 1.1. Require scrnsaverproto >= 1.1. + Update the manpage to document the new XScreenSaverSuspend function. + Add the implementation of XScreenSaverSuspend. + +commit 8bc4acacd1079637be310b71fb5b74a5b0717cc2 +Author: Alan Coopersmith +Date: Sun Feb 12 18:19:21 2006 +0000 + + Bug #5628 Shadow pages + not created correctly when MANDIR & MANSUFFIX don't match. + +commit 10b822d58304884aad0f9b321b7e97f354bb0601 +Author: Kevin E Martin +Date: Wed Dec 21 02:30:05 2005 +0000 + + Update package version for X11R7 release. + +commit e81e373c1263fb6934253661aaa4631456ca2766 +Author: Adam Jackson +Date: Mon Dec 19 16:28:26 2005 +0000 + + Stub COPYING files + +commit d939ce79b74a502e2c66a9049f8c9daf4c47bbf6 +Author: Kevin E Martin +Date: Thu Dec 15 00:24:28 2005 +0000 + + Update package version number for final X11R7 release candidate. + +commit a7fe9e9fa7e2d358788758fe1031595d322d874f +Author: Kevin E Martin +Date: Tue Dec 6 22:48:42 2005 +0000 + + Change *man_SOURCES ==> *man_PRE to fix autotools warnings. + +commit 0e2a03621d3779ebc922b3629b4239bc311e690c +Author: Kevin E Martin +Date: Sat Dec 3 05:49:42 2005 +0000 + + Update package version number for X11R7 RC3 release. + +commit c7e4c70be3431073765fad255d81f02e390a92d0 +Author: Kevin E Martin +Date: Sat Dec 3 04:41:48 2005 +0000 + + Add check and cflags for malloc(0) returning NULL. + +commit 754c50dc72c217f8cd4a9da36f42dd2e55407733 +Author: Alan Coopersmith +Date: Mon Nov 28 22:03:05 2005 +0000 + + Change *mandir targets to use new *_MAN_DIR variables set by xorg-macros.m4 + update to fix bug #5167 (Linux prefers *.1x man pages in man1 subdir) + +commit d0b21d4a6ad67657b8a24f2bfaf4eaaddcf9f757 +Author: Eric Anholt +Date: Sun Nov 20 23:17:40 2005 +0000 + + Add/improve libs .cvsignores. + +commit b58dced9ca72778438a1a57a314d18450891b7a5 +Author: Kevin E Martin +Date: Sat Nov 19 07:15:40 2005 +0000 + + Update pkgconfig files to separate library build-time dependencies from + application build-time dependencies, and update package deps to work + with separate build roots. + +commit 73316750771ef55c3d9723be3c321221a482f584 +Author: Kevin E Martin +Date: Wed Oct 19 02:48:09 2005 +0000 + + Update package version number for RC1 release. + +commit abb8966bbb2b78d16032bff72d5e2c53bbaaeca4 +Author: Alan Coopersmith +Date: Tue Oct 18 00:00:08 2005 +0000 + + Use @LIB_MAN_SUFFIX@ instead of $(LIB_MAN_SUFFIX) in macro substitutions to + work better with BSD make + +commit e5b2cfc00086fbc28cbcff0c25a5f6cc648974b2 +Author: Alan Coopersmith +Date: Mon Oct 17 21:13:15 2005 +0000 + + Rename .shadows.DONE to shadows.DONE to avoid some make's thinking it's a + suffix rule (reported by Matthieu Herrb) + +commit a90094021482a3e4093a4adc9a013c4084bd8712 +Author: Alan Coopersmith +Date: Thu Oct 13 04:25:46 2005 +0000 + + Add generated man pages to .cvsignores + +commit 572497b3413a67795306fc0df9554c4cb6c974fb +Author: Alan Coopersmith +Date: Thu Oct 13 02:13:37 2005 +0000 + + [lib/XScrnSaver manpage cleanup] + Use sed to fill in variables in man page Add shadow man pages for man pages + that document multiple functions. + +commit 3aa74d1b757936676dbd8bd640b51d72d5c28da1 +Author: Adam Jackson +Date: Sun Aug 28 19:59:15 2005 +0000 + + Bug #4149: Keep the soname as libXss and the version at 1.0.0, for monolith + compatibility. Bump to 0.99.1. (Christophe Saout) + +commit d0080f2f901247d12b78f90c747d543a1c96c8ab +Author: Adam Jackson +Date: Wed Aug 3 03:28:00 2005 +0000 + + Do PKG_CHECK_MODULES on a unique token instead of on "DEP", so builds with + a global configure cache don't get confused. + +commit 2581b891b58754e29a2af759c3ca277bf5a06d97 +Author: Kevin E Martin +Date: Fri Jul 29 21:22:50 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 f00570af369d1a516062fec225095cc94e6fab53 +Author: Keith Packard +Date: Sat Jul 9 06:04:32 2005 +0000 + + Add .cvsignore files + +commit 3817722549db9a2377f034b0af5768f8c36bbf62 +Author: Søren Sandmann Pedersen +Date: Wed Jun 22 22:46:39 2005 +0000 + + Apply these patches from Theo van Klaveren: + lib-dmx.patch lib-FS.patch lib-X11.patch lib-XRes.patch + lib-XScrnSaver.patch lib-xtrans.patch + to make the libraries distcheck. + +commit 1d4fab032a4b9924adbc6853798e98b4101c96d8 +Author: Alexander Gottwald +Date: Tue Jun 21 15:41:36 2005 +0000 + + lib/XScrnSaver/configure.ac + lib/XScrnSaver/src/Makefile.am + lib/Xfontcache/configure.ac + lib/Xfontcache/src/Makefile.am + lib/Xinerama/configure.ac + lib/Xinerama/src/Makefile.am + lib/Xtst/configure.ac + lib/Xv/configure.ac + lib/XvMC/configure.ac + lib/dmx/configure.ac Add missing xext.pc and xextproto.pc Add DEP_CFLAGS to + src/Makefile.am + +commit 21286ccdf3418566b424a9f086289994ac0877f1 +Author: Søren Sandmann Pedersen +Date: Fri Jun 10 19:57:07 2005 +0000 + + Build system for XScrnSaver + +commit c3a1a641b1a003ac7b4558b7897e77f0d0f0fdfa +Author: Egbert Eich +Date: Fri Apr 23 18:43:51 2004 +0000 + + Merging XORG-CURRENT into trunk + +commit 903b9ea09dadfd395120db1e844ce0fe374dfcef +Author: Egbert Eich +Date: Sun Mar 14 08:32:25 2004 +0000 + + Importing vendor version xf86-4_4_99_1 on Sun Mar 14 00:26:39 PST 2004 + +commit d5b14ebddf3dd3ca09a98f9c185fcb76822d3644 +Author: Egbert Eich +Date: Wed Mar 3 12:11:30 2004 +0000 + + Importing vendor version xf86-4_4_0 on Wed Mar 3 04:09:24 PST 2004 + +commit fa532ec60428670bbcb68c9a5caee8c85da97e8b +Author: Egbert Eich +Date: Thu Feb 26 13:35:33 2004 +0000 + + readding XFree86's cvs IDs + +commit a1af44719975f0c2e00b0d4b74a19ac308ae9832 +Author: Egbert Eich +Date: Thu Feb 26 09:22:44 2004 +0000 + + Importing vendor version xf86-4_3_99_903 on Wed Feb 26 01:21:00 PST 2004 + +commit b518e5d7bd7970dc558b3218b5f5ff13cd4f5bca +Author: Kaleb Keithley +Date: Thu Dec 4 22:02:57 2003 +0000 + + XFree86 4.3.99.901 (RC 1) + +commit b48caae437787a65e83c1b1f914ae0871bdc19f8 +Author: Kaleb Keithley +Date: Tue Nov 25 19:28:15 2003 +0000 + + XFree86 4.3.99.16 Bring the tree up to date for the Cygwin folks + +commit 444958cdf3fae56c7a82fa9086db33c095db511f +Author: Kaleb Keithley +Date: Tue Nov 25 19:28:15 2003 +0000 + + Initial revision + +commit 1c910af9cb665120abbbf03b3c351853715a34f8 +Author: Kaleb Keithley +Date: Fri Nov 14 16:48:49 2003 +0000 + + XFree86 4.3.0.1 + +commit 4a9983332a9f46ae835c1fbcb14b88ad24dc56f7 +Author: Kaleb Keithley +Date: Fri Nov 14 16:48:49 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..907af39 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,43 @@ +# +# Copyright 2005 Red Hat, Inc. +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of Red Hat not be used in +# advertising or publicity pertaining to distribution of the software without +# specific, written prior permission. Red Hat makes no +# representations about the suitability of this software for any purpose. It +# is provided "as is" without express or implied warranty. +# +# RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +# EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR +# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +# DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +SUBDIRS = src man + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = xscrnsaver.pc + +MAINTAINERCLEANFILES = ChangeLog INSTALL + +.PHONY: ChangeLog INSTALL + +INSTALL: + $(INSTALL_CMD) + +ChangeLog: + $(CHANGELOG_CMD) + +dist-hook: ChangeLog INSTALL + +if LINT +# Check source code with tools like lint & sparse +lint: + (cd src && $(MAKE) $(MFLAGS) lint) +endif LINT diff --git a/README b/README new file mode 100644 index 0000000..9e96bde --- /dev/null +++ b/README @@ -0,0 +1,25 @@ +XScreenSaver - X11 Screen Saver extension client library + +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/lib/libXScrnSaver + + http://cgit.freedesktop.org/xorg/lib/libXScrnSaver + +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/configure.ac b/configure.ac new file mode 100644 index 0000000..0f52477 --- /dev/null +++ b/configure.ac @@ -0,0 +1,55 @@ + +# Copyright 2005 Red Hat, Inc. +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of Red Hat not be used in +# advertising or publicity pertaining to distribution of the software without +# specific, written prior permission. Red Hat makes no +# representations about the suitability of this software for any purpose. It +# is provided "as is" without express or implied warranty. +# +# RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +# EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR +# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +# DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. +# + +# Initialize Autoconf +AC_PREREQ([2.60]) +AC_INIT([libXScrnSaver], [1.2.2], + [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXScrnSaver]) +AC_CONFIG_SRCDIR([Makefile.am]) +AC_CONFIG_HEADERS([config.h]) + +# Initialize Automake +AM_INIT_AUTOMAKE([foreign dist-bzip2]) +AM_MAINTAINER_MODE + +# Initialize libtool +AC_PROG_LIBTOOL + +# Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS +m4_ifndef([XORG_MACROS_VERSION], + [m4_fatal([must install xorg-macros 1.8 or later before running autoconf/autogen])]) +XORG_MACROS_VERSION(1.8) +XORG_DEFAULT_OPTIONS +XORG_CHECK_MALLOC_ZERO + +# Obtain compiler/linker options for depedencies +PKG_CHECK_MODULES(XSCRNSAVER, x11 xext xextproto [scrnsaverproto >= 1.2]) + +# Allow checking code with lint, sparse, etc. +XORG_WITH_LINT +XORG_LINT_LIBRARY([Xss]) + +AC_CONFIG_FILES([Makefile + src/Makefile + man/Makefile + xscrnsaver.pc]) +AC_OUTPUT diff --git a/include/X11/extensions/scrnsaver.h b/include/X11/extensions/scrnsaver.h new file mode 100644 index 0000000..654aef6 --- /dev/null +++ b/include/X11/extensions/scrnsaver.h @@ -0,0 +1,134 @@ +/* + * +Copyright (c) 1992 X Consortium + +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 +X CONSORTIUM 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 X Consortium 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 X Consortium. + * + * Author: Keith Packard, MIT X Consortium + */ + +#ifndef _SCRNSAVER_H_ +#define _SCRNSAVER_H_ + +#include +#include +#include + +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; /* ScreenSaverOff, ScreenSaverOn, ScreenSaverCycle*/ + int kind; /* ScreenSaverBlanked, ...Internal, ...External */ + Bool forced; /* extents of new region */ + Time time; /* event timestamp */ +} XScreenSaverNotifyEvent; + +typedef struct { + Window window; /* screen saver window - may not exist */ + int state; /* ScreenSaverOff, ScreenSaverOn, ScreenSaverDisabled*/ + int kind; /* ScreenSaverBlanked, ...Internal, ...External */ + unsigned long til_or_since; /* time til or since screen saver */ + unsigned long idle; /* total time since last user input */ + unsigned long eventMask; /* currently selected events for this client */ +} XScreenSaverInfo; + +_XFUNCPROTOBEGIN + +extern Bool XScreenSaverQueryExtension ( + Display* /* display */, + int* /* event_base */, + int* /* error_base */ +); + +extern Status XScreenSaverQueryVersion ( + Display* /* display */, + int* /* major_version */, + int* /* minor_version */ +); + +extern XScreenSaverInfo *XScreenSaverAllocInfo ( + void +); + +extern Status XScreenSaverQueryInfo ( + Display* /* display */, + Drawable /* drawable */, + XScreenSaverInfo* /* info */ +); + +extern void XScreenSaverSelectInput ( + Display* /* display */, + Drawable /* drawable */, + unsigned long /* eventMask */ +); + +extern void XScreenSaverSetAttributes ( + Display* /* display */, + Drawable /* drawable */, + int /* x */, + int /* y */, + unsigned int /* width */, + unsigned int /* height */, + unsigned int /* border_width */, + int /* depth */, + unsigned int /* class */, + Visual * /* visual */, + unsigned long /* valuemask */, + XSetWindowAttributes * /* attributes */ +); + +extern void XScreenSaverUnsetAttributes ( + Display* /* display */, + Drawable /* drawable */ +); + +extern Status XScreenSaverRegister ( + Display* /* display */, + int /* screen */, + XID /* xid */, + Atom /* type */ +); + +extern Status XScreenSaverUnregister ( + Display* /* display */, + int /* screen */ +); + +extern Status XScreenSaverGetRegistered ( + Display* /* display */, + int /* screen */, + XID* /* xid */, + Atom* /* type */ +); + +extern void XScreenSaverSuspend ( + Display* /* display */, + Bool /* suspend */ +); + +_XFUNCPROTOEND + +#endif /* _SCRNSAVER_H_ */ diff --git a/man/Makefile.am b/man/Makefile.am new file mode 100644 index 0000000..e711937 --- /dev/null +++ b/man/Makefile.am @@ -0,0 +1,53 @@ +# +# Copyright (c) 2005, 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. +# + +libmandir = $(LIB_MAN_DIR) + +libman_PRE = \ + Xss.man \ + $(Xss_shadows:=.man) + +Xss_shadows = \ + XScreenSaverQueryExtension \ + XScreenSaverQueryVersion \ + XScreenSaverAllocInfo \ + XScreenSaverQueryInfo \ + XScreenSaverSelectInput \ + XScreenSaverSetAttributes \ + XScreenSaverUnsetAttributes \ + XScreenSaverRegister \ + XScreenSaverUnregister \ + XScreenSaverGetRegistered \ + XScreenSaverSuspend + +EXTRA_DIST = $(libman_PRE) +CLEANFILES = $(libman_DATA) + +libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) + +SUFFIXES = .$(LIB_MAN_SUFFIX) .man + +# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure +.man.$(LIB_MAN_SUFFIX): + $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@ + diff --git a/man/XScreenSaverAllocInfo.man b/man/XScreenSaverAllocInfo.man new file mode 100644 index 0000000..0b94d09 --- /dev/null +++ b/man/XScreenSaverAllocInfo.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xss.__libmansuffix__ diff --git a/man/XScreenSaverGetRegistered.man b/man/XScreenSaverGetRegistered.man new file mode 100644 index 0000000..0b94d09 --- /dev/null +++ b/man/XScreenSaverGetRegistered.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xss.__libmansuffix__ diff --git a/man/XScreenSaverQueryExtension.man b/man/XScreenSaverQueryExtension.man new file mode 100644 index 0000000..0b94d09 --- /dev/null +++ b/man/XScreenSaverQueryExtension.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xss.__libmansuffix__ diff --git a/man/XScreenSaverQueryInfo.man b/man/XScreenSaverQueryInfo.man new file mode 100644 index 0000000..0b94d09 --- /dev/null +++ b/man/XScreenSaverQueryInfo.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xss.__libmansuffix__ diff --git a/man/XScreenSaverQueryVersion.man b/man/XScreenSaverQueryVersion.man new file mode 100644 index 0000000..0b94d09 --- /dev/null +++ b/man/XScreenSaverQueryVersion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xss.__libmansuffix__ diff --git a/man/XScreenSaverRegister.man b/man/XScreenSaverRegister.man new file mode 100644 index 0000000..0b94d09 --- /dev/null +++ b/man/XScreenSaverRegister.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xss.__libmansuffix__ diff --git a/man/XScreenSaverSelectInput.man b/man/XScreenSaverSelectInput.man new file mode 100644 index 0000000..0b94d09 --- /dev/null +++ b/man/XScreenSaverSelectInput.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xss.__libmansuffix__ diff --git a/man/XScreenSaverSetAttributes.man b/man/XScreenSaverSetAttributes.man new file mode 100644 index 0000000..0b94d09 --- /dev/null +++ b/man/XScreenSaverSetAttributes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xss.__libmansuffix__ diff --git a/man/XScreenSaverSuspend.man b/man/XScreenSaverSuspend.man new file mode 100644 index 0000000..0b94d09 --- /dev/null +++ b/man/XScreenSaverSuspend.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xss.__libmansuffix__ diff --git a/man/XScreenSaverUnregister.man b/man/XScreenSaverUnregister.man new file mode 100644 index 0000000..0b94d09 --- /dev/null +++ b/man/XScreenSaverUnregister.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xss.__libmansuffix__ diff --git a/man/XScreenSaverUnsetAttributes.man b/man/XScreenSaverUnsetAttributes.man new file mode 100644 index 0000000..0b94d09 --- /dev/null +++ b/man/XScreenSaverUnsetAttributes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xss.__libmansuffix__ diff --git a/man/Xss.man b/man/Xss.man new file mode 100644 index 0000000..91f0ccf --- /dev/null +++ b/man/Xss.man @@ -0,0 +1,363 @@ +.\" +.\" Copyright (C) 2003 The XFree86 Project, Inc. All Rights Reserved. +.\" +.\" Permission is hereby granted, free of charge, to any person obtaining +.\" a copy of this software and associated documentation files (the +.\" "Software"), to deal in the Software without restriction, including +.\" without limitation the rights to use, copy, modify, merge, publish, +.\" distribute, sublicense, and/or sell copies of the Software, and to +.\" permit persons to whom the Software is furnished to do so, subject to +.\" the following conditions: +.\" +.\" The above copyright notice and this permission notice 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 NON-INFRINGEMENT. +.\" 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. +.\" +.TH XScreenSaver __libmansuffix__ __vendorversion__ +.SH NAME +XScreenSaver \- X11 Screen Saver extension client library +.SH SYNOPSIS +.B #include +.PP +.nf +.ta .5i 2i +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 eventMask; /\(** events */ +.br +} XScreenSaverInfo; + +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 */ +.br +} XScreenSaverNotifyEvent; +.fi +.HP +Bool XScreenSaverQueryExtension(Display *\fIdpy\fP, +int *\fIevent_base_return\fP, int *\fIerror_base_return\fP\^); +.HP +Status XScreenSaverQueryVersion(Display *\fIdpy\fP, +int *\fImajor_version_return\fP, int *\fIminor_version_return\fP\^); +.HP +XScreenSaverInfo *XScreenSaverAllocInfo(\^void\^); +.HP +Status XScreenSaverQueryInfo(\^Display *\fIdpy\fP, Drawable \fIdrawable\fP, +XScreenSaverInfo *\fIsaver_info\fP\^); +.HP +void XScreenSaverSelectInput(Display *\fIdpy\fP, Drawable \fIdrawable\fP, +unsigned long \fImask\fp\^); +.HP +void XScreenSaverSetAttributes(Display *\fIdpy\fP, Drawable \fIdrawable\fP, +int \fIx\fP, +int \fIy\fP, +unsigned int \fIwidth\fP, +unsigned int \fIheight\fP, +unsigned int \fIborder_width\fP, +int \fIdepth\fP, +unsigned int \fIclass\fP, +Visual *\fIvisual\fP, +unsigned long \fIvaluemask\fP, +XSetWindowAttributes *\fIattributes\fP\^); +.HP +void XScreenSaverUnsetAttributes(Display *\fIdpy\fP, +Drawable \fIdrawable\fP\^); +.HP +void XScreenSaverSaverRegister(Display *\fIdpy\fP, int \fIscreen\fP, +XID \fIxid\fP, Atom \fItype\fP\^); +.HP +Status XScreenSaverUnregister(Display *\fIdpy\fP, int \fIscreen\fP\^); +.HP +Status XScreenSaverGetRegistered(Display *\fIdpy\fP, int \fIscreen\fP, +XID *\fIxid\fP, Atom *\fItype\fP\^); +.HP +void XScreenSaverSuspend(Display *\fIdpy\fP, Bool \fIsuspend\fP\^); +.PP +.SH DESCRIPTION +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. +.PP +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. +.SS Assumptions +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 \fIoverride-redirect\fP 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 +\fBQueryTree\fP requests on the root window, so it is typically not +visible to other clients. +.PP +.B XScreenSaverQueryExtension +returns +.B True +if the +.I XScreenSaver +extension is available on the given display. +A client must call +.B XScreenSaverQueryExtension +before calling any other XScreenSaver function in order +to negotiate a compatible protocol version; otherwise the client will +get undefined behavior (XScreenSaver may or may not work). +.PP +If the extension is supported, the event number for +.I ScreenSaverNotify +events is returned in the value pointed to by \fIevent_base\fP. +Since no additional errors are defined by this extension, the results +of \fIerror_base\fP are not defined. +.PP +.B XScreenSaverQueryVersion +returns +.B True +if the request succeeded; the values of the major and minor protocol +versions supported by the server are returned in +.I major_version_return +and +.I minor_version_return . +.PP +.B XScreenSaverAllocInfo +allocates and returns an \fBXScreenSaverInfo\fP structure +for use in calls to \fBXScreenSaverQueryInfo\fP. +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 \fIXFree\fP. +.PP +.B XScreenSaverQueryInfo +returns information about the current state of the +screen server in \fIsaver_info\fP and a non-zero value is +returned. +If the extension is not supported, \fIsaver_info\fP is not changed and 0 +is returned. +.PP +The \fIstate\fP field specifies whether or not the screen saver is currently +active and how the \fItil-or-since\fP value should be interpreted: +.TP 4 +.I Off +The screen is not currently being saved; \fItil-or-since\fP +specifies the number of milliseconds until the screen saver is expected to +activate. +.TP 4 +.I On +The screen is currently being saved; \fItil-or-since\fP specifies +the number of milliseconds since the screen saver activated. +.TP 4 +.I Disabled +The screen saver is currently disabled; \fItil-or-since\fP is zero. +.PP +The \fIkind\fP field specifies the mechanism that either is currently being +used or would have been were the screen being saved: +.TP 4 +.I Blanked +The video signal to the display monitor was disabled. +.TP 4 +.I Internal +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. +.TP 4 +.I External +The screen saver window was mapped with attributes set by a +client using the \fBScreenSaverSetAttributes\fP request. +.PP +The \fIidle\fP field specifies the number of milliseconds since the last +input was received from the user on any of the input devices. +.br +The \fIevent-mask\fP field specifies which, if any, screen saver +events this client has requested using \fBScreenSaverSelectInput\fP. +.PP +.B XScreenSaverSelectInput +asks that events related to +the screen saver be generated for this client. +If +no bits are set in \fIevent-mask\fP, then no events will be generated. +Otherwise, any combination of the following bits may be set: +.TP 8 +.B ScreenSaverNotify +If this bit is set, \fBScreenSaverNotify\fP events are generated whenever +the screen saver is activated or deactivated. +.TP 8 +.B ScreenSaverCycle +If this bit is set, \fBScreenSaverNotify\fP events are generated whenever +the screen saver cycle interval passes. +.PP +.B XScreenSaverSetAttributes +sets the attributes to be used +the next time the external screen saver is activated. +If another client currently has the attributes set, +a BadAccess error is generated and the request is ignored. +.br +Otherwise, the specified window attributes are checked as if +they were used in a core \fBCreateWindow\fP request whose +parent is the root. +The \fIoverride-redirect\fP field is ignored as it is implicitly set +to True. +If the window attributes result in an error according to the rules for +\fBCreateWindow\fP, the request is ignored. +.br +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 +\fIbackground-pixmap\fP or \fIcursor\fP attributes may be +freed immediately. +The server is free to copy the \fIbackground-pixmap\fP or \fIcursor\fP +resources or to use them in place; therefore, the effect of changing +the contents of those resources is undefined. +If the specified \fIcolormap\fP 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. +.br +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. +.br +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 \fBForceScreenSaver\fP request with +a value of Reset, or any request that would cause the window to be +unmapped. +.br +If the screen saver activates while the server is grabbed by another +client, the internal saver mechanism is used. +The \fBForceScreenSaver\fP request may be used with a value of Active +to deactivate the internal saver and activate the external saver. +.br +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. +.br +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. +.br +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). +.PP +.B XScreenSaverUnsetAttributes +instructs the server to discard +any previous screen saver window attributes set by this client. +.PP +.B XScreenSaverRegister +stores the given \fIXID\fP in the \fB_SCREEN_SAVER_ID\fP +property (of the given \fItype\fP) on the +root window of the specified \fIscreen\fP. +It returns zero if an error is encountered and the property is not +changed, otherwise it returns non-zero. +.PP +.B XScreenSaverUnregister +removes any \fB_SCREEN_SAVER_ID\fP from the +root window of the specified \fIscreen\fP. +It returns zero if an error is encountered and the property is +changed, otherwise it returns non-zero. +.PP +.B XScreenSaverGetRegistered +returns the \fIXID\fP and \fItype\fP stored in +the \fB_SCREEN_SAVER_ID\fP property on the +root window of the specified \fIscreen\fP. +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. +.PP +.B XScreenSaverSuspend +temporarily suspends the screensaver and DPMS timer if \fIsuspend\fP +is 'True', and restarts the timer if \fIsuspend\fP is 'False'. +.br +This function should be used by applications that don't want the +screensaver or DPMS to become activated while they're for example in +the process of playing a media sequence, or are otherwise continuously +presenting visual information to the user while in a non-interactive +state. This function is not intended to be called by an external +screensaver application. +.br +If \fBXScreenSaverSuspend\fP is called multiple times with \fIsuspend\fP +set to 'True', it must be called an equal number of times with +\fIsuspend\fP set to 'False' in order for the screensaver timer to be +restarted. This request has no affect if a client tries to resume the +screensaver without first having suspended it. +\fBXScreenSaverSuspend\fP can thus not be used by one client to resume +the screensaver if it's been suspended by another client. +.br +If a client that has suspended the screensaver becomes disconnected from +the X server, the screensaver timer will automatically be restarted, unless +it's still suspended by another client. Suspending the screensaver timer +doesn't prevent the screensaver from being forceably activated with the +\fBForceScreenSaver\fP request, or a DPMS mode from being set with the +\fBDPMSForceLevel\fP request. +.br +\fBXScreenSaverSuspend\fP also doesn't deactivate the screensaver or DPMS +if either is active at the time the request to suspend them is received by +the X server. But once they've been deactivated, they won't automatically +be activated again, until the client has canceled the suspension. +.SH "ERRORS" +.B XScreenSaverSelectInput, +.B XScreenSaverQueryInfo, +.B XScreenSaverSetAttributes +and +.B XScreenSaverUnsetAttributes +will generate a +.I BadDrawable +error if \fIdrawable\fP is not a valid drawable identifier. +If any undefined bits are set in \fIevent-mask\fP, +a BadValue error is generated by +.B XScreenSaverSelectInput . +.PP +.SH AVAILABILITY +\fBXScreenSaverSuspend\fP is available in version 1.1 and later versions +of the X Screen Saver Extension. Version 1.1 was first released with +X11R7.1. +.PP +.SH "SEE ALSO" +X(__miscmansuffix__) +.SH AUTHORS +Jim Fulton and Keith Packard. +.SH STABILITY +This API is considered as experimental. +The Xss library major revision may be incremented whenever +incompatible changes are done to the API without notice. +Use with care. diff --git a/packaging/libXScrnSaver.spec b/packaging/libXScrnSaver.spec new file mode 100644 index 0000000..e15883d --- /dev/null +++ b/packaging/libXScrnSaver.spec @@ -0,0 +1,60 @@ +Summary: X.Org X11 libXss runtime library +Name: libXScrnSaver +Version: 1.2.2 +Release: 1 +License: MIT +Group: System Environment/Libraries +URL: http://www.x.org + +Source0: %{name}-%{version}.tar.gz + +BuildRequires: pkgconfig +BuildRequires: pkgconfig(xorg-macros) +BuildRequires: pkgconfig(xproto) +BuildRequires: pkgconfig(scrnsaverproto) +BuildRequires: libX11-devel +BuildRequires: libXext-devel + +%description +X.Org X11 libXss runtime library + +%package devel +Summary: X.Org X11 libXScrnSaver development package +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} +Provides: libxscrnsaver-devel + +%description devel +X.Org X11 libXss development package + +%prep +%setup -q + +%build +# FIXME: XScrnSaver.c:429: warning: dereferencing type-punned pointer will break strict-aliasing rules +export CFLAGS="${CFLAGS} $RPM_OPT_FLAGS -fno-strict-aliasing" +%reconfigure --disable-static \ + LDFLAGS="${LDFLAGS} -Wl,--hash-style=both -Wl,--as-needed" +make %{?jobs:-j%jobs} + +%install +make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p" +find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';' + +%remove_docs + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%files +%defattr(-,root,root,-) +%doc COPYING README ChangeLog +%{_libdir}/libXss.so.1 +%{_libdir}/libXss.so.1.0.0 + +%files devel +%defattr(-,root,root,-) +%{_libdir}/libXss.so +%{_libdir}/pkgconfig/xscrnsaver.pc +#%{_mandir}/man3/*.3* +%{_includedir}/X11/extensions/scrnsaver.h diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..aa923b1 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,35 @@ +AM_CFLAGS = -I$(top_srcdir)/include \ + -I$(top_srcdir)/include/X11 \ + -I$(top_srcdir)/include/X11/extensions \ + $(XSCRNSAVER_CFLAGS) \ + $(MALLOC_ZERO_CFLAGS) \ + $(CWARNFLAGS) + +lib_LTLIBRARIES = libXss.la + +libXss_la_SOURCES = \ + XScrnSaver.c + +libXss_la_LIBADD = $(XSCRNSAVER_LIBS) + +libXss_la_LDFLAGS = -version-info 1:0:0 -no-undefined + +libXScrnSaverincludedir = $(includedir)/X11/extensions +libXScrnSaverinclude_HEADERS = $(top_srcdir)/include/X11/extensions/scrnsaver.h + +if LINT +ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) + +lint: + $(LINT) $(ALL_LINT_FLAGS) $(libXss_la_SOURCES) +endif LINT + +if MAKE_LINT_LIB +lintlibdir = $(libdir) + +lintlib_DATA = $(LINTLIB) + +$(LINTLIB): $(libXss_la_SOURCES) + $(LINT) -y -oXss -x $(ALL_LINT_FLAGS) $(libXss_la_SOURCES) +endif MAKE_LINT_LIB diff --git a/src/XScrnSaver.c b/src/XScrnSaver.c new file mode 100644 index 0000000..2a89246 --- /dev/null +++ b/src/XScrnSaver.c @@ -0,0 +1,470 @@ +/* + * +Copyright (c) 1992 X Consortium + +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 +X CONSORTIUM 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 X Consortium 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 X Consortium. + * + * Author: Keith Packard, MIT X Consortium + */ + +#include +#include +#include +#include +#include +#include + + +static XExtensionInfo _screen_saver_info_data; +static XExtensionInfo *screen_saver_info = &_screen_saver_info_data; +static const char *screen_saver_extension_name = ScreenSaverName; + +#define ScreenSaverCheckExtension(dpy,i,val) \ + XextCheckExtension (dpy, i, screen_saver_extension_name, val) +#define ScreenSaverSimpleCheckExtension(dpy,i) \ + XextSimpleCheckExtension (dpy, i, screen_saver_extension_name) + +static int close_display( + Display * /* dpy */, + XExtCodes * /* codes */ +); + +static Bool wire_to_event( + Display * /* dpy */, + XEvent * /* re */, + xEvent * /* event */ +); + +static Status event_to_wire( + Display * /* dpy */, + XEvent * /* re */, + xEvent * /* event */ +); + +static /* const */ XExtensionHooks screen_saver_extension_hooks = { + NULL, /* create_gc */ + NULL, /* copy_gc */ + NULL, /* flush_gc */ + NULL, /* free_gc */ + NULL, /* create_font */ + NULL, /* free_font */ + close_display, /* close_display */ + wire_to_event, /* wire_to_event */ + event_to_wire, /* event_to_wire */ + NULL, /* error */ + NULL, /* error_string */ +}; + +static XEXT_GENERATE_FIND_DISPLAY (find_display, screen_saver_info, + screen_saver_extension_name, + &screen_saver_extension_hooks, + ScreenSaverNumberEvents, NULL) + +static XEXT_GENERATE_CLOSE_DISPLAY (close_display, screen_saver_info) + + +static Bool wire_to_event ( + Display *dpy, + XEvent *re, + xEvent *event) +{ + XExtDisplayInfo *info = find_display (dpy); + XScreenSaverNotifyEvent *se; + xScreenSaverNotifyEvent *sevent; + + ScreenSaverCheckExtension (dpy, info, False); + + switch ((event->u.u.type & 0x7f) - info->codes->first_event) { + case ScreenSaverNotify: + se = (XScreenSaverNotifyEvent *) re; + sevent = (xScreenSaverNotifyEvent *) event; + se->type = sevent->type & 0x7f; + se->serial = _XSetLastRequestRead(dpy,(xGenericReply *) event); + se->send_event = (sevent->type & 0x80) != 0; + se->display = dpy; + se->window = sevent->window; + se->window = sevent->root; + se->state = sevent->state; + se->kind = sevent->kind; + se->forced = True; + if (sevent->forced == xFalse) + se->forced = False; + se->time = sevent->timestamp; + return True; + } + return False; +} + +static Status event_to_wire ( + Display *dpy, + XEvent *re, + xEvent *event) +{ + XExtDisplayInfo *info = find_display (dpy); + XScreenSaverNotifyEvent *se; + xScreenSaverNotifyEvent *sevent; + + ScreenSaverCheckExtension (dpy, info, 0); + + switch ((re->type & 0x7f) - info->codes->first_event) { + case ScreenSaverNotify: + se = (XScreenSaverNotifyEvent *) re; + sevent = (xScreenSaverNotifyEvent *) event; + sevent->type = se->type | (se->send_event ? 0x80 : 0); + sevent->sequenceNumber = se->serial & 0xffff; + sevent->root = se->root; + sevent->window = se->window; + sevent->state = se->state; + sevent->kind = se->kind; + sevent->forced = xFalse; + if (se->forced == True) + sevent->forced = xTrue; + sevent->timestamp = se->time; + return 1; + } + return 0; +} + +/**************************************************************************** + * * + * ScreenSaver public interfaces * + * * + ****************************************************************************/ + +Bool XScreenSaverQueryExtension ( + Display *dpy, + int *event_base_return, + int *error_base_return) +{ + XExtDisplayInfo *info = find_display (dpy); + + if (XextHasExtension(info)) { + *event_base_return = info->codes->first_event; + *error_base_return = info->codes->first_error; + return True; + } else { + return False; + } +} + + +Status XScreenSaverQueryVersion( + Display *dpy, + int *major_version_return, + int *minor_version_return) +{ + XExtDisplayInfo *info = find_display (dpy); + xScreenSaverQueryVersionReply rep; + register xScreenSaverQueryVersionReq *req; + + ScreenSaverCheckExtension (dpy, info, 0); + + LockDisplay (dpy); + GetReq (ScreenSaverQueryVersion, req); + req->reqType = info->codes->major_opcode; + req->saverReqType = X_ScreenSaverQueryVersion; + req->clientMajor = ScreenSaverMajorVersion; + req->clientMinor = ScreenSaverMinorVersion; + if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { + UnlockDisplay (dpy); + SyncHandle (); + return 0; + } + *major_version_return = rep.majorVersion; + *minor_version_return = rep.minorVersion; + UnlockDisplay (dpy); + SyncHandle (); + return 1; +} + +XScreenSaverInfo *XScreenSaverAllocInfo (void) +{ + return (XScreenSaverInfo *) Xmalloc (sizeof (XScreenSaverInfo)); +} + +Status XScreenSaverQueryInfo ( + Display *dpy, + Drawable drawable, + XScreenSaverInfo *saver_info) +{ + XExtDisplayInfo *info = find_display (dpy); + xScreenSaverQueryInfoReply rep; + register xScreenSaverQueryInfoReq *req; + + ScreenSaverCheckExtension (dpy, info, 0); + + LockDisplay (dpy); + GetReq (ScreenSaverQueryInfo, req); + req->reqType = info->codes->major_opcode; + req->saverReqType = X_ScreenSaverQueryInfo; + req->drawable = drawable; + if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { + UnlockDisplay (dpy); + SyncHandle (); + return 0; + } + UnlockDisplay (dpy); + SyncHandle (); + saver_info->window = rep.window; + saver_info->state = rep.state; + saver_info->kind = rep.kind; + saver_info->til_or_since = rep.tilOrSince; + saver_info->idle = rep.idle; + saver_info->eventMask = rep.eventMask; + return 1; +} + +void XScreenSaverSelectInput ( + register Display *dpy, + Drawable drawable, + unsigned long mask) +{ + XExtDisplayInfo *info = find_display (dpy); + register xScreenSaverSelectInputReq *req; + + ScreenSaverSimpleCheckExtension (dpy, info); + + LockDisplay (dpy); + GetReq (ScreenSaverSelectInput, req); + req->reqType = info->codes->major_opcode; + req->saverReqType = X_ScreenSaverSelectInput; + req->drawable = drawable; + req->eventMask = mask; + UnlockDisplay (dpy); + SyncHandle (); +} + +static void +XScreenSaverProcessWindowAttributes ( + register Display *dpy, + xChangeWindowAttributesReq *req, + register unsigned long valuemask, + register XSetWindowAttributes *attributes) + { + unsigned long values[32]; + register unsigned long *value = values; + unsigned int nvalues; + + if (valuemask & CWBackPixmap) + *value++ = attributes->background_pixmap; + + if (valuemask & CWBackPixel) + *value++ = attributes->background_pixel; + + if (valuemask & CWBorderPixmap) + *value++ = attributes->border_pixmap; + + if (valuemask & CWBorderPixel) + *value++ = attributes->border_pixel; + + if (valuemask & CWBitGravity) + *value++ = attributes->bit_gravity; + + if (valuemask & CWWinGravity) + *value++ = attributes->win_gravity; + + if (valuemask & CWBackingStore) + *value++ = attributes->backing_store; + + if (valuemask & CWBackingPlanes) + *value++ = attributes->backing_planes; + + if (valuemask & CWBackingPixel) + *value++ = attributes->backing_pixel; + + if (valuemask & CWOverrideRedirect) + *value++ = attributes->override_redirect; + + if (valuemask & CWSaveUnder) + *value++ = attributes->save_under; + + if (valuemask & CWEventMask) + *value++ = attributes->event_mask; + + if (valuemask & CWDontPropagate) + *value++ = attributes->do_not_propagate_mask; + + if (valuemask & CWColormap) + *value++ = attributes->colormap; + + if (valuemask & CWCursor) + *value++ = attributes->cursor; + + req->length += (nvalues = value - values); + + nvalues <<= 2; /* watch out for macros... */ + Data32 (dpy, (long *) values, (long)nvalues); + + } + +void XScreenSaverSetAttributes ( + Display *dpy, + Drawable drawable, + int x, + int y, + unsigned int width, + unsigned int height, + unsigned int border_width, + int depth, + unsigned int class, + Visual *visual, + unsigned long valuemask, + XSetWindowAttributes *attributes) +{ + XExtDisplayInfo *info = find_display (dpy); + register xScreenSaverSetAttributesReq *req; + + ScreenSaverSimpleCheckExtension (dpy, info); + + LockDisplay (dpy); + GetReq (ScreenSaverSetAttributes, req); + req->reqType = info->codes->major_opcode; + req->saverReqType = X_ScreenSaverSetAttributes; + req->drawable = drawable; + req->x = x; + req->y = y; + req->width = width; + req->height = height; + req->borderWidth = border_width; + req->c_class = class; + req->depth = depth; + if (visual == (Visual *)CopyFromParent) + req->visualID = CopyFromParent; + else + req->visualID = visual->visualid; + /* abuse an Xlib internal interface - is this legal for us? */ + if ((req->mask = valuemask)) + XScreenSaverProcessWindowAttributes (dpy, + (xChangeWindowAttributesReq *)req, + valuemask, attributes); + UnlockDisplay (dpy); + SyncHandle (); +} + + +void XScreenSaverUnsetAttributes ( + register Display *dpy, + Drawable drawable) +{ + XExtDisplayInfo *info = find_display (dpy); + register xScreenSaverUnsetAttributesReq *req; + + ScreenSaverSimpleCheckExtension (dpy, info); + + LockDisplay (dpy); + GetReq (ScreenSaverUnsetAttributes, req); + req->reqType = info->codes->major_opcode; + req->saverReqType = X_ScreenSaverUnsetAttributes; + req->drawable = drawable; + UnlockDisplay (dpy); + SyncHandle (); +} + + +Status XScreenSaverRegister ( + Display *dpy, + int screen, + XID xid, + Atom type) +{ + Atom prop; + unsigned long ul; + + prop = XInternAtom (dpy, ScreenSaverPropertyName, False); + if (!prop) + return 0; + + ul = (unsigned long) xid; + XChangeProperty (dpy, RootWindow(dpy,screen), prop, type, 32, + PropModeReplace, (unsigned char *) &ul, 1); + return 1; +} + + + +Status XScreenSaverUnregister ( + Display *dpy, + int screen) +{ + Atom prop; + + prop = XInternAtom (dpy, ScreenSaverPropertyName, False); + if (!prop) + return 0; + + XDeleteProperty (dpy, RootWindow(dpy,screen), prop); + return 1; +} + + + +Status XScreenSaverGetRegistered ( + Display *dpy, + int screen, + XID *xid, + Atom *type) +{ + Atom actual_type = None; + int actual_format; + unsigned long nitems, bytesafter; + unsigned long *ulp = (unsigned long *) 0; + Atom prop; + int retval = 0; + + prop = XInternAtom (dpy, ScreenSaverPropertyName, False); + if (!prop) + return retval; + + if (XGetWindowProperty (dpy, RootWindow(dpy,screen), prop, 0L, 1L, False, + AnyPropertyType, &actual_type, &actual_format, + &nitems, &bytesafter, (unsigned char **) &ulp) + != Success) + return retval; + + if (ulp) { + if (actual_format == 32) { + *xid = (XID) ulp[0]; + *type = actual_type; + retval = 1; + } + XFree ((char *) ulp); + } + return retval; +} + +void +XScreenSaverSuspend (Display *dpy, Bool suspend) +{ + XExtDisplayInfo *info = find_display (dpy); + xScreenSaverSuspendReq *req; + + ScreenSaverSimpleCheckExtension (dpy, info); + + LockDisplay (dpy); + GetReq (ScreenSaverSuspend, req); + req->reqType = info->codes->major_opcode; + req->saverReqType = X_ScreenSaverSuspend; + req->suspend = suspend; + UnlockDisplay (dpy); + SyncHandle (); +} + diff --git a/xscrnsaver.pc.in b/xscrnsaver.pc.in new file mode 100644 index 0000000..67e0f63 --- /dev/null +++ b/xscrnsaver.pc.in @@ -0,0 +1,12 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: XScrnSaver +Description: The XScrnSaver Library +Version: @PACKAGE_VERSION@ +Requires: scrnsaverproto +Requires.private: x11 xext +Cflags: -I${includedir} +Libs: -L${libdir} -lXss -- 2.7.4