From 585e1a6717d1dd9b90fbb53acaaae82106354d33 Mon Sep 17 00:00:00 2001 From: Zygo Blaxell Date: Mon, 2 Mar 2009 00:42:47 -0500 Subject: [PATCH] http://packetstormsecurity.org/UNIX/admin/xscreensaver-3.32.tar.gz -rw-r--r-- 1 zblaxell zblaxell 1602500 Apr 15 2001 xscreensaver-3.32.tar.gz 99f7828d302d8d93cb1244056f4ea36280919046 xscreensaver-3.32.tar.gz --- Makefile.in | 5 +- README | 15 + config.h.in | 14 +- configure | 1081 +++++++------- configure.in | 108 +- driver/Makefile.in | 146 +- driver/XScreenSaver.ad.in | 8 +- driver/XScreenSaver_ad.h | 4 + driver/demo-Gtk-stubs.h | 8 +- driver/demo-Gtk-widgets.c | 696 +++++---- driver/demo-Gtk.c | 219 +++ driver/demo-Xm.c | 4 + driver/lock.c | 2 +- driver/prefs.c | 35 +- driver/prefs.h | 5 + driver/splash.c | 2 +- driver/test-fade.c | 120 ++ driver/xscreensaver-command.man | 2 +- driver/xscreensaver-demo.glade | 1908 ++++++++++++++---------- driver/xscreensaver-demo.man | 42 +- driver/xscreensaver-getimage-file | 203 +++ driver/xscreensaver-getimage-file.man | 49 + driver/xscreensaver-getimage-video | 161 ++ driver/xscreensaver-getimage-video.man | 51 + driver/xscreensaver-getimage.c | 377 +++++ driver/xscreensaver-getimage.man | 68 + driver/xscreensaver.c | 4 + driver/xscreensaver.man | 2 +- hacks/Makefile.in | 848 +---------- hacks/blitspin.man | 44 +- hacks/bumps.h | 3 + hacks/bumps.man | 69 + hacks/decayscreen.man | 50 +- hacks/distort.man | 26 +- hacks/glx/Makefile.in | 324 +--- hacks/glx/atlantis.c | 137 +- hacks/glx/atlantis.h | 2 + hacks/glx/dangerball.c | 9 - hacks/glx/molecule.c | 87 +- hacks/images/sea-texture.xpm | 199 +++ hacks/jigsaw.c | 3 + hacks/jigsaw.man | 42 +- hacks/maze.c | 2 +- hacks/rotzoomer.man | 19 +- hacks/screenhack.c | 1 + hacks/slidescreen.c | 2 - hacks/slidescreen.man | 44 +- hacks/slip.man | 45 +- hacks/spotlight.man | 21 +- hacks/vidwhacker | 773 +++++----- hacks/webcollage | 2 +- hacks/xteevee.c | 129 +- hacks/xteevee.man | 13 +- hacks/zoom.man | 23 +- utils/Makefile.in | 31 +- utils/colorbars.c | 133 ++ utils/{sgivideo.h => colorbars.h} | 12 +- utils/compile_axp.com | 3 +- utils/compile_decc.com | 3 +- utils/fade.c | 271 +++- utils/grabclient.c | 140 ++ utils/grabscreen.c | 309 ++-- utils/logo.c | 34 +- utils/resources.h | 1 + utils/sgivideo.c | 508 ------- utils/version.h | 2 +- xscreensaver.lsm | 16 +- xscreensaver.spec | 2 +- 68 files changed, 5419 insertions(+), 4302 deletions(-) create mode 100644 driver/test-fade.c create mode 100755 driver/xscreensaver-getimage-file create mode 100644 driver/xscreensaver-getimage-file.man create mode 100755 driver/xscreensaver-getimage-video create mode 100644 driver/xscreensaver-getimage-video.man create mode 100644 driver/xscreensaver-getimage.c create mode 100644 driver/xscreensaver-getimage.man create mode 100644 hacks/bumps.man create mode 100644 hacks/images/sea-texture.xpm create mode 100644 utils/colorbars.c rename utils/{sgivideo.h => colorbars.h} (64%) create mode 100644 utils/grabclient.c delete mode 100644 utils/sgivideo.c diff --git a/Makefile.in b/Makefile.in index d33dc24b..6fe2ba0e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -175,8 +175,9 @@ rpm:: mkdir $$DIR ; \ ( cd $$DIR; mkdir BUILD RPMS RPMS/$$ARCH SOURCES SPECS SRPMS ) ; \ cp -p xscreensaver-$$VERS.tar.gz $$DIR/SOURCES/ ; \ - rpm -vba --define "_topdir $$DIR" \ - --define "USE_GL yes" xscreensaver.spec ; \ + rpm --define "_topdir $$DIR" \ + --define "USE_GL yes" \ + -v -ba xscreensaver.spec ; \ echo '' ; \ echo 'RPM build complete' ; \ echo '' ; \ diff --git a/README b/README index 9bcbcd6f..cedca8ea 100644 --- a/README +++ b/README @@ -71,6 +71,21 @@ http://www.jwz.org/xscreensaver/. ============ +Changes since 3.31: * The image-manipulating hacks (`slidescreen', etc.) can + now operate on randomly chosen image files from disk, + or on frames captured from the system's video input, + instead of (or in addition to) manipulating images of + the desktop. + * Rewrote `vidwhacker' to use the new image-grabbing + mechanism. + * Made fading work on TrueColor XFree86 4.x systems. + * Fixed a subtle rendering bug in `atlantis' (the fish + were inside out!) + * Made `atlantis' have a texture simulating light + reflections from the surface of the ocean. + * Fixed up label placement in `molecule'. + * Better color bars in `xteevee'. + * Made `install-strip' not try to strip scripts. Changes since 3.30: * Put in more sensible defaults for DPMS, and updated the documentation to reflect the fact that all your DPMS settings are now belong to xscreensaver. diff --git a/config.h.in b/config.h.in index 6cfb67a0..ed31807e 100644 --- a/config.h.in +++ b/config.h.in @@ -19,11 +19,6 @@ */ #undef HAVE_READ_DISPLAY_EXTENSION -/* Define this if you have the Iris Video Library (dmedia/vl.h on SGI.) - A few of the screenhacks will take advantage of this if it's available. - */ -#undef HAVE_SGI_VIDEO - /* Define this if you have the XHPDisableReset function (an HP only thing.) */ #undef HAVE_XHPDISABLERESET @@ -104,6 +99,15 @@ */ #undef HAVE_XF86VMODE +/* Define this if you have the functions XF86VidModeGetGamma() and + * XF86VidModeSetGamma(), which allow clients to change the gamma + * response of the monitor. This is an XFree86 4.x thing, and probably + * doesn't exist elsewhere. (It's available if the file + * /usr/include/X11/extensions/xf86vmode.h exists and has stuff about + * gamma in it.) + */ +#undef HAVE_XF86VMODE_GAMMA + /* Define this if you have a Linux-like /proc/interrupts file which can be * examined to determine when keyboard activity has occurred. */ diff --git a/configure b/configure index 37b9ac87..24e782b9 100755 --- a/configure +++ b/configure @@ -50,6 +50,8 @@ ac_help="$ac_help --with-dpms-ext Include support for the DPMS extension." ac_help="$ac_help --with-xf86vmode-ext Include support for XFree86 virtual screens." +ac_help="$ac_help + --with-xf86gamma-ext Include support for XFree86 gamma fading." ac_help="$ac_help --with-proc-interrupts Include support for consulting the /proc/interrupts file to notice keyboard activity." @@ -92,8 +94,6 @@ ac_help="$ac_help ac_help="$ac_help --with-readdisplay Include support for the XReadDisplay extension." ac_help="$ac_help - --with-sgivideo Include support for SGI's Iris Video Library." -ac_help="$ac_help --with-zippy=PROGRAM Some demos are able to run an external program and display its text; this names the program to use by @@ -1073,7 +1073,7 @@ echo "configure:1076: checking how to request ANSI compilation" >&5 ;; *-dec-* ) - echo "$ac_t""DEC: adding -std1" 1>&6 + echo "$ac_t""DEC: adding -std1 -ieee" 1>&6 CC="$CC -std1" ;; @@ -1526,14 +1526,21 @@ else fi +# By default, autoconf sets INSTALL_SCRIPT to '${INSTALL_PROGRAM}'. +# That's wrong: it should be set to '${INSTALL}', so that one can +# implement the "install-strip" target properly (strip executables, +# but do not try to strip scripts.) +# +INSTALL_SCRIPT='${INSTALL}' + # random libc stuff echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1543: checking for ANSI C header files" >&5 +echo "configure:1550: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1541,7 +1548,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1556: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1563: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1558,7 +1565,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -1576,7 +1583,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -1597,7 +1604,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -1608,7 +1615,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:1623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1630: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -1635,17 +1642,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1650: checking for $ac_hdr" >&5 +echo "configure:1657: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1660: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1667: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1672,12 +1679,12 @@ fi done echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:1687: checking for mode_t" >&5 +echo "configure:1694: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -1705,12 +1712,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:1720: checking for pid_t" >&5 +echo "configure:1727: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -1738,12 +1745,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:1753: checking for size_t" >&5 +echo "configure:1760: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -1771,12 +1778,12 @@ EOF fi echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:1786: checking return type of signal handlers" >&5 +echo "configure:1793: checking return type of signal handlers" >&5 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1793,7 +1800,7 @@ int main() { int i; ; return 0; } EOF -if { (eval echo configure:1808: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1815: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -1812,12 +1819,12 @@ EOF echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:1827: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:1834: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1826,7 +1833,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:1841: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1848: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -1847,12 +1854,12 @@ EOF fi echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:1862: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:1869: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1868,7 +1875,7 @@ wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:1883: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1890: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -1893,12 +1900,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 -echo "configure:1908: checking for $ac_hdr that defines DIR" >&5 +echo "configure:1915: checking for $ac_hdr that defines DIR" >&5 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_hdr> @@ -1906,7 +1913,7 @@ int main() { DIR *dirp = 0; ; return 0; } EOF -if { (eval echo configure:1921: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1928: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else @@ -1931,7 +1938,7 @@ done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 -echo "configure:1946: checking for opendir in -ldir" >&5 +echo "configure:1953: checking for opendir in -ldir" >&5 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1939,7 +1946,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldir $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1972,7 +1979,7 @@ fi else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:1987: checking for opendir in -lx" >&5 +echo "configure:1994: checking for opendir in -lx" >&5 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1980,7 +1987,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2014,12 +2021,12 @@ fi fi echo $ac_n "checking how to call gettimeofday""... $ac_c" 1>&6 -echo "configure:2029: checking how to call gettimeofday" >&5 +echo "configure:2036: checking how to call gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_gettimeofday_args'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2028,7 +2035,7 @@ struct timeval tv; struct timezone tzp; gettimeofday(&tv, &tzp); ; return 0; } EOF -if { (eval echo configure:2043: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2050: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_gettimeofday_args=2 else @@ -2036,7 +2043,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < #include @@ -2044,7 +2051,7 @@ int main() { struct timeval tv; gettimeofday(&tv); ; return 0; } EOF -if { (eval echo configure:2059: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2066: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_gettimeofday_args=1 else @@ -2083,12 +2090,12 @@ EOF for ac_func in select fcntl uname nice setpriority getcwd getwd putenv do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2098: checking for $ac_func" >&5 +echo "configure:2105: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2139,12 +2146,12 @@ done for ac_func in sigaction syslog realpath do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2154: checking for $ac_func" >&5 +echo "configure:2161: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2192,12 +2199,12 @@ fi done echo $ac_n "checking for struct icmp""... $ac_c" 1>&6 -echo "configure:2207: checking for struct icmp" >&5 +echo "configure:2214: checking for struct icmp" >&5 if eval "test \"`echo '$''{'ac_cv_have_icmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2237,7 +2244,7 @@ struct icmp i; ; return 0; } EOF -if { (eval echo configure:2252: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2259: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_have_icmp=yes else @@ -2257,12 +2264,12 @@ EOF fi echo $ac_n "checking for struct icmphdr""... $ac_c" 1>&6 -echo "configure:2272: checking for struct icmphdr" >&5 +echo "configure:2279: checking for struct icmphdr" >&5 if eval "test \"`echo '$''{'ac_cv_have_icmphdr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2297,7 +2304,7 @@ struct icmphdr i; ip.ip_hl = 0; ; return 0; } EOF -if { (eval echo configure:2312: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2319: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_have_icmphdr=yes else @@ -2320,17 +2327,17 @@ for ac_hdr in crypt.h sys/select.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2335: checking for $ac_hdr" >&5 +echo "configure:2342: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2345: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2352: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2361,7 +2368,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2376: checking for $ac_word" >&5 +echo "configure:2383: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2400,7 +2407,7 @@ done PERL_VERSION=0 else echo $ac_n "checking perl version""... $ac_c" 1>&6 -echo "configure:2415: checking perl version" >&5 +echo "configure:2422: checking perl version" >&5 if eval "test \"`echo '$''{'ac_cv_perl_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2422,7 +2429,7 @@ fi # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:2437: checking for X" >&5 +echo "configure:2444: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -2484,12 +2491,12 @@ if test "$ac_x_includes" = NO; then # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2504: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2511: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2558,14 +2565,14 @@ if test "$ac_x_libraries" = NO; then ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -2671,17 +2678,17 @@ else case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:2686: checking whether -R must be followed by a space" >&5 +echo "configure:2693: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2703: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -2697,14 +2704,14 @@ rm -f conftest* else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2726: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -2736,7 +2743,7 @@ rm -f conftest* # libraries were built with DECnet support. And karl@cs.umb.edu says # the Alpha needs dnet_stub (dnet does not exist). echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:2751: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:2758: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2744,7 +2751,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldnet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2777,7 +2784,7 @@ fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 -echo "configure:2792: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:2799: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2785,7 +2792,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldnet_stub $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2818: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2825,12 +2832,12 @@ fi # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:2840: checking for gethostbyname" >&5 +echo "configure:2847: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2875: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -2874,7 +2881,7 @@ fi if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:2889: checking for gethostbyname in -lnsl" >&5 +echo "configure:2896: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2882,7 +2889,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2923,12 +2930,12 @@ fi # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:2938: checking for connect" >&5 +echo "configure:2945: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -2972,7 +2979,7 @@ fi if test $ac_cv_func_connect = no; then echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 -echo "configure:2987: checking for connect in -lsocket" >&5 +echo "configure:2994: checking for connect in -lsocket" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2980,7 +2987,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3015,12 +3022,12 @@ fi # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:3030: checking for remove" >&5 +echo "configure:3037: checking for remove" >&5 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -3064,7 +3071,7 @@ fi if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:3079: checking for remove in -lposix" >&5 +echo "configure:3086: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3072,7 +3079,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lposix $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3107,12 +3114,12 @@ fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:3122: checking for shmat" >&5 +echo "configure:3129: checking for shmat" >&5 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -3156,7 +3163,7 @@ fi if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:3171: checking for shmat in -lipc" >&5 +echo "configure:3178: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3164,7 +3171,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lipc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3208,7 +3215,7 @@ fi # libraries we check for below, so use a different variable. # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:3223: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:3230: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3216,7 +3223,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3249: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3258,7 +3265,7 @@ fi echo $ac_n "checking for X app-defaults directory""... $ac_c" 1>&6 -echo "configure:3273: checking for X app-defaults directory" >&5 +echo "configure:3280: checking for X app-defaults directory" >&5 if eval "test \"`echo '$''{'ac_cv_x_app_defaults'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3457,7 +3464,7 @@ case "$host" in # Some versions of Slowlaris Motif require -lgen. But not all. Why? echo $ac_n "checking for regcmp in -lgen""... $ac_c" 1>&6 -echo "configure:3472: checking for regcmp in -lgen" >&5 +echo "configure:3479: checking for regcmp in -lgen" >&5 ac_lib_var=`echo gen'_'regcmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3465,7 +3472,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lgen $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3498: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3500,7 +3507,7 @@ fi ;; esac echo $ac_n "checking for XPointer""... $ac_c" 1>&6 -echo "configure:3515: checking for XPointer" >&5 +echo "configure:3522: checking for XPointer" >&5 if eval "test \"`echo '$''{'ac_cv_xpointer'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3511,14 +3518,14 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < int main() { XPointer foo = (XPointer) 0; ; return 0; } EOF -if { (eval echo configure:3533: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3540: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_xpointer=yes else @@ -3556,17 +3563,17 @@ have_xmu=no CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/Xmu/Error.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xmu/Error.h""... $ac_c" 1>&6 -echo "configure:3571: checking for X11/Xmu/Error.h" >&5 +echo "configure:3578: checking for X11/Xmu/Error.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3581: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3588: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3591,13 +3598,11 @@ fi if test "$have_xmu" = no ; then XMU_SRCS='$(UTILS_SRC)/xmu.c' XMU_OBJS='$(UTILS_BIN)/xmu.o' + XMU_LIBS='' else XMU_SRCS='' XMU_OBJS='' - SAVER_LIBS="-lXmu $SAVER_LIBS" - HACK_LIBS="-lXmu $HACK_LIBS" - MOTIF_LIBS="-lXmu $MOTIF_LIBS" - GTK_LIBS="-lXmu $GTK_LIBS" + XMU_LIBS='-lXmu' cat >> confdefs.h <<\EOF #define HAVE_XMU 1 EOF @@ -3617,7 +3622,7 @@ if test "$have_xmu" = yes ; then case "$host" in *-sunos4*) echo $ac_n "checking for the SunOS 4.1.x _get_wmShellWidgetClass bug""... $ac_c" 1>&6 -echo "configure:3632: checking for the SunOS 4.1.x _get_wmShellWidgetClass bug" >&5 +echo "configure:3637: checking for the SunOS 4.1.x _get_wmShellWidgetClass bug" >&5 if eval "test \"`echo '$''{'ac_cv_sunos_xmu_bug'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3630,14 +3635,14 @@ else # with X libraries because we know it's SunOS. LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_sunos_xmu_bug=no else @@ -3653,21 +3658,21 @@ fi echo "$ac_t""$ac_cv_sunos_xmu_bug" 1>&6 if test "$ac_cv_sunos_xmu_bug" = yes ; then echo $ac_n "checking whether the compiler understands -static""... $ac_c" 1>&6 -echo "configure:3668: checking whether the compiler understands -static" >&5 +echo "configure:3673: checking whether the compiler understands -static" >&5 if eval "test \"`echo '$''{'ac_cv_ld_static'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -static" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_ld_static=yes else @@ -3750,7 +3755,7 @@ fi /*) echo $ac_n "checking for SGI SCREEN_SAVER headers""... $ac_c" 1>&6 -echo "configure:3765: checking for SGI SCREEN_SAVER headers" >&5 +echo "configure:3770: checking for SGI SCREEN_SAVER headers" >&5 d=$with_sgi/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -3760,7 +3765,7 @@ echo "configure:3765: checking for SGI SCREEN_SAVER headers" >&5 fi echo $ac_n "checking for SGI SCREEN_SAVER libs""... $ac_c" 1>&6 -echo "configure:3775: checking for SGI SCREEN_SAVER libs" >&5 +echo "configure:3780: checking for SGI SCREEN_SAVER libs" >&5 d=$with_sgi/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -3793,17 +3798,17 @@ if test "$with_sgi" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/XScreenSaver.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/XScreenSaver.h""... $ac_c" 1>&6 -echo "configure:3808: checking for X11/extensions/XScreenSaver.h" >&5 +echo "configure:3813: checking for X11/extensions/XScreenSaver.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3818: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3823: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3860,7 +3865,7 @@ fi /*) echo $ac_n "checking for MIT-SCREEN-SAVER headers""... $ac_c" 1>&6 -echo "configure:3875: checking for MIT-SCREEN-SAVER headers" >&5 +echo "configure:3880: checking for MIT-SCREEN-SAVER headers" >&5 d=$with_mit/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -3870,7 +3875,7 @@ echo "configure:3875: checking for MIT-SCREEN-SAVER headers" >&5 fi echo $ac_n "checking for MIT-SCREEN-SAVER libs""... $ac_c" 1>&6 -echo "configure:3885: checking for MIT-SCREEN-SAVER libs" >&5 +echo "configure:3890: checking for MIT-SCREEN-SAVER libs" >&5 d=$with_mit/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -3903,17 +3908,17 @@ if test "$with_mit" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/scrnsaver.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/scrnsaver.h""... $ac_c" 1>&6 -echo "configure:3918: checking for X11/extensions/scrnsaver.h" >&5 +echo "configure:3923: checking for X11/extensions/scrnsaver.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3928: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3933: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3958,7 +3963,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XScreenSaverRegister in -lXext""... $ac_c" 1>&6 -echo "configure:3973: checking for XScreenSaverRegister in -lXext" >&5 +echo "configure:3978: checking for XScreenSaverRegister in -lXext" >&5 ac_lib_var=`echo Xext'_'XScreenSaverRegister | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3966,7 +3971,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4024,7 +4029,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XScreenSaverRegister in -lXExExt""... $ac_c" 1>&6 -echo "configure:4039: checking for XScreenSaverRegister in -lXExExt" >&5 +echo "configure:4044: checking for XScreenSaverRegister in -lXExExt" >&5 ac_lib_var=`echo XExExt'_'XScreenSaverRegister | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4032,7 +4037,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXExExt -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4063: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4093,7 +4098,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XScreenSaverRegister in -lXss""... $ac_c" 1>&6 -echo "configure:4108: checking for XScreenSaverRegister in -lXss" >&5 +echo "configure:4113: checking for XScreenSaverRegister in -lXss" >&5 ac_lib_var=`echo Xss'_'XScreenSaverRegister | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4101,7 +4106,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXss -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4178,7 +4183,7 @@ fi /*) echo $ac_n "checking for XIDLE headers""... $ac_c" 1>&6 -echo "configure:4193: checking for XIDLE headers" >&5 +echo "configure:4198: checking for XIDLE headers" >&5 d=$with_xidle/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -4188,7 +4193,7 @@ echo "configure:4193: checking for XIDLE headers" >&5 fi echo $ac_n "checking for XIDLE libs""... $ac_c" 1>&6 -echo "configure:4203: checking for XIDLE libs" >&5 +echo "configure:4208: checking for XIDLE libs" >&5 d=$with_xidle/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -4221,17 +4226,17 @@ if test "$with_xidle" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/xidle.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/xidle.h""... $ac_c" 1>&6 -echo "configure:4236: checking for X11/extensions/xidle.h" >&5 +echo "configure:4241: checking for X11/extensions/xidle.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4246: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4251: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4287,7 +4292,7 @@ fi /*) echo $ac_n "checking for SGI-VIDEO-CONTROL headers""... $ac_c" 1>&6 -echo "configure:4302: checking for SGI-VIDEO-CONTROL headers" >&5 +echo "configure:4307: checking for SGI-VIDEO-CONTROL headers" >&5 d=$with_sgivc/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -4297,7 +4302,7 @@ echo "configure:4302: checking for SGI-VIDEO-CONTROL headers" >&5 fi echo $ac_n "checking for SGI-VIDEO-CONTROL libs""... $ac_c" 1>&6 -echo "configure:4312: checking for SGI-VIDEO-CONTROL libs" >&5 +echo "configure:4317: checking for SGI-VIDEO-CONTROL libs" >&5 d=$with_sgivc/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -4332,17 +4337,17 @@ if test "$with_sgivc" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/XSGIvc.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/XSGIvc.h""... $ac_c" 1>&6 -echo "configure:4347: checking for X11/extensions/XSGIvc.h" >&5 +echo "configure:4352: checking for X11/extensions/XSGIvc.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4357: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4362: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4386,7 +4391,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XSGIvcQueryGammaMap in -lXsgivc""... $ac_c" 1>&6 -echo "configure:4401: checking for XSGIvcQueryGammaMap in -lXsgivc" >&5 +echo "configure:4406: checking for XSGIvcQueryGammaMap in -lXsgivc" >&5 ac_lib_var=`echo Xsgivc'_'XSGIvcQueryGammaMap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4394,7 +4399,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXsgivc -lXext -lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4470,7 +4475,7 @@ fi /*) echo $ac_n "checking for DPMS headers""... $ac_c" 1>&6 -echo "configure:4485: checking for DPMS headers" >&5 +echo "configure:4490: checking for DPMS headers" >&5 d=$with_dpms/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -4480,7 +4485,7 @@ echo "configure:4485: checking for DPMS headers" >&5 fi echo $ac_n "checking for DPMS libs""... $ac_c" 1>&6 -echo "configure:4495: checking for DPMS libs" >&5 +echo "configure:4500: checking for DPMS libs" >&5 d=$with_dpms/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -4515,17 +4520,17 @@ if test "$with_dpms" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/dpms.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/dpms.h""... $ac_c" 1>&6 -echo "configure:4530: checking for X11/extensions/dpms.h" >&5 +echo "configure:4535: checking for X11/extensions/dpms.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4540: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4545: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4571,7 +4576,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for DPMSInfo in -lXext""... $ac_c" 1>&6 -echo "configure:4586: checking for DPMSInfo in -lXext" >&5 +echo "configure:4591: checking for DPMSInfo in -lXext" >&5 ac_lib_var=`echo Xext'_'DPMSInfo | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4579,7 +4584,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXext -lXext -lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4636,7 +4641,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for DPMSInfo in -lXdpms""... $ac_c" 1>&6 -echo "configure:4651: checking for DPMSInfo in -lXdpms" >&5 +echo "configure:4656: checking for DPMSInfo in -lXdpms" >&5 ac_lib_var=`echo Xdpms'_'DPMSInfo | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4644,7 +4649,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXdpms -lXext -lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4700,7 +4705,7 @@ fi ############################################################################### # -# Check for the XF86VMODE server extension. +# Check for the XF86VMODE server extension (for virtual screens.) # ############################################################################### @@ -4722,7 +4727,7 @@ fi /*) echo $ac_n "checking for xf86vmode headers""... $ac_c" 1>&6 -echo "configure:4737: checking for xf86vmode headers" >&5 +echo "configure:4742: checking for xf86vmode headers" >&5 d=$with_xf86vmode/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -4732,7 +4737,7 @@ echo "configure:4737: checking for xf86vmode headers" >&5 fi echo $ac_n "checking for xf86vmode libs""... $ac_c" 1>&6 -echo "configure:4747: checking for xf86vmode libs" >&5 +echo "configure:4752: checking for xf86vmode libs" >&5 d=$with_xf86vmode/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -4767,17 +4772,17 @@ if test "$with_xf86vmode" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/xf86vmode.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/xf86vmode.h""... $ac_c" 1>&6 -echo "configure:4782: checking for X11/extensions/xf86vmode.h" >&5 +echo "configure:4787: checking for X11/extensions/xf86vmode.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4792: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4797: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4821,7 +4826,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XF86VidModeGetViewPort in -lXxf86vm""... $ac_c" 1>&6 -echo "configure:4836: checking for XF86VidModeGetViewPort in -lXxf86vm" >&5 +echo "configure:4841: checking for XF86VidModeGetViewPort in -lXxf86vm" >&5 ac_lib_var=`echo Xxf86vm'_'XF86VidModeGetViewPort | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4829,7 +4834,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXxf86vm -lXext -lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4881,6 +4886,198 @@ elif test "$with_xf86vmode" != no; then fi +############################################################################### +# +# Check for the XF86VMODE server extension (for gamma fading.) +# +############################################################################### + +have_xf86gamma=no +with_xf86gamma_req=unspecified +# Check whether --with-xf86gamma-ext or --without-xf86gamma-ext was given. +if test "${with_xf86gamma_ext+set}" = set; then + withval="$with_xf86gamma_ext" + with_xf86gamma="$withval"; with_xf86gamma_req="$withval" +else + with_xf86gamma=yes +fi + + + + case "$with_xf86gamma" in + yes) ;; + no) ;; + + /*) + echo $ac_n "checking for xf86gamma headers""... $ac_c" 1>&6 +echo "configure:4925: checking for xf86gamma headers" >&5 + d=$with_xf86gamma/include + if test -d $d; then + X_CFLAGS="-I$d $X_CFLAGS" + echo "$ac_t""$d" 1>&6 + else + echo "$ac_t""not found ($d: no such directory)" 1>&6 + fi + + echo $ac_n "checking for xf86gamma libs""... $ac_c" 1>&6 +echo "configure:4935: checking for xf86gamma libs" >&5 + d=$with_xf86gamma/lib + if test -d $d; then + X_LIBS="-L$d $X_LIBS" + echo "$ac_t""$d" 1>&6 + else + echo "$ac_t""not found ($d: no such directory)" 1>&6 + fi + + # replace the directory string with "yes". + with_xf86gamma_req="yes" + with_xf86gamma=$with_xf86gamma_req + ;; + + *) + echo "" + echo "error: argument to --with-xf86gamma-ext must be \"yes\", \"no\", or a directory." + echo " If it is a directory, then \`DIR/include' will be added to" + echo " the -I list, and \`DIR/lib' will be added to the -L list." + exit 1 + ;; + esac + + +if test "$with_xf86gamma" = yes; then + + # first check for xf86vmode.h, if we haven't already + if test "$have_xf86vmode" = yes; then + have_xf86gamma=yes + else + + ac_save_CPPFLAGS="$CPPFLAGS" + if test \! -z "$includedir" ; then + CPPFLAGS="$CPPFLAGS -I$includedir" + fi + CPPFLAGS="$CPPFLAGS $X_CFLAGS" + ac_safe=`echo "X11/extensions/xf86vmode.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for X11/extensions/xf86vmode.h""... $ac_c" 1>&6 +echo "configure:4973: checking for X11/extensions/xf86vmode.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:4983: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + have_xf86gamma=yes +else + echo "$ac_t""no" 1>&6 +fi + + CPPFLAGS="$ac_save_CPPFLAGS" + fi + + # if that succeeded, then check for the -lXxf86vm + if test "$have_xf86gamma" = yes; then + have_xf86gamma=no + + ac_save_CPPFLAGS="$CPPFLAGS" + ac_save_LDFLAGS="$LDFLAGS" +# ac_save_LIBS="$LIBS" + + if test \! -z "$includedir" ; then + CPPFLAGS="$CPPFLAGS -I$includedir" + fi + # note: $X_CFLAGS includes $x_includes + CPPFLAGS="$CPPFLAGS $X_CFLAGS" + + if test \! -z "$libdir" ; then + LDFLAGS="$LDFLAGS -L$libdir" + fi + # note: $X_LIBS includes $x_libraries + LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" + + echo $ac_n "checking for XF86VidModeSetGamma in -lXxf86vm""... $ac_c" 1>&6 +echo "configure:5028: checking for XF86VidModeSetGamma in -lXxf86vm" >&5 +ac_lib_var=`echo Xxf86vm'_'XF86VidModeSetGamma | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lXxf86vm -lXext -lX11 $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + have_xf86gamma=yes +else + echo "$ac_t""no" 1>&6 +true +fi + + CPPFLAGS="$ac_save_CPPFLAGS" + LDFLAGS="$ac_save_LDFLAGS" +# LIBS="$ac_save_LIBS" + + fi + + # pull in the lib, if we haven't already + if test "$have_xf86gamma" = yes -a "$have_xf86vmode" = no; then + SAVER_LIBS="$SAVER_LIBS -lXxf86vm" + fi + + # if that succeeded, then we've really got it. + if test "$have_xf86gamma" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_XF86VMODE_GAMMA 1 +EOF + + fi + +elif test "$with_xf86gamma" != no; then + echo "error: must be yes or no: --with-xf86gamma-ext=$with_xf86vmode" + exit 1 +fi + + ############################################################################### # # Check for HP XHPDisableReset and XHPEnableReset. @@ -4894,7 +5091,7 @@ fi fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < EOF @@ -4932,7 +5129,7 @@ fi if test "$with_proc_interrupts" = yes; then echo $ac_n "checking whether /proc/interrupts contains keyboard data""... $ac_c" 1>&6 -echo "configure:4947: checking whether /proc/interrupts contains keyboard data" >&5 +echo "configure:5144: checking whether /proc/interrupts contains keyboard data" >&5 if eval "test \"`echo '$''{'ac_cv_have_proc_interrupts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5065,7 +5262,7 @@ fi /*) echo $ac_n "checking for PAM headers""... $ac_c" 1>&6 -echo "configure:5080: checking for PAM headers" >&5 +echo "configure:5277: checking for PAM headers" >&5 d=$with_pam/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -5075,7 +5272,7 @@ echo "configure:5080: checking for PAM headers" >&5 fi echo $ac_n "checking for PAM libs""... $ac_c" 1>&6 -echo "configure:5090: checking for PAM libs" >&5 +echo "configure:5287: checking for PAM libs" >&5 d=$with_pam/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -5101,7 +5298,7 @@ echo "configure:5090: checking for PAM libs" >&5 if test "$enable_locking" = yes -a "$with_pam" = yes; then echo $ac_n "checking for PAM""... $ac_c" 1>&6 -echo "configure:5116: checking for PAM" >&5 +echo "configure:5313: checking for PAM" >&5 if eval "test \"`echo '$''{'ac_cv_pam'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5112,14 +5309,14 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < int main() { ; return 0; } EOF -if { (eval echo configure:5134: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5331: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_pam=yes else @@ -5144,7 +5341,7 @@ EOF # libpam typically requires dlopen and dlsym. On FreeBSD, # those are in libc. On Linux and Solaris, they're in libdl. echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:5159: checking for dlopen in -ldl" >&5 +echo "configure:5356: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5152,7 +5349,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5185,12 +5382,12 @@ fi echo $ac_n "checking how to call pam_strerror""... $ac_c" 1>&6 -echo "configure:5200: checking how to call pam_strerror" >&5 +echo "configure:5397: checking how to call pam_strerror" >&5 if eval "test \"`echo '$''{'ac_cv_pam_strerror_args'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5200,7 +5397,7 @@ pam_handle_t *pamh = 0; char *s = pam_strerror(pamh, PAM_SUCCESS); ; return 0; } EOF -if { (eval echo configure:5215: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5412: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_pam_strerror_args=2 else @@ -5208,7 +5405,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < #include @@ -5218,7 +5415,7 @@ char *s = pam_strerror(PAM_SUCCESS); ; return 0; } EOF -if { (eval echo configure:5233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5430: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_pam_strerror_args=1 else @@ -5275,7 +5472,7 @@ fi /*) echo $ac_n "checking for Kerberos headers""... $ac_c" 1>&6 -echo "configure:5290: checking for Kerberos headers" >&5 +echo "configure:5487: checking for Kerberos headers" >&5 d=$with_kerberos/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -5285,7 +5482,7 @@ echo "configure:5290: checking for Kerberos headers" >&5 fi echo $ac_n "checking for Kerberos libs""... $ac_c" 1>&6 -echo "configure:5300: checking for Kerberos libs" >&5 +echo "configure:5497: checking for Kerberos libs" >&5 d=$with_kerberos/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -5311,7 +5508,7 @@ echo "configure:5300: checking for Kerberos libs" >&5 if test "$enable_locking" = yes -a "$with_kerberos" = yes; then echo $ac_n "checking for Kerberos 4""... $ac_c" 1>&6 -echo "configure:5326: checking for Kerberos 4" >&5 +echo "configure:5523: checking for Kerberos 4" >&5 if eval "test \"`echo '$''{'ac_cv_kerberos'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5322,14 +5519,14 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < int main() { ; return 0; } EOF -if { (eval echo configure:5344: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5541: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_kerberos=yes else @@ -5344,7 +5541,7 @@ fi echo "$ac_t""$ac_cv_kerberos" 1>&6 echo $ac_n "checking for Kerberos 5""... $ac_c" 1>&6 -echo "configure:5359: checking for Kerberos 5" >&5 +echo "configure:5556: checking for Kerberos 5" >&5 if eval "test \"`echo '$''{'ac_cv_kerberos5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5355,14 +5552,14 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < int main() { ; return 0; } EOF -if { (eval echo configure:5377: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5574: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_kerberos5=yes else @@ -5409,12 +5606,12 @@ EOF if test "$have_kerberos" = yes ; then echo $ac_n "checking for res_search""... $ac_c" 1>&6 -echo "configure:5424: checking for res_search" >&5 +echo "configure:5621: checking for res_search" >&5 if eval "test \"`echo '$''{'ac_cv_func_res_search'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_res_search=yes" else @@ -5455,7 +5652,7 @@ if eval "test \"`echo '$ac_cv_func_'res_search`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for res_search in -lresolv""... $ac_c" 1>&6 -echo "configure:5470: checking for res_search in -lresolv" >&5 +echo "configure:5667: checking for res_search in -lresolv" >&5 ac_lib_var=`echo resolv'_'res_search | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5463,7 +5660,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lresolv $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5529,7 +5726,7 @@ fi /*) echo $ac_n "checking for shadow password headers""... $ac_c" 1>&6 -echo "configure:5544: checking for shadow password headers" >&5 +echo "configure:5741: checking for shadow password headers" >&5 d=$with_shadow/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -5539,7 +5736,7 @@ echo "configure:5544: checking for shadow password headers" >&5 fi echo $ac_n "checking for shadow password libs""... $ac_c" 1>&6 -echo "configure:5554: checking for shadow password libs" >&5 +echo "configure:5751: checking for shadow password libs" >&5 d=$with_shadow/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -5577,7 +5774,7 @@ fi if test "$with_shadow" = yes ; then echo $ac_n "checking for Sun-style shadow passwords""... $ac_c" 1>&6 -echo "configure:5592: checking for Sun-style shadow passwords" >&5 +echo "configure:5789: checking for Sun-style shadow passwords" >&5 if eval "test \"`echo '$''{'ac_cv_sun_adjunct'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5588,7 +5785,7 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < #include @@ -5601,7 +5798,7 @@ struct passwd_adjunct *p = getpwanam("nobody"); const char *pw = p->pwa_passwd; ; return 0; } EOF -if { (eval echo configure:5616: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5813: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_sun_adjunct=yes else @@ -5631,7 +5828,7 @@ fi if test "$with_shadow" = yes ; then echo $ac_n "checking for DEC-style shadow passwords""... $ac_c" 1>&6 -echo "configure:5646: checking for DEC-style shadow passwords" >&5 +echo "configure:5843: checking for DEC-style shadow passwords" >&5 if eval "test \"`echo '$''{'ac_cv_enhanced_passwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5642,7 +5839,7 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < #include @@ -5659,7 +5856,7 @@ struct pr_passwd *p; pw = p->ufld.fd_encrypt; ; return 0; } EOF -if { (eval echo configure:5674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_enhanced_passwd=yes else @@ -5683,7 +5880,7 @@ echo "$ac_t""$ac_cv_enhanced_passwd" 1>&6 # But on DEC, it's in -lsecurity. # echo $ac_n "checking for getprpwnam in -lprot""... $ac_c" 1>&6 -echo "configure:5698: checking for getprpwnam in -lprot" >&5 +echo "configure:5895: checking for getprpwnam in -lprot" >&5 ac_lib_var=`echo prot'_'getprpwnam | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5691,7 +5888,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lprot -lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5914: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5721,7 +5918,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for getprpwnam in -lsecurity""... $ac_c" 1>&6 -echo "configure:5736: checking for getprpwnam in -lsecurity" >&5 +echo "configure:5933: checking for getprpwnam in -lsecurity" >&5 ac_lib_var=`echo security'_'getprpwnam | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5729,7 +5926,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsecurity $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5773,7 +5970,7 @@ fi if test "$with_shadow" = yes ; then echo $ac_n "checking for HP-style shadow passwords""... $ac_c" 1>&6 -echo "configure:5788: checking for HP-style shadow passwords" >&5 +echo "configure:5985: checking for HP-style shadow passwords" >&5 if eval "test \"`echo '$''{'ac_cv_hpux_passwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5784,7 +5981,7 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < #include @@ -5797,7 +5994,7 @@ struct s_passwd *p = getspwnam("nobody"); const char *pw = p->pw_passwd; ; return 0; } EOF -if { (eval echo configure:5812: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_hpux_passwd=yes else @@ -5818,7 +6015,7 @@ echo "$ac_t""$ac_cv_hpux_passwd" 1>&6 # on HPUX, bigcrypt is in -lsec echo $ac_n "checking for bigcrypt in -lsec""... $ac_c" 1>&6 -echo "configure:5833: checking for bigcrypt in -lsec" >&5 +echo "configure:6030: checking for bigcrypt in -lsec" >&5 ac_lib_var=`echo sec'_'bigcrypt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5826,7 +6023,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsec $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5875,7 +6072,7 @@ fi if test "$with_shadow" = yes ; then echo $ac_n "checking for FreeBSD-style shadow passwords""... $ac_c" 1>&6 -echo "configure:5890: checking for FreeBSD-style shadow passwords" >&5 +echo "configure:6087: checking for FreeBSD-style shadow passwords" >&5 if eval "test \"`echo '$''{'ac_cv_master_passwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5901,7 +6098,7 @@ fi if test "$with_shadow" = yes ; then echo $ac_n "checking for generic shadow passwords""... $ac_c" 1>&6 -echo "configure:5916: checking for generic shadow passwords" >&5 +echo "configure:6113: checking for generic shadow passwords" >&5 if eval "test \"`echo '$''{'ac_cv_shadow'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5912,7 +6109,7 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < #include @@ -5924,7 +6121,7 @@ struct spwd *p = getspnam("nobody"); const char *pw = p->sp_pwdp; ; return 0; } EOF -if { (eval echo configure:5939: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6136: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_shadow=yes else @@ -5945,7 +6142,7 @@ echo "$ac_t""$ac_cv_shadow" 1>&6 # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc. have_getspnam=no echo $ac_n "checking for getspnam in -lc""... $ac_c" 1>&6 -echo "configure:5960: checking for getspnam in -lc" >&5 +echo "configure:6157: checking for getspnam in -lc" >&5 ac_lib_var=`echo c'_'getspnam | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5953,7 +6150,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6176: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5986,7 +6183,7 @@ fi if test "$have_getspnam" = no ; then echo $ac_n "checking for getspnam in -lgen""... $ac_c" 1>&6 -echo "configure:6001: checking for getspnam in -lgen" >&5 +echo "configure:6198: checking for getspnam in -lgen" >&5 ac_lib_var=`echo gen'_'getspnam | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5994,7 +6191,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lgen $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6217: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6041,7 +6238,7 @@ if test "$enable_locking" = yes ; then # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc. have_crypt=no echo $ac_n "checking for crypt in -lc""... $ac_c" 1>&6 -echo "configure:6056: checking for crypt in -lc" >&5 +echo "configure:6253: checking for crypt in -lc" >&5 ac_lib_var=`echo c'_'crypt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6049,7 +6246,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6082,7 +6279,7 @@ fi if test "$have_crypt" = no ; then echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6 -echo "configure:6097: checking for crypt in -lcrypt" >&5 +echo "configure:6294: checking for crypt in -lcrypt" >&5 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6090,7 +6287,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lcrypt $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6313: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6185,7 +6382,7 @@ fi /*) echo $ac_n "checking for Motif headers""... $ac_c" 1>&6 -echo "configure:6200: checking for Motif headers" >&5 +echo "configure:6397: checking for Motif headers" >&5 d=$with_motif/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -6195,7 +6392,7 @@ echo "configure:6200: checking for Motif headers" >&5 fi echo $ac_n "checking for Motif libs""... $ac_c" 1>&6 -echo "configure:6210: checking for Motif libs" >&5 +echo "configure:6407: checking for Motif libs" >&5 d=$with_motif/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -6234,17 +6431,17 @@ if test "$with_motif" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6 -echo "configure:6249: checking for Xm/Xm.h" >&5 +echo "configure:6446: checking for Xm/Xm.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6259: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6456: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6283,17 +6480,17 @@ if test "$have_motif" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "Xm/ComboBox.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xm/ComboBox.h""... $ac_c" 1>&6 -echo "configure:6298: checking for Xm/ComboBox.h" >&5 +echo "configure:6495: checking for Xm/ComboBox.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6308: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6505: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6356,7 +6553,7 @@ esac /*) echo $ac_n "checking for Gtk headers""... $ac_c" 1>&6 -echo "configure:6371: checking for Gtk headers" >&5 +echo "configure:6568: checking for Gtk headers" >&5 d=$with_gtk/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -6366,7 +6563,7 @@ echo "configure:6371: checking for Gtk headers" >&5 fi echo $ac_n "checking for Gtk libs""... $ac_c" 1>&6 -echo "configure:6381: checking for Gtk libs" >&5 +echo "configure:6578: checking for Gtk libs" >&5 d=$with_gtk/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -6424,7 +6621,7 @@ esac /*) echo $ac_n "checking for Gnome headers""... $ac_c" 1>&6 -echo "configure:6439: checking for Gnome headers" >&5 +echo "configure:6636: checking for Gnome headers" >&5 d=$with_gnome/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -6434,7 +6631,7 @@ echo "configure:6439: checking for Gnome headers" >&5 fi echo $ac_n "checking for Gnome libs""... $ac_c" 1>&6 -echo "configure:6449: checking for Gnome libs" >&5 +echo "configure:6646: checking for Gnome libs" >&5 d=$with_gnome/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -6490,7 +6687,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6505: checking for $ac_word" >&5 +echo "configure:6702: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_glib_config'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6530,7 +6727,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6545: checking for $ac_word" >&5 +echo "configure:6742: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_gtk_config'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6572,7 +6769,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6587: checking for $ac_word" >&5 +echo "configure:6784: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_gnome_config'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6618,7 +6815,7 @@ done if test "$have_gtk" = yes; then echo $ac_n "checking Gtk version number""... $ac_c" 1>&6 -echo "configure:6633: checking Gtk version number" >&5 +echo "configure:6830: checking Gtk version number" >&5 if eval "test \"`echo '$''{'ac_cv_gtk_version_string'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6647,7 +6844,7 @@ echo "$ac_t""$ac_cv_gtk_version_string" 1>&6 if test "$have_gtk" = yes; then echo $ac_n "checking for Gtk includes""... $ac_c" 1>&6 -echo "configure:6662: checking for Gtk includes" >&5 +echo "configure:6859: checking for Gtk includes" >&5 if eval "test \"`echo '$''{'ac_cv_gtk_config_cflags'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6656,7 +6853,7 @@ fi echo "$ac_t""$ac_cv_gtk_config_cflags" 1>&6 echo $ac_n "checking for Gtk libs""... $ac_c" 1>&6 -echo "configure:6671: checking for Gtk libs" >&5 +echo "configure:6868: checking for Gtk libs" >&5 if eval "test \"`echo '$''{'ac_cv_gtk_config_libs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6673,7 +6870,7 @@ echo "$ac_t""$ac_cv_gtk_config_libs" 1>&6 if test "$have_gnome" = yes -a "$have_gtk" = yes; then gnome_config_libs="capplet gnomeui" echo $ac_n "checking for Gnome capplet includes""... $ac_c" 1>&6 -echo "configure:6688: checking for Gnome capplet includes" >&5 +echo "configure:6885: checking for Gnome capplet includes" >&5 if eval "test \"`echo '$''{'ac_cv_gnome_config_cflags'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6696,7 +6893,7 @@ fi if test "$have_gnome" = yes -a "$have_gtk" = yes; then echo $ac_n "checking for Gnome capplet libs""... $ac_c" 1>&6 -echo "configure:6711: checking for Gnome capplet libs" >&5 +echo "configure:6908: checking for Gnome capplet libs" >&5 if eval "test \"`echo '$''{'ac_cv_gnome_config_libs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6757,7 +6954,7 @@ fi have_lesstif=no if test "$have_motif" = yes ; then echo $ac_n "checking whether Motif is really LessTif""... $ac_c" 1>&6 -echo "configure:6772: checking whether Motif is really LessTif" >&5 +echo "configure:6969: checking whether Motif is really LessTif" >&5 if eval "test \"`echo '$''{'ac_cv_have_lesstif'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6768,14 +6965,14 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < int main() { long vers = LesstifVersion; ; return 0; } EOF -if { (eval echo configure:6790: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6987: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_have_lesstif=yes else @@ -6800,7 +6997,7 @@ if test "$have_lesstif" = yes ; then ltv=unknown echo unknown > conftest-lt echo $ac_n "checking LessTif version number""... $ac_c" 1>&6 -echo "configure:6815: checking LessTif version number" >&5 +echo "configure:7012: checking LessTif version number" >&5 if eval "test \"`echo '$''{'ac_cv_lesstif_version_string'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6815,7 +7012,7 @@ else ac_cv_lesstif_version_string=unknown else cat > conftest.$ac_ext < #include @@ -6828,7 +7025,7 @@ else exit(0); } EOF -if { (eval echo configure:6843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ltv=`cat conftest-lt` ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'` @@ -6858,7 +7055,7 @@ if test "$have_motif" = yes ; then mtv=unknown echo unknown > conftest-mt echo $ac_n "checking Motif version number""... $ac_c" 1>&6 -echo "configure:6873: checking Motif version number" >&5 +echo "configure:7070: checking Motif version number" >&5 if eval "test \"`echo '$''{'ac_cv_motif_version_string'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6873,7 +7070,7 @@ else ac_cv_motif_version_string=unknown else cat > conftest.$ac_ext < #include @@ -6886,7 +7083,7 @@ else exit(0); } EOF -if { (eval echo configure:6901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7098: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then mtv=`cat conftest-mt` ac_cv_motif_version=`echo $mtv | sed 's/ .*//'` @@ -6930,7 +7127,7 @@ fi motif_requires_xpm=no if test "$have_motif" = yes ; then echo $ac_n "checking whether Motif requires XPM""... $ac_c" 1>&6 -echo "configure:6945: checking whether Motif requires XPM" >&5 +echo "configure:7142: checking whether Motif requires XPM" >&5 if test "$motif_version" = "unknown" || test "$motif_version" -ge 2000 then motif_requires_xpm=yes @@ -6972,7 +7169,7 @@ if test "$have_motif" = yes ; then LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XpQueryExtension in -lXp""... $ac_c" 1>&6 -echo "configure:6987: checking for XpQueryExtension in -lXp" >&5 +echo "configure:7184: checking for XpQueryExtension in -lXp" >&5 ac_lib_var=`echo Xp'_'XpQueryExtension | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6980,7 +7177,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXp -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7045,7 +7242,7 @@ if test "$have_motif" = yes ; then LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for _Xsetlocale in -lXintl""... $ac_c" 1>&6 -echo "configure:7060: checking for _Xsetlocale in -lXintl" >&5 +echo "configure:7257: checking for _Xsetlocale in -lXintl" >&5 ac_lib_var=`echo Xintl'_'_Xsetlocale | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7053,7 +7250,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXintl -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7121,7 +7318,7 @@ fi /*) echo $ac_n "checking for GL headers""... $ac_c" 1>&6 -echo "configure:7136: checking for GL headers" >&5 +echo "configure:7333: checking for GL headers" >&5 d=$with_gl/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -7131,7 +7328,7 @@ echo "configure:7136: checking for GL headers" >&5 fi echo $ac_n "checking for GL libs""... $ac_c" 1>&6 -echo "configure:7146: checking for GL libs" >&5 +echo "configure:7343: checking for GL libs" >&5 d=$with_gl/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -7167,17 +7364,17 @@ if test "$with_gl" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "GL/gl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for GL/gl.h""... $ac_c" 1>&6 -echo "configure:7182: checking for GL/gl.h" >&5 +echo "configure:7379: checking for GL/gl.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7192: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7389: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7208,17 +7405,17 @@ fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "GL/glx.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for GL/glx.h""... $ac_c" 1>&6 -echo "configure:7223: checking for GL/glx.h" >&5 +echo "configure:7420: checking for GL/glx.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7233: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7430: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7250,7 +7447,7 @@ fi # to link against. # echo $ac_n "checking whether GL is really MesaGL""... $ac_c" 1>&6 -echo "configure:7265: checking whether GL is really MesaGL" >&5 +echo "configure:7462: checking whether GL is really MesaGL" >&5 if eval "test \"`echo '$''{'ac_cv_have_mesa_gl'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7262,7 +7459,7 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < EOF @@ -7291,7 +7488,7 @@ echo "$ac_t""$ac_cv_have_mesa_gl" 1>&6 # if test "$ac_have_mesa_gl" = yes; then echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6 -echo "configure:7306: checking for pthread_create in -lpthread" >&5 +echo "configure:7503: checking for pthread_create in -lpthread" >&5 ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7299,7 +7496,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7357,7 +7554,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for glXCreateContext in -lMesaGL""... $ac_c" 1>&6 -echo "configure:7372: checking for glXCreateContext in -lMesaGL" >&5 +echo "configure:7569: checking for glXCreateContext in -lMesaGL" >&5 ac_lib_var=`echo MesaGL'_'glXCreateContext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7365,7 +7562,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lMesaGL -lMesaGLU $GL_LIBS -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7588: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7422,7 +7619,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for glXCreateContext in -lGL""... $ac_c" 1>&6 -echo "configure:7437: checking for glXCreateContext in -lGL" >&5 +echo "configure:7634: checking for glXCreateContext in -lGL" >&5 ac_lib_var=`echo GL'_'glXCreateContext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7430,7 +7627,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lGL -lGLU $GL_LIBS -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7499,12 +7696,12 @@ EOF if test "$ac_have_mesa_gl" = yes; then echo $ac_n "checking MesaGL version number""... $ac_c" 1>&6 -echo "configure:7514: checking MesaGL version number" >&5 +echo "configure:7711: checking MesaGL version number" >&5 if eval "test \"`echo '$''{'ac_cv_mesagl_version_string'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef MESA_MAJOR_VERSION @@ -7575,7 +7772,7 @@ echo "$ac_t""$ac_cv_mesagl_version_string" 1>&6 LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for glBindTexture in -l$gl_lib_1""... $ac_c" 1>&6 -echo "configure:7590: checking for glBindTexture in -l$gl_lib_1" >&5 +echo "configure:7787: checking for glBindTexture in -l$gl_lib_1" >&5 ac_lib_var=`echo $gl_lib_1'_'glBindTexture | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7583,7 +7780,7 @@ else ac_save_LIBS="$LIBS" LIBS="-l$gl_lib_1 $GL_LIBS -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7655,7 +7852,7 @@ fi /*) echo $ac_n "checking for GLE headers""... $ac_c" 1>&6 -echo "configure:7670: checking for GLE headers" >&5 +echo "configure:7867: checking for GLE headers" >&5 d=$with_gle/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -7665,7 +7862,7 @@ echo "configure:7670: checking for GLE headers" >&5 fi echo $ac_n "checking for GLE libs""... $ac_c" 1>&6 -echo "configure:7680: checking for GLE libs" >&5 +echo "configure:7877: checking for GLE libs" >&5 d=$with_gle/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -7701,17 +7898,17 @@ if test "$with_gle" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "GL/gle.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for GL/gle.h""... $ac_c" 1>&6 -echo "configure:7716: checking for GL/gle.h" >&5 +echo "configure:7913: checking for GL/gle.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7726: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7923: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7744,17 +7941,17 @@ fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "GL/gutil.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for GL/gutil.h""... $ac_c" 1>&6 -echo "configure:7759: checking for GL/gutil.h" >&5 +echo "configure:7956: checking for GL/gutil.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7769: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7966: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7785,17 +7982,17 @@ fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "GL/tube.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for GL/tube.h""... $ac_c" 1>&6 -echo "configure:7800: checking for GL/tube.h" >&5 +echo "configure:7997: checking for GL/tube.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7810: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8007: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7841,7 +8038,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for gleCreateGC in -lgle""... $ac_c" 1>&6 -echo "configure:7856: checking for gleCreateGC in -lgle" >&5 +echo "configure:8053: checking for gleCreateGC in -lgle" >&5 ac_lib_var=`echo gle'_'gleCreateGC | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7849,7 +8046,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lgle $GL_LIBS -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7920,7 +8117,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for uview_direction in -lgle""... $ac_c" 1>&6 -echo "configure:7935: checking for uview_direction in -lgle" >&5 +echo "configure:8132: checking for uview_direction in -lgle" >&5 ac_lib_var=`echo gle'_'uview_direction | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7928,7 +8125,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lgle $GL_LIBS -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7984,7 +8181,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for uview_direction_d in -lmatrix""... $ac_c" 1>&6 -echo "configure:7999: checking for uview_direction_d in -lmatrix" >&5 +echo "configure:8196: checking for uview_direction_d in -lmatrix" >&5 ac_lib_var=`echo matrix'_'uview_direction_d | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7992,7 +8189,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lmatrix $GL_LIBS -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8076,7 +8273,7 @@ fi /*) echo $ac_n "checking for XPM headers""... $ac_c" 1>&6 -echo "configure:8091: checking for XPM headers" >&5 +echo "configure:8288: checking for XPM headers" >&5 d=$with_xpm/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -8086,7 +8283,7 @@ echo "configure:8091: checking for XPM headers" >&5 fi echo $ac_n "checking for XPM libs""... $ac_c" 1>&6 -echo "configure:8101: checking for XPM libs" >&5 +echo "configure:8298: checking for XPM libs" >&5 d=$with_xpm/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -8119,17 +8316,17 @@ if test "$with_xpm" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/xpm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/xpm.h""... $ac_c" 1>&6 -echo "configure:8134: checking for X11/xpm.h" >&5 +echo "configure:8331: checking for X11/xpm.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8144: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8341: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8195,7 +8392,7 @@ fi /*) echo $ac_n "checking for XSHM headers""... $ac_c" 1>&6 -echo "configure:8210: checking for XSHM headers" >&5 +echo "configure:8407: checking for XSHM headers" >&5 d=$with_xshm/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -8205,7 +8402,7 @@ echo "configure:8210: checking for XSHM headers" >&5 fi echo $ac_n "checking for XSHM libs""... $ac_c" 1>&6 -echo "configure:8220: checking for XSHM libs" >&5 +echo "configure:8417: checking for XSHM libs" >&5 d=$with_xshm/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -8240,17 +8437,17 @@ if test "$with_xshm" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/XShm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/XShm.h""... $ac_c" 1>&6 -echo "configure:8255: checking for X11/extensions/XShm.h" >&5 +echo "configure:8452: checking for X11/extensions/XShm.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8265: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8462: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8284,17 +8481,17 @@ fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "sys/ipc.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/ipc.h""... $ac_c" 1>&6 -echo "configure:8299: checking for sys/ipc.h" >&5 +echo "configure:8496: checking for sys/ipc.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8309: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8506: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8329,17 +8526,17 @@ fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "sys/shm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/shm.h""... $ac_c" 1>&6 -echo "configure:8344: checking for sys/shm.h" >&5 +echo "configure:8541: checking for sys/shm.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8354: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8551: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8391,7 +8588,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XShmQueryExtension in -lXextSam""... $ac_c" 1>&6 -echo "configure:8406: checking for XShmQueryExtension in -lXextSam" >&5 +echo "configure:8603: checking for XShmQueryExtension in -lXextSam" >&5 ac_lib_var=`echo XextSam'_'XShmQueryExtension | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8399,7 +8596,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXextSam -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8477,7 +8674,7 @@ fi /*) echo $ac_n "checking for DOUBLE-BUFFER headers""... $ac_c" 1>&6 -echo "configure:8492: checking for DOUBLE-BUFFER headers" >&5 +echo "configure:8689: checking for DOUBLE-BUFFER headers" >&5 d=$with_xdbe/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -8487,7 +8684,7 @@ echo "configure:8492: checking for DOUBLE-BUFFER headers" >&5 fi echo $ac_n "checking for DOUBLE-BUFFER libs""... $ac_c" 1>&6 -echo "configure:8502: checking for DOUBLE-BUFFER libs" >&5 +echo "configure:8699: checking for DOUBLE-BUFFER libs" >&5 d=$with_xdbe/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -8521,17 +8718,17 @@ if test "$with_xdbe" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/Xdbe.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/Xdbe.h""... $ac_c" 1>&6 -echo "configure:8536: checking for X11/extensions/Xdbe.h" >&5 +echo "configure:8733: checking for X11/extensions/Xdbe.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8546: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8743: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8594,7 +8791,7 @@ fi /*) echo $ac_n "checking for XReadDisplay headers""... $ac_c" 1>&6 -echo "configure:8609: checking for XReadDisplay headers" >&5 +echo "configure:8806: checking for XReadDisplay headers" >&5 d=$with_readdisplay/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -8604,7 +8801,7 @@ echo "configure:8609: checking for XReadDisplay headers" >&5 fi echo $ac_n "checking for XReadDisplay libs""... $ac_c" 1>&6 -echo "configure:8619: checking for XReadDisplay libs" >&5 +echo "configure:8816: checking for XReadDisplay libs" >&5 d=$with_readdisplay/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -8637,17 +8834,17 @@ if test "$with_readdisplay" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/readdisplay.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/readdisplay.h""... $ac_c" 1>&6 -echo "configure:8652: checking for X11/extensions/readdisplay.h" >&5 +echo "configure:8849: checking for X11/extensions/readdisplay.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8662: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8859: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8678,162 +8875,6 @@ elif test "$with_readdisplay" != no; then fi -############################################################################### -# -# Check for the SGI Iris Video Library. -# -############################################################################### - -have_sgivideo=no -with_sgivideo_req=unspecified -# Check whether --with-sgivideo or --without-sgivideo was given. -if test "${with_sgivideo+set}" = set; then - withval="$with_sgivideo" - with_sgivideo="$withval"; with_sgivideo_req="$withval" -else - with_sgivideo=yes -fi - - - - case "$with_sgivideo" in - yes) ;; - no) ;; - - /*) - echo $ac_n "checking for Iris Video headers""... $ac_c" 1>&6 -echo "configure:8717: checking for Iris Video headers" >&5 - d=$with_sgivideo/include - if test -d $d; then - X_CFLAGS="-I$d $X_CFLAGS" - echo "$ac_t""$d" 1>&6 - else - echo "$ac_t""not found ($d: no such directory)" 1>&6 - fi - - echo $ac_n "checking for Iris Video libs""... $ac_c" 1>&6 -echo "configure:8727: checking for Iris Video libs" >&5 - d=$with_sgivideo/lib - if test -d $d; then - X_LIBS="-L$d $X_LIBS" - echo "$ac_t""$d" 1>&6 - else - echo "$ac_t""not found ($d: no such directory)" 1>&6 - fi - - # replace the directory string with "yes". - with_sgivideo_req="yes" - with_sgivideo=$with_sgivideo_req - ;; - - *) - echo "" - echo "error: argument to --with-sgivideo must be \"yes\", \"no\", or a directory." - echo " If it is a directory, then \`DIR/include' will be added to" - echo " the -I list, and \`DIR/lib' will be added to the -L list." - exit 1 - ;; - esac - - -if test "$with_sgivideo" = yes; then - - ac_save_CPPFLAGS="$CPPFLAGS" - if test \! -z "$includedir" ; then - CPPFLAGS="$CPPFLAGS -I$includedir" - fi - CPPFLAGS="$CPPFLAGS $X_CFLAGS" - ac_safe=`echo "dmedia/vl.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for dmedia/vl.h""... $ac_c" 1>&6 -echo "configure:8760: checking for dmedia/vl.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8770: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - have_sgivideo=yes -else - echo "$ac_t""no" 1>&6 -fi - - CPPFLAGS="$ac_save_CPPFLAGS" - if test "$have_sgivideo" = yes; then - have_sgivideo=no - echo $ac_n "checking for vlOpenVideo in -lvl""... $ac_c" 1>&6 -echo "configure:8795: checking for vlOpenVideo in -lvl" >&5 -ac_lib_var=`echo vl'_'vlOpenVideo | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lvl $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - have_sgivideo=yes -else - echo "$ac_t""no" 1>&6 -fi - - if test "$have_sgivideo" = yes; then - SGI_VIDEO_OBJS="$(UTILS_BIN)/sgivideo.o" - SGI_VIDEO_LIBS="-lvl" - cat >> confdefs.h <<\EOF -#define HAVE_SGI_VIDEO 1 -EOF - - fi - fi -elif test "$with_sgivideo" != no; then - echo "error: must be yes or no: --with-sgivideo=$with_sgivideo" - exit 1 -fi - - ############################################################################### # # Check for a program to generate random text. @@ -8870,7 +8911,7 @@ if test -n "$with_zippy_req" ; then case "$with_zippy_req" in /*) echo $ac_n "checking for $with_zippy_req""... $ac_c" 1>&6 -echo "configure:8885: checking for $with_zippy_req" >&5 +echo "configure:8926: checking for $with_zippy_req" >&5 if test -x "$with_zippy_req" ; then echo "$ac_t""yes" 1>&6 else @@ -8884,7 +8925,7 @@ echo "configure:8885: checking for $with_zippy_req" >&5 # Extract the first word of "$with_zippy_req", so it can be a program name with args. set dummy $with_zippy_req; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8899: checking for $ac_word" >&5 +echo "configure:8940: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_zip2'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8934,7 +8975,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8949: checking for $ac_word" >&5 +echo "configure:8990: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_emacs_exe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8968,7 +9009,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8983: checking for $ac_word" >&5 +echo "configure:9024: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_xemacs_exe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9003,7 +9044,7 @@ done if test -n "$emacs_exe" ; then echo $ac_n "checking for emacs yow""... $ac_c" 1>&6 -echo "configure:9018: checking for emacs yow" >&5 +echo "configure:9059: checking for emacs yow" >&5 # # get emacs to tell us where the libexec directory is. # @@ -9025,7 +9066,7 @@ echo "configure:9018: checking for emacs yow" >&5 if test -z "$ac_cv_zippy_program" ; then echo $ac_n "checking for xemacs yow""... $ac_c" 1>&6 -echo "configure:9040: checking for xemacs yow" >&5 +echo "configure:9081: checking for xemacs yow" >&5 if test -n "$xemacs_exe" ; then # # get xemacs to tell us where the libexec directory is. @@ -9084,7 +9125,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:9099: checking for $ac_word" >&5 +echo "configure:9140: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_fortune'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9120,7 +9161,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:9135: checking for $ac_word" >&5 +echo "configure:9176: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_fortune'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9195,7 +9236,7 @@ fi /*) echo $ac_n "checking for setuid hacks headers""... $ac_c" 1>&6 -echo "configure:9210: checking for setuid hacks headers" >&5 +echo "configure:9251: checking for setuid hacks headers" >&5 d=$setuid_hacks/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -9205,7 +9246,7 @@ echo "configure:9210: checking for setuid hacks headers" >&5 fi echo $ac_n "checking for setuid hacks libs""... $ac_c" 1>&6 -echo "configure:9220: checking for setuid hacks libs" >&5 +echo "configure:9261: checking for setuid hacks libs" >&5 d=$setuid_hacks/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -9291,7 +9332,7 @@ else LOCK_OBJS='$(NOLOCK_OBJS_1)' fi -INSTALL_SETUID='$(INSTALL) $(SUID_FLAGS)' +INSTALL_SETUID='$(INSTALL_PROGRAM) $(SUID_FLAGS)' if test "$need_setuid" = yes; then NEED_SETUID=yes @@ -9365,7 +9406,6 @@ fi - APPDEFAULTS=$ac_x_app_defaults @@ -9554,12 +9594,11 @@ s%@SETUID_HACKS@%$SETUID_HACKS%g s%@INSTALL_DIRS@%$INSTALL_DIRS%g s%@NEED_SETUID@%$NEED_SETUID%g s%@INSTALL_PAM@%$INSTALL_PAM%g -s%@SGI_VIDEO_OBJS@%$SGI_VIDEO_OBJS%g -s%@SGI_VIDEO_LIBS@%$SGI_VIDEO_LIBS%g s%@PASSWD_SRCS@%$PASSWD_SRCS%g s%@PASSWD_OBJS@%$PASSWD_OBJS%g s%@XMU_SRCS@%$XMU_SRCS%g s%@XMU_OBJS@%$XMU_OBJS%g +s%@XMU_LIBS@%$XMU_LIBS%g s%@SAVER_GL_SRCS@%$SAVER_GL_SRCS%g s%@SAVER_GL_OBJS@%$SAVER_GL_OBJS%g s%@SAVER_GL_LIBS@%$SAVER_GL_LIBS%g @@ -10049,10 +10088,6 @@ if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then warn 'Use of XReadDisplay was requested, but it was not found.' fi -if test "$with_sgivideo_req" = yes -a "$have_sgivideo" = no ; then - warn 'Use of the Iris Video Library was requested, but it was not found.' -fi - if test -n "$with_zippy_req"; then if test "$with_zippy_req" != "$ac_cv_zippy_program" ; then warnL "$with_zippy_req was requested as the Zippy program," @@ -10113,7 +10148,7 @@ do_dir_warning=no # M4 sucks!! rpmv=`(rpm -qv xscreensaver) 2>&- | \ - sed 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/'` + sed -n 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/p'` if test \! -z "$rpmv" ; then diff --git a/configure.in b/configure.in index 342988f7..9fbdfe30 100644 --- a/configure.in +++ b/configure.in @@ -46,7 +46,7 @@ AC_DEFUN(AC_PROG_CC_ANSI, ;; *-dec-* ) - AC_MSG_RESULT(DEC: adding -std1) + AC_MSG_RESULT(DEC: adding -std1 -ieee) CC="$CC -std1" ;; @@ -745,6 +745,13 @@ AC_PROG_INSTALL AC_PROG_INSTALL_DIRS AC_PROG_MAKE_SET +# By default, autoconf sets INSTALL_SCRIPT to '${INSTALL_PROGRAM}'. +# That's wrong: it should be set to '${INSTALL}', so that one can +# implement the "install-strip" target properly (strip executables, +# but do not try to strip scripts.) +# +INSTALL_SCRIPT='${INSTALL}' + # random libc stuff AC_HEADER_STDC AC_CHECK_HEADERS(unistd.h) @@ -792,13 +799,11 @@ AC_CHECK_X_HEADER(X11/Xmu/Error.h, [have_xmu=yes]) if test "$have_xmu" = no ; then XMU_SRCS='$(UTILS_SRC)/xmu.c' XMU_OBJS='$(UTILS_BIN)/xmu.o' + XMU_LIBS='' else XMU_SRCS='' XMU_OBJS='' - SAVER_LIBS="-lXmu $SAVER_LIBS" - HACK_LIBS="-lXmu $HACK_LIBS" - MOTIF_LIBS="-lXmu $MOTIF_LIBS" - GTK_LIBS="-lXmu $GTK_LIBS" + XMU_LIBS='-lXmu' AC_DEFINE(HAVE_XMU) fi @@ -1087,7 +1092,7 @@ fi ############################################################################### # -# Check for the XF86VMODE server extension. +# Check for the XF86VMODE server extension (for virtual screens.) # ############################################################################### @@ -1124,6 +1129,54 @@ elif test "$with_xf86vmode" != no; then fi +############################################################################### +# +# Check for the XF86VMODE server extension (for gamma fading.) +# +############################################################################### + +have_xf86gamma=no +with_xf86gamma_req=unspecified +AC_ARG_WITH(xf86gamma-ext, +[ --with-xf86gamma-ext Include support for XFree86 gamma fading.], + [with_xf86gamma="$withval"; with_xf86gamma_req="$withval"], + [with_xf86gamma=yes]) + +HANDLE_X_PATH_ARG(with_xf86gamma, --with-xf86gamma-ext, xf86gamma) + +if test "$with_xf86gamma" = yes; then + + # first check for xf86vmode.h, if we haven't already + if test "$have_xf86vmode" = yes; then + have_xf86gamma=yes + else + AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86gamma=yes]) + fi + + # if that succeeded, then check for the -lXxf86vm + if test "$have_xf86gamma" = yes; then + have_xf86gamma=no + AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGamma, + [have_xf86gamma=yes], + [true], -lXext -lX11) + fi + + # pull in the lib, if we haven't already + if test "$have_xf86gamma" = yes -a "$have_xf86vmode" = no; then + SAVER_LIBS="$SAVER_LIBS -lXxf86vm" + fi + + # if that succeeded, then we've really got it. + if test "$have_xf86gamma" = yes; then + AC_DEFINE(HAVE_XF86VMODE_GAMMA) + fi + +elif test "$with_xf86gamma" != no; then + echo "error: must be yes or no: --with-xf86gamma-ext=$with_xf86vmode" + exit 1 +fi + + ############################################################################### # # Check for HP XHPDisableReset and XHPEnableReset. @@ -2328,38 +2381,6 @@ elif test "$with_readdisplay" != no; then fi -############################################################################### -# -# Check for the SGI Iris Video Library. -# -############################################################################### - -have_sgivideo=no -with_sgivideo_req=unspecified -AC_ARG_WITH(sgivideo, -[ --with-sgivideo Include support for SGI's Iris Video Library.], - [with_sgivideo="$withval"; with_sgivideo_req="$withval"], - [with_sgivideo=yes]) - -HANDLE_X_PATH_ARG(with_sgivideo, --with-sgivideo, Iris Video) - -if test "$with_sgivideo" = yes; then - AC_CHECK_X_HEADER(dmedia/vl.h, have_sgivideo=yes) - if test "$have_sgivideo" = yes; then - have_sgivideo=no - AC_CHECK_LIB(vl, vlOpenVideo, [have_sgivideo=yes]) - if test "$have_sgivideo" = yes; then - SGI_VIDEO_OBJS="$(UTILS_BIN)/sgivideo.o" - SGI_VIDEO_LIBS="-lvl" - AC_DEFINE(HAVE_SGI_VIDEO) - fi - fi -elif test "$with_sgivideo" != no; then - echo "error: must be yes or no: --with-sgivideo=$with_sgivideo" - exit 1 -fi - - ############################################################################### # # Check for a program to generate random text. @@ -2597,7 +2618,7 @@ else LOCK_OBJS='$(NOLOCK_OBJS_1)' fi -INSTALL_SETUID='$(INSTALL) $(SUID_FLAGS)' +INSTALL_SETUID='$(INSTALL_PROGRAM) $(SUID_FLAGS)' if test "$need_setuid" = yes; then NEED_SETUID=yes @@ -2653,13 +2674,12 @@ AC_SUBST(SETUID_HACKS) AC_SUBST(INSTALL_DIRS) AC_SUBST(NEED_SETUID) AC_SUBST(INSTALL_PAM) -AC_SUBST(SGI_VIDEO_OBJS) -AC_SUBST(SGI_VIDEO_LIBS) AC_SUBST(PASSWD_SRCS) AC_SUBST(PASSWD_OBJS) AC_SUBST(XMU_SRCS) AC_SUBST(XMU_OBJS) +AC_SUBST(XMU_LIBS) AC_SUBST(SAVER_GL_SRCS) AC_SUBST(SAVER_GL_OBJS) AC_SUBST(SAVER_GL_LIBS) @@ -2936,10 +2956,6 @@ if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then warn 'Use of XReadDisplay was requested, but it was not found.' fi -if test "$with_sgivideo_req" = yes -a "$have_sgivideo" = no ; then - warn 'Use of the Iris Video Library was requested, but it was not found.' -fi - if test -n "$with_zippy_req"; then if test "$with_zippy_req" != "$ac_cv_zippy_program" ; then warnL "$with_zippy_req was requested as the Zippy program," @@ -3000,7 +3016,7 @@ do_dir_warning=no # M4 sucks!! changequote(X,Y) rpmv=`(rpm -qv xscreensaver) 2>&- | \ - sed 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/'` + sed -n 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/p'` changequote([,]) if test \! -z "$rpmv" ; then diff --git a/driver/Makefile.in b/driver/Makefile.in index 787a9721..c7160142 100644 --- a/driver/Makefile.in +++ b/driver/Makefile.in @@ -28,6 +28,7 @@ LDFLAGS = @LDFLAGS@ DEFS = @DEFS@ DEFS2 = $(DEFS) -DDEFAULT_PATH_PREFIX='"@HACKDIR@"' LIBS = @LIBS@ +PERL = @PERL@ DEPEND = @DEPEND@ DEPEND_FLAGS = @DEPEND_FLAGS@ @@ -46,6 +47,7 @@ X_CFLAGS = @X_CFLAGS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ +XMU_LIBS = @XMU_LIBS@ # Note: # @@ -59,6 +61,7 @@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ # # SAVER_LIBS is the link line for "xscreensaver", and # CMD_LIBS is the link line for "xscreensaver-command". +# GETIMG_LIBS is the link line for "xscreensaver-getimage". AD_DIR = @APPDEFAULTS@ @@ -91,12 +94,12 @@ NOLOCK_SRCS_1 = lock.c NOLOCK_OBJS_1 = lock.o TEST_SRCS = test-passwd.c test-uid.c test-xdpms.c test-grab.c \ - test-apm.c xdpyinfo.c + test-apm.c test-fade.c xdpyinfo.c TEST_EXES = test-passwd test-uid test-xdpms test-grab \ - test-apm xdpyinfo + test-apm test-fade xdpyinfo -MOTIF_LIBS = @MOTIF_LIBS@ @XPM_LIBS@ -GTK_LIBS = @GTK_LIBS@ +MOTIF_LIBS = @MOTIF_LIBS@ @XPM_LIBS@ $(XMU_LIBS) +GTK_LIBS = @GTK_LIBS@ $(XMU_LIBS) XDPMS_LIBS = @XDPMS_LIBS@ @@ -121,14 +124,29 @@ DEMO_UTIL_OBJS = $(UTILS_BIN)/resources.o $(UTILS_BIN)/usleep.o \ $(UTILS_BIN)/visual.o SAVER_UTIL_SRCS = $(UTILS_SRC)/fade.c $(UTILS_SRC)/overlay.c \ - $(UTILS_SRC)/logo.c $(UTILS_SRC)/spline.c \ - $(UTILS_SRC)/yarandom.c \ + $(UTILS_SRC)/logo.c $(UTILS_SRC)/yarandom.c \ $(DEMO_UTIL_SRCS) SAVER_UTIL_OBJS = $(UTILS_BIN)/fade.o $(UTILS_BIN)/overlay.o \ - $(UTILS_BIN)/logo.o $(UTILS_BIN)/spline.o \ - $(UTILS_BIN)/yarandom.o \ + $(UTILS_BIN)/logo.o $(UTILS_BIN)/yarandom.o \ $(DEMO_UTIL_OBJS) +GETIMG_SRCS_1 = xscreensaver-getimage.c +GETIMG_OBJS_1 = xscreensaver-getimage.o + +GETIMG_SRCS = $(GETIMG_SRCS_1) \ + $(UTILS_SRC)/colorbars.o $(UTILS_SRC)/resources.o \ + $(UTILS_SRC)/yarandom.o $(UTILS_SRC)/visual.o \ + $(UTILS_SRC)/usleep.o $(UTILS_SRC)/hsv.o \ + $(UTILS_SRC)/colors.o $(UTILS_SRC)/grabscreen.o \ + $(UTILS_SRC)/logo.o prefs.o $(XMU_SRCS) + +GETIMG_OBJS = $(GETIMG_OBJS_1) \ + $(UTILS_BIN)/colorbars.o $(UTILS_BIN)/resources.o \ + $(UTILS_BIN)/yarandom.o $(UTILS_BIN)/visual.o \ + $(UTILS_BIN)/usleep.o $(UTILS_BIN)/hsv.o \ + $(UTILS_BIN)/colors.o $(UTILS_BIN)/grabscreen.o \ + $(UTILS_BIN)/logo.o prefs.o $(XMU_OBJS) + SAVER_SRCS_1 = xscreensaver.c windows.c timers.c subprocs.c \ xset.c splash.c setuid.c stderr.c SAVER_OBJS_1 = xscreensaver.o windows.o timers.o subprocs.o \ @@ -148,22 +166,29 @@ DEMO_OBJS_1 = prefs.o dpms.o $(XMU_OBJS) DEMO_SRCS = prefs.c dpms.c remote.c $(DEMO_UTIL_SRCS) DEMO_OBJS = prefs.o dpms.o remote.o $(DEMO_UTIL_OBJS) -SAVER_LIBS = $(LIBS) $(X_LIBS) @SAVER_LIBS@ $(XDPMS_LIBS) $(GL_LIBS) \ - $(X_PRE_LIBS) -lXt -lX11 -lXext $(X_EXTRA_LIBS) \ +SAVER_LIBS = $(LIBS) $(X_LIBS) $(XMU_LIBS) @SAVER_LIBS@ \ + $(XDPMS_LIBS) $(GL_LIBS) $(X_PRE_LIBS) \ + -lXt -lX11 -lXext $(X_EXTRA_LIBS) \ $(PASSWD_LIBS) CMD_LIBS = $(LIBS) $(X_LIBS) \ $(X_PRE_LIBS) -lX11 -lXext $(X_EXTRA_LIBS) -EXES = xscreensaver xscreensaver-command xscreensaver-demo +GETIMG_LIBS = $(LIBS) $(X_LIBS) \ + $(X_PRE_LIBS) -lXt -lX11 $(XMU_LIBS) -lXext $(X_EXTRA_LIBS) + +EXES = xscreensaver xscreensaver-command xscreensaver-demo \ + xscreensaver-getimage EXES2 = @ALL_DEMO_PROGRAMS@ +SCRIPTS = xscreensaver-getimage-file xscreensaver-getimage-video HDRS = XScreenSaver_ad.h xscreensaver.h prefs.h remote.h \ demo-Gtk-widgets.h demo-Gtk-stubs.h MEN = xscreensaver.man xscreensaver-demo.man \ - xscreensaver-command.man -ALL_MEN = xscreensaver.man \ - xscreensaver-demo.man xscreensaver-command.man + xscreensaver-command.man \ + xscreensaver-getimage.man \ + xscreensaver-getimage-file.man \ + xscreensaver-getimage-video.man EXTRAS = README Makefile.in XScreenSaver.ad.in xscreensaver.pam \ xscreensaver.kss xscreensaver-demo.glade \ screensaver-properties.desktop.in \ @@ -176,21 +201,21 @@ VMSFILES = compile_axp.com compile_decc.com link_axp.com link_decc.com \ TARFILES = $(EXTRAS) $(VMSFILES) $(SAVER_SRCS_1) \ $(MOTIF_SRCS) $(GTK_SRCS) $(PWENT_SRCS) \ $(KERBEROS_SRCS) $(PAM_SRCS) $(LOCK_SRCS_1) $(DEMO_SRCS_1) \ - $(CMD_SRCS) $(HDRS) $(TEST_SRCS) $(ALL_MEN) + $(CMD_SRCS) $(GETIMG_SRCS_1) $(HDRS) $(SCRIPTS) \ + $(TEST_SRCS) $(MEN) default: $(EXES) all: $(EXES) $(EXES2) tests: $(TEST_EXES) -install: install-program install-ad install-gnome install-kde \ - install-man @INSTALL_PAM@ -uninstall: uninstall-program uninstall-ad uninstall-gnome uninstall-kde \ - uninstall-man +install: install-program install-ad install-scripts \ + install-gnome install-kde install-man @INSTALL_PAM@ +uninstall: uninstall-program uninstall-ad \ + uninstall-gnome uninstall-kde uninstall-man install-strip: $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \ - INSTALL_SETUID='$(INSTALL_SETUID) -s' \ install install-program: $(EXES) @@ -220,14 +245,12 @@ install-program: $(EXES) fi ; \ echo $$inst xscreensaver $(install_prefix)$(bindir)/xscreensaver ; \ $$inst xscreensaver $(install_prefix)$(bindir)/xscreensaver - @echo $(INSTALL_PROGRAM) xscreensaver-command \ - $(install_prefix)$(bindir)/xscreensaver-command ; \ $(INSTALL_PROGRAM) xscreensaver-command \ $(install_prefix)$(bindir)/xscreensaver-command - @echo $(INSTALL_PROGRAM) xscreensaver-demo \ - $(install_prefix)$(bindir)/xscreensaver-demo ; \ $(INSTALL_PROGRAM) xscreensaver-demo \ $(install_prefix)$(bindir)/xscreensaver-demo + $(INSTALL_PROGRAM) xscreensaver-getimage \ + $(install_prefix)$(bindir)/xscreensaver-getimage install-ad: XScreenSaver.ad @if [ ! -d $(install_prefix)$(AD_DIR) ]; then \ @@ -262,6 +285,33 @@ install-ad: XScreenSaver.ad fi \ fi +install-scripts: $(SCRIPTS) munge-scripts + @for program in $(SCRIPTS); do \ + if [ -r $$program ] ; then \ + p=$$program ; \ + else \ + p=$(srcdir)/$$program ; \ + fi ; \ + echo $(INSTALL_SCRIPT) $$p \ + $(install_prefix)$(bindir)/$$program ; \ + $(INSTALL_SCRIPT) $$p \ + $(install_prefix)$(bindir)/$$program ; \ + done + +munge-scripts: $(SCRIPTS) + @tmp=/tmp/mf.$$$$ ; \ + perl="${PERL}" ; \ + for program in $(SCRIPTS); do \ + echo "adjusting location of perl in $$program..." ; \ + sed "s@^\(#!\)\(/[^ ]*/perl[^ ]*\)\(.*\)\$$@\1$$perl\3@" \ + < $(srcdir)/$$program > $$tmp ; \ + if cmp -s $(srcdir)/$$program $$tmp ; then \ + true ; \ + else \ + cat $$tmp > ./$$program ; \ + fi ; \ + done + install-man: $(MEN) @men="$(MEN)" ; \ if [ ! -d $(install_prefix)$(man1dir) ]; then \ @@ -276,7 +326,7 @@ install-man: $(MEN) done uninstall-program: - @for program in $(EXES); do \ + @for program in $(EXES) $(SCRIPTS); do \ echo rm -f $(install_prefix)$(bindir)/$$program ; \ rm -f $(install_prefix)$(bindir)/$$program ; \ done @@ -520,7 +570,7 @@ depend: XScreenSaver_ad.h $(DEPEND) -s '# DO NOT DELETE: updated by make depend' \ $(DEPEND_FLAGS) -- \ $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) -- \ - $(SAVER_SRCS) $(CMD_SRCS) + $(SAVER_SRCS) $(CMD_SRCS) $(GETIMG_SRCS_1) # Adds some dependencies to Makefile.in -- not totally accurate, but pretty # close. This excludes dependencies on files in /usr/include, etc. It tries @@ -531,7 +581,7 @@ distdepend: update_ad_version update_man_version XScreenSaver_ad.h $(DEPEND) -w 0 -f - \ -s '# DO NOT DELETE: updated by make distdepend' $(DEPEND_FLAGS) -- \ $(INCLUDES) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) -- \ - $(SAVER_SRCS_1) $(MOTIF_SRCS) $(GTK_SRCS) \ + $(SAVER_SRCS_1) $(MOTIF_SRCS) $(GTK_SRCS) $(GETIMG_SRCS_1) \ $(PWENT_SRCS) $(LOCK_SRCS_1) $(DEMO_SRCS_1) $(CMD_SRCS) \ $(TEST_SRCS) | \ ( \ @@ -605,8 +655,8 @@ $(UTILS_BIN)/usleep.o: $(UTILS_SRC)/usleep.c $(UTILS_BIN)/visual.o: $(UTILS_SRC)/visual.c $(UTILS_BIN)/xmu.o: $(UTILS_SRC)/xmu.c $(UTILS_BIN)/logo.o: $(UTILS_SRC)/logo.c -$(UTILS_BIN)/spline.o: $(UTILS_SRC)/spline.c $(UTILS_BIN)/yarandom.o: $(UTILS_SRC)/yarandom.c +$(UTILS_BIN)/colorbars.o: $(UTILS_SRC)/colorbars.c $(SAVER_UTIL_OBJS): cd $(UTILS_BIN) ; \ @@ -655,6 +705,8 @@ xscreensaver-demo-Gtk: $(DEMO_OBJS) $(GTK_OBJS) $(GTK_LIBS) $(X_PRE_LIBS) -lXt -lX11 $(XDPMS_LIBS) -lXext \ $(X_EXTRA_LIBS) +xscreensaver-getimage: $(GETIMG_OBJS) + $(CC) $(LDFLAGS) -o $@ $(GETIMG_OBJS) $(GETIMG_LIBS) -lm TEST_PASSWD_OBJS = test-passwd.o $(LOCK_OBJS_1) $(PASSWD_OBJS) \ @@ -678,6 +730,10 @@ test-grab: test-grab.o test-apm: test-apm.o $(CC) $(LDFLAGS) -o $@ test-apm.o $(SAVER_LIBS) -lapm +TEST_FADE_OBJS = test-fade.o $(UTILS_SRC)/fade.o $(DEMO_UTIL_OBJS) +test-fade: test-fade.o + $(CC) $(LDFLAGS) -o $@ $(TEST_FADE_OBJS) $(SAVER_LIBS) + xdpyinfo.o: xdpyinfo.c $(CC) -c $(INCLUDES) -DHAVE_GLX $(CFLAGS) $(X_CFLAGS) \ @@ -697,72 +753,51 @@ xdpyinfo: xdpyinfo.o xscreensaver.o: ../config.h xscreensaver.o: $(srcdir)/xscreensaver.h xscreensaver.o: $(srcdir)/prefs.h -xscreensaver.o: $(UTILS_SRC)/version.h -xscreensaver.o: $(UTILS_SRC)/yarandom.h -xscreensaver.o: $(UTILS_SRC)/resources.h -xscreensaver.o: $(UTILS_SRC)/visual.h -xscreensaver.o: $(UTILS_SRC)/usleep.h xscreensaver.o: XScreenSaver_ad.h windows.o: ../config.h windows.o: $(srcdir)/xscreensaver.h windows.o: $(srcdir)/prefs.h -windows.o: $(UTILS_SRC)/visual.h -windows.o: $(UTILS_SRC)/fade.h timers.o: ../config.h timers.o: $(srcdir)/xscreensaver.h timers.o: $(srcdir)/prefs.h subprocs.o: ../config.h subprocs.o: $(srcdir)/xscreensaver.h subprocs.o: $(srcdir)/prefs.h -subprocs.o: $(UTILS_SRC)/yarandom.h -subprocs.o: $(UTILS_SRC)/visual.h xset.o: ../config.h xset.o: $(srcdir)/xscreensaver.h xset.o: $(srcdir)/prefs.h splash.o: ../config.h splash.o: $(srcdir)/xscreensaver.h splash.o: $(srcdir)/prefs.h -splash.o: $(UTILS_SRC)/resources.h setuid.o: ../config.h setuid.o: $(srcdir)/xscreensaver.h setuid.o: $(srcdir)/prefs.h stderr.o: ../config.h stderr.o: $(srcdir)/xscreensaver.h stderr.o: $(srcdir)/prefs.h -stderr.o: $(UTILS_SRC)/resources.h -stderr.o: $(UTILS_SRC)/visual.h demo-Xm.o: ../config.h -demo-Xm.o: $(UTILS_SRC)/version.h demo-Xm.o: $(srcdir)/prefs.h -demo-Xm.o: $(UTILS_SRC)/resources.h -demo-Xm.o: $(UTILS_SRC)/visual.h demo-Xm.o: $(srcdir)/remote.h -demo-Xm.o: $(UTILS_SRC)/usleep.h demo-Xm.o: XScreenSaver_ad.h demo-Xm-widgets.o: ../config.h demo-Gtk.o: ../config.h -demo-Gtk.o: $(UTILS_SRC)/version.h demo-Gtk.o: $(srcdir)/prefs.h -demo-Gtk.o: $(UTILS_SRC)/resources.h -demo-Gtk.o: $(UTILS_SRC)/visual.h demo-Gtk.o: $(srcdir)/remote.h -demo-Gtk.o: $(UTILS_SRC)/usleep.h -demo-Gtk.o: $(UTILS_SRC)/logo-50.xpm -demo-Gtk.o: $(UTILS_SRC)/logo-180.xpm demo-Gtk.o: $(srcdir)/demo-Gtk-widgets.h demo-Gtk.o: XScreenSaver_ad.h demo-Gtk-widgets.o: ../config.h demo-Gtk-widgets.o: $(srcdir)/demo-Gtk-stubs.h demo-Gtk-widgets.o: $(srcdir)/demo-Gtk-widgets.h +xscreensaver-getimage.o: ../config.h +xscreensaver-getimage.o: $(srcdir)/prefs.h +xscreensaver-getimage.o: XScreenSaver_ad.h passwd-pwent.o: ../config.h lock.o: ../config.h lock.o: $(srcdir)/xscreensaver.h lock.o: $(srcdir)/prefs.h -lock.o: $(UTILS_SRC)/resources.h passwd.o: ../config.h prefs.o: ../config.h prefs.o: $(srcdir)/prefs.h -prefs.o: $(UTILS_SRC)/resources.h dpms.o: ../config.h dpms.o: $(srcdir)/xscreensaver.h dpms.o: $(srcdir)/prefs.h @@ -770,16 +805,15 @@ remote.o: ../config.h remote.o: $(srcdir)/remote.h xscreensaver-command.o: ../config.h xscreensaver-command.o: $(srcdir)/remote.h -xscreensaver-command.o: $(UTILS_SRC)/version.h test-passwd.o: ../config.h test-passwd.o: $(srcdir)/xscreensaver.h test-passwd.o: $(srcdir)/prefs.h -test-passwd.o: $(UTILS_SRC)/resources.h -test-passwd.o: $(UTILS_SRC)/version.h -test-passwd.o: $(UTILS_SRC)/visual.h test-passwd.o: XScreenSaver_ad.h test-uid.o: ../config.h test-xdpms.o: ../config.h test-grab.o: ../config.h test-apm.o: ../config.h +test-fade.o: ../config.h +test-fade.o: $(srcdir)/xscreensaver.h +test-fade.o: $(srcdir)/prefs.h diff --git a/driver/XScreenSaver.ad.in b/driver/XScreenSaver.ad.in index abb3dcab..e2d79ebd 100644 --- a/driver/XScreenSaver.ad.in +++ b/driver/XScreenSaver.ad.in @@ -4,8 +4,8 @@ ! a screen saver and locker for the X window system ! by Jamie Zawinski ! -! version 3.31 -! 29-Mar-2001 +! version 3.32 +! 15-Apr-2001 ! ! See "man xscreensaver" for more info. The latest version is always ! available at http://www.jwz.org/xscreensaver/ @@ -36,6 +36,10 @@ *dpmsStandby: 2:00:00 *dpmsSuspend: 2:00:00 *dpmsOff: 4:00:00 +*grabDesktopImages: True +*grabVideoFrames: False +*chooseRandomImages: False +*imageDirectory: *nice: 10 *lock: False *lockVTs: True diff --git a/driver/XScreenSaver_ad.h b/driver/XScreenSaver_ad.h index 7669ee63..f45b5c87 100644 --- a/driver/XScreenSaver_ad.h +++ b/driver/XScreenSaver_ad.h @@ -9,6 +9,10 @@ "*dpmsStandby: 2:00:00", "*dpmsSuspend: 2:00:00", "*dpmsOff: 4:00:00", +"*grabDesktopImages: True", +"*grabVideoFrames: False", +"*chooseRandomImages: False", +"*imageDirectory: ", "*nice: 10", "*lock: False", "*lockVTs: True", diff --git a/driver/demo-Gtk-stubs.h b/driver/demo-Gtk-stubs.h index 55c4358f..a9fadcd3 100644 --- a/driver/demo-Gtk-stubs.h +++ b/driver/demo-Gtk-stubs.h @@ -76,11 +76,13 @@ notebook_switch_page_cb (GtkNotebook *notebook, gpointer user_data); void -pref_changed_cb (GtkNotebook *notebook, - GtkNotebookPage *page, - gint page_num, +pref_changed_cb (GtkToggleButton *togglebutton, gpointer user_data); void enabled_cb (GtkToggleButton *togglebutton, gpointer user_data); + +void +browse_image_dir_cb (GtkButton *button, + gpointer user_data); diff --git a/driver/demo-Gtk-widgets.c b/driver/demo-Gtk-widgets.c index 8066bbb5..08392c1f 100644 --- a/driver/demo-Gtk-widgets.c +++ b/driver/demo-Gtk-widgets.c @@ -73,18 +73,7 @@ create_xscreensaver_demo (void) GtkWidget *demo_tab; GtkWidget *options_vbox; GtkWidget *options_table; - GtkWidget *blanking_frame; - GtkWidget *blanking_table; - GtkWidget *lock_text; - GtkWidget *cycle_text; - GtkWidget *timeout_text; - GtkWidget *timeout_label; - GtkWidget *cycle_label; - GtkWidget *lock_label; - GtkWidget *blanking_dummy; - GtkWidget *blanking_hr; - GtkWidget *lock_button_eventbox; - GtkWidget *lock_button; + GtkWidget *options_table_2; GtkWidget *dpms_frame; GtkWidget *dpms_table; GtkWidget *dpms_off_text; @@ -96,26 +85,50 @@ create_xscreensaver_demo (void) GtkWidget *dpms_dummy; GtkWidget *dpms_button_eventbox; GtkWidget *dpms_button; - GtkWidget *diag_frame; - GtkWidget *diag_table; - GtkWidget *verbose_button_eventbox; - GtkWidget *verbose_button; - GtkWidget *capture_button_eventbox; - GtkWidget *capture_button; - GtkWidget *splash_button_eventbox; - GtkWidget *splash_button; GtkWidget *cmap_frame; GtkWidget *cmap_table; GtkWidget *fade_text; GtkWidget *cmap_dummy; GtkWidget *fade_label; - GtkWidget *cmap_hr; GtkWidget *install_button_eventbox; GtkWidget *install_button; GtkWidget *fade_button_eventbox; GtkWidget *fade_button; GtkWidget *unfade_button_eventbox; GtkWidget *unfade_button; + GtkWidget *cmap_hr; + GtkWidget *options_table_1; + GtkWidget *grab_frame; + GtkWidget *grab_table; + GtkWidget *grab_image_eventbox; + GtkWidget *grab_image_button; + GtkWidget *image_browse_button; + GtkWidget *grab_video_eventbox; + GtkWidget *grab_video_button; + GtkWidget *grab_desk_eventbox; + GtkWidget *grab_desk_button; + GtkWidget *grab_dummy; + GtkWidget *image_text; + GtkWidget *blanking_frame; + GtkWidget *blanking_table; + GtkWidget *lock_text; + GtkWidget *cycle_text; + GtkWidget *timeout_text; + GtkWidget *timeout_label; + GtkWidget *cycle_label; + GtkWidget *lock_label; + GtkWidget *blanking_dummy; + GtkWidget *lock_button_eventbox; + GtkWidget *lock_button; + GtkWidget *blanking_hr; + GtkWidget *diag_frame; + GtkWidget *diag_table; + GtkWidget *splash_button_eventbox; + GtkWidget *splash_button; + GtkWidget *capture_button_eventbox; + GtkWidget *capture_button; + GtkWidget *verbose_button_eventbox; + GtkWidget *verbose_button; GtkWidget *options_tab; GtkAccelGroup *accel_group; GtkTooltips *tooltips; @@ -128,7 +141,6 @@ create_xscreensaver_demo (void) gtk_widget_set_name (xscreensaver_demo, "xscreensaver_demo"); gtk_object_set_data (GTK_OBJECT (xscreensaver_demo), "xscreensaver_demo", xscreensaver_demo); gtk_window_set_title (GTK_WINDOW (xscreensaver_demo), "XScreenSaver"); - gtk_window_set_default_size (GTK_WINDOW (xscreensaver_demo), 600, 400); gtk_window_set_policy (GTK_WINDOW (xscreensaver_demo), TRUE, TRUE, FALSE); gtk_window_set_wmclass (GTK_WINDOW (xscreensaver_demo), "xscreensaver", "XScreenSaver"); @@ -600,155 +612,32 @@ create_xscreensaver_demo (void) gtk_widget_show (options_vbox); gtk_container_add (GTK_CONTAINER (notebook), options_vbox); - options_table = gtk_table_new (2, 2, TRUE); + options_table = gtk_table_new (1, 2, TRUE); gtk_widget_set_name (options_table, "options_table"); gtk_widget_ref (options_table); gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "options_table", options_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (options_table); gtk_box_pack_start (GTK_BOX (options_vbox), options_table, FALSE, FALSE, 0); - gtk_container_set_border_width (GTK_CONTAINER (options_table), 10); - gtk_table_set_row_spacings (GTK_TABLE (options_table), 2); - - blanking_frame = gtk_frame_new ("Blanking and Locking:"); - gtk_widget_set_name (blanking_frame, "blanking_frame"); - gtk_widget_ref (blanking_frame); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_frame", blanking_frame, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (blanking_frame); - gtk_table_attach (GTK_TABLE (options_table), blanking_frame, 0, 1, 0, 1, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); - gtk_container_set_border_width (GTK_CONTAINER (blanking_frame), 10); - - blanking_table = gtk_table_new (5, 3, FALSE); - gtk_widget_set_name (blanking_table, "blanking_table"); - gtk_widget_ref (blanking_table); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_table", blanking_table, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (blanking_table); - gtk_container_add (GTK_CONTAINER (blanking_frame), blanking_table); - gtk_container_set_border_width (GTK_CONTAINER (blanking_table), 10); - gtk_table_set_row_spacings (GTK_TABLE (blanking_table), 2); - gtk_table_set_col_spacings (GTK_TABLE (blanking_table), 10); - - lock_text = gtk_entry_new_with_max_length (8); - gtk_widget_set_name (lock_text, "lock_text"); - gtk_widget_ref (lock_text); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_text", lock_text, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lock_text); - gtk_table_attach (GTK_TABLE (blanking_table), lock_text, 1, 2, 4, 5, - (GtkAttachOptions) (0), - (GtkAttachOptions) (0), 0, 0); - gtk_tooltips_set_tip (tooltips, lock_text, "How long after the screen saver has activated until a password will be required (if `Require Password' is also set.)", NULL); - - cycle_text = gtk_entry_new_with_max_length (8); - gtk_widget_set_name (cycle_text, "cycle_text"); - gtk_widget_ref (cycle_text); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_text", cycle_text, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (cycle_text); - gtk_table_attach (GTK_TABLE (blanking_table), cycle_text, 1, 2, 1, 2, - (GtkAttachOptions) (0), - (GtkAttachOptions) (0), 0, 0); - gtk_tooltips_set_tip (tooltips, cycle_text, "How long each demo will be run before moving on to another.", NULL); - - timeout_text = gtk_entry_new_with_max_length (8); - gtk_widget_set_name (timeout_text, "timeout_text"); - gtk_widget_ref (timeout_text); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_text", timeout_text, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (timeout_text); - gtk_table_attach (GTK_TABLE (blanking_table), timeout_text, 1, 2, 0, 1, - (GtkAttachOptions) (0), - (GtkAttachOptions) (0), 0, 0); - gtk_tooltips_set_tip (tooltips, timeout_text, "How long until the screen saver activates and begins running demos.", NULL); - - timeout_label = gtk_label_new ("Blank After:"); - gtk_widget_set_name (timeout_label, "timeout_label"); - gtk_widget_ref (timeout_label); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_label", timeout_label, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (timeout_label); - gtk_table_attach (GTK_TABLE (blanking_table), timeout_label, 0, 1, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify (GTK_LABEL (timeout_label), GTK_JUSTIFY_RIGHT); - gtk_misc_set_alignment (GTK_MISC (timeout_label), 1, 0.5); - - cycle_label = gtk_label_new ("Cycle After:"); - gtk_widget_set_name (cycle_label, "cycle_label"); - gtk_widget_ref (cycle_label); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_label", cycle_label, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (cycle_label); - gtk_table_attach (GTK_TABLE (blanking_table), cycle_label, 0, 1, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify (GTK_LABEL (cycle_label), GTK_JUSTIFY_RIGHT); - gtk_misc_set_alignment (GTK_MISC (cycle_label), 1, 0.5); - - lock_label = gtk_label_new ("Lock After:"); - gtk_widget_set_name (lock_label, "lock_label"); - gtk_widget_ref (lock_label); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_label", lock_label, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lock_label); - gtk_table_attach (GTK_TABLE (blanking_table), lock_label, 0, 1, 4, 5, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify (GTK_LABEL (lock_label), GTK_JUSTIFY_RIGHT); - gtk_misc_set_alignment (GTK_MISC (lock_label), 1, 0.5); - - blanking_dummy = gtk_label_new (""); - gtk_widget_set_name (blanking_dummy, "blanking_dummy"); - gtk_widget_ref (blanking_dummy); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_dummy", blanking_dummy, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (blanking_dummy); - gtk_table_attach (GTK_TABLE (blanking_table), blanking_dummy, 2, 3, 4, 5, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify (GTK_LABEL (blanking_dummy), GTK_JUSTIFY_LEFT); - blanking_hr = gtk_hseparator_new (); - gtk_widget_set_name (blanking_hr, "blanking_hr"); - gtk_widget_ref (blanking_hr); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_hr", blanking_hr, + options_table_2 = gtk_table_new (2, 1, FALSE); + gtk_widget_set_name (options_table_2, "options_table_2"); + gtk_widget_ref (options_table_2); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "options_table_2", options_table_2, (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (blanking_hr); - gtk_table_attach (GTK_TABLE (blanking_table), blanking_hr, 0, 3, 2, 3, + gtk_widget_show (options_table_2); + gtk_table_attach (GTK_TABLE (options_table), options_table_2, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); - lock_button_eventbox = gtk_event_box_new (); - gtk_widget_set_name (lock_button_eventbox, "lock_button_eventbox"); - gtk_widget_ref (lock_button_eventbox); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_button_eventbox", lock_button_eventbox, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lock_button_eventbox); - gtk_table_attach (GTK_TABLE (blanking_table), lock_button_eventbox, 0, 3, 3, 4, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_FILL), 0, 0); - gtk_tooltips_set_tip (tooltips, lock_button_eventbox, "Whether a password should be required to unblank the screen.", NULL); - - lock_button = gtk_check_button_new_with_label ("Require Password"); - gtk_widget_set_name (lock_button, "lock_button"); - gtk_widget_ref (lock_button); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_button", lock_button, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lock_button); - gtk_container_add (GTK_CONTAINER (lock_button_eventbox), lock_button); - dpms_frame = gtk_frame_new ("Display Power Management:"); gtk_widget_set_name (dpms_frame, "dpms_frame"); gtk_widget_ref (dpms_frame); gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_frame", dpms_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (dpms_frame); - gtk_table_attach (GTK_TABLE (options_table), dpms_frame, 1, 2, 0, 1, - (GtkAttachOptions) (GTK_FILL), + gtk_table_attach (GTK_TABLE (options_table_2), dpms_frame, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); gtk_container_set_border_width (GTK_CONTAINER (dpms_frame), 10); @@ -863,94 +752,14 @@ create_xscreensaver_demo (void) gtk_container_add (GTK_CONTAINER (dpms_button_eventbox), dpms_button); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dpms_button), TRUE); - diag_frame = gtk_frame_new ("Diagnostics:"); - gtk_widget_set_name (diag_frame, "diag_frame"); - gtk_widget_ref (diag_frame); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "diag_frame", diag_frame, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (diag_frame); - gtk_table_attach (GTK_TABLE (options_table), diag_frame, 0, 1, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_FILL), 0, 0); - gtk_container_set_border_width (GTK_CONTAINER (diag_frame), 10); - - diag_table = gtk_table_new (3, 1, FALSE); - gtk_widget_set_name (diag_table, "diag_table"); - gtk_widget_ref (diag_table); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "diag_table", diag_table, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (diag_table); - gtk_container_add (GTK_CONTAINER (diag_frame), diag_table); - gtk_container_set_border_width (GTK_CONTAINER (diag_table), 10); - gtk_table_set_row_spacings (GTK_TABLE (diag_table), 2); - gtk_table_set_col_spacings (GTK_TABLE (diag_table), 10); - - verbose_button_eventbox = gtk_event_box_new (); - gtk_widget_set_name (verbose_button_eventbox, "verbose_button_eventbox"); - gtk_widget_ref (verbose_button_eventbox); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "verbose_button_eventbox", verbose_button_eventbox, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (verbose_button_eventbox); - gtk_table_attach (GTK_TABLE (diag_table), verbose_button_eventbox, 0, 1, 0, 1, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (GTK_FILL), 0, 0); - gtk_tooltips_set_tip (tooltips, verbose_button_eventbox, "Whether the daemon should print lots of debugging information.", NULL); - - verbose_button = gtk_check_button_new_with_label ("Verbose Diagnostics"); - gtk_widget_set_name (verbose_button, "verbose_button"); - gtk_widget_ref (verbose_button); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "verbose_button", verbose_button, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (verbose_button); - gtk_container_add (GTK_CONTAINER (verbose_button_eventbox), verbose_button); - - capture_button_eventbox = gtk_event_box_new (); - gtk_widget_set_name (capture_button_eventbox, "capture_button_eventbox"); - gtk_widget_ref (capture_button_eventbox); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "capture_button_eventbox", capture_button_eventbox, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (capture_button_eventbox); - gtk_table_attach (GTK_TABLE (diag_table), capture_button_eventbox, 0, 1, 1, 2, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (GTK_FILL), 0, 0); - gtk_tooltips_set_tip (tooltips, capture_button_eventbox, "Whether the stdout and stderr streams of graphics demos should be displayed on the xscreensaver window.", NULL); - - capture_button = gtk_check_button_new_with_label ("Display Subprocess Errors"); - gtk_widget_set_name (capture_button, "capture_button"); - gtk_widget_ref (capture_button); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "capture_button", capture_button, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (capture_button); - gtk_container_add (GTK_CONTAINER (capture_button_eventbox), capture_button); - - splash_button_eventbox = gtk_event_box_new (); - gtk_widget_set_name (splash_button_eventbox, "splash_button_eventbox"); - gtk_widget_ref (splash_button_eventbox); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "splash_button_eventbox", splash_button_eventbox, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (splash_button_eventbox); - gtk_table_attach (GTK_TABLE (diag_table), splash_button_eventbox, 0, 1, 2, 3, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_tooltips_set_tip (tooltips, splash_button_eventbox, "Whether the splash screen (with the version number and `Help' button) should be momentarily displayed when the daemon first starts up.", NULL); - - splash_button = gtk_check_button_new_with_label ("Display Splash Screen at Startup"); - gtk_widget_set_name (splash_button, "splash_button"); - gtk_widget_ref (splash_button); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "splash_button", splash_button, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (splash_button); - gtk_container_add (GTK_CONTAINER (splash_button_eventbox), splash_button); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (splash_button), TRUE); - - cmap_frame = gtk_frame_new ("Colormaps: (8-bit displays only)"); + cmap_frame = gtk_frame_new ("Colormaps:"); gtk_widget_set_name (cmap_frame, "cmap_frame"); gtk_widget_ref (cmap_frame); gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_frame", cmap_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (cmap_frame); - gtk_table_attach (GTK_TABLE (options_table), cmap_frame, 1, 2, 1, 2, - (GtkAttachOptions) (GTK_FILL), + gtk_table_attach (GTK_TABLE (options_table_2), cmap_frame, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); gtk_container_set_border_width (GTK_CONTAINER (cmap_frame), 10); @@ -999,16 +808,6 @@ create_xscreensaver_demo (void) gtk_label_set_justify (GTK_LABEL (fade_label), GTK_JUSTIFY_RIGHT); gtk_misc_set_alignment (GTK_MISC (fade_label), 1, 0.5); - cmap_hr = gtk_hseparator_new (); - gtk_widget_set_name (cmap_hr, "cmap_hr"); - gtk_widget_ref (cmap_hr); - gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_hr", cmap_hr, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (cmap_hr); - gtk_table_attach (GTK_TABLE (cmap_table), cmap_hr, 0, 3, 1, 2, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); - install_button_eventbox = gtk_event_box_new (); gtk_widget_set_name (install_button_eventbox, "install_button_eventbox"); gtk_widget_ref (install_button_eventbox); @@ -1066,6 +865,347 @@ create_xscreensaver_demo (void) gtk_widget_show (unfade_button); gtk_container_add (GTK_CONTAINER (unfade_button_eventbox), unfade_button); + cmap_hr = gtk_hseparator_new (); + gtk_widget_set_name (cmap_hr, "cmap_hr"); + gtk_widget_ref (cmap_hr); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_hr", cmap_hr, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (cmap_hr); + gtk_table_attach (GTK_TABLE (cmap_table), cmap_hr, 0, 3, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 2); + + options_table_1 = gtk_table_new (3, 1, FALSE); + gtk_widget_set_name (options_table_1, "options_table_1"); + gtk_widget_ref (options_table_1); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "options_table_1", options_table_1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (options_table_1); + gtk_table_attach (GTK_TABLE (options_table), options_table_1, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); + + grab_frame = gtk_frame_new ("Image Manipulation:"); + gtk_widget_set_name (grab_frame, "grab_frame"); + gtk_widget_ref (grab_frame); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_frame", grab_frame, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (grab_frame); + gtk_table_attach (GTK_TABLE (options_table_1), grab_frame, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + gtk_container_set_border_width (GTK_CONTAINER (grab_frame), 10); + + grab_table = gtk_table_new (4, 3, FALSE); + gtk_widget_set_name (grab_table, "grab_table"); + gtk_widget_ref (grab_table); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_table", grab_table, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (grab_table); + gtk_container_add (GTK_CONTAINER (grab_frame), grab_table); + gtk_container_set_border_width (GTK_CONTAINER (grab_table), 10); + + grab_image_eventbox = gtk_event_box_new (); + gtk_widget_set_name (grab_image_eventbox, "grab_image_eventbox"); + gtk_widget_ref (grab_image_eventbox); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_image_eventbox", grab_image_eventbox, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (grab_image_eventbox); + gtk_table_attach (GTK_TABLE (grab_table), grab_image_eventbox, 0, 3, 2, 3, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + gtk_tooltips_set_tip (tooltips, grab_image_eventbox, "Whether the image-manipulating modes should operate on random images loaded from disk.", NULL); + + grab_image_button = gtk_check_button_new_with_label ("Choose Random Image:"); + gtk_widget_set_name (grab_image_button, "grab_image_button"); + gtk_widget_ref (grab_image_button); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_image_button", grab_image_button, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (grab_image_button); + gtk_container_add (GTK_CONTAINER (grab_image_eventbox), grab_image_button); + + image_browse_button = gtk_button_new_with_label ("Browse"); + gtk_widget_set_name (image_browse_button, "image_browse_button"); + gtk_widget_ref (image_browse_button); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "image_browse_button", image_browse_button, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (image_browse_button); + gtk_table_attach (GTK_TABLE (grab_table), image_browse_button, 2, 3, 3, 4, + (GtkAttachOptions) (0), + (GtkAttachOptions) (0), 4, 0); + + grab_video_eventbox = gtk_event_box_new (); + gtk_widget_set_name (grab_video_eventbox, "grab_video_eventbox"); + gtk_widget_ref (grab_video_eventbox); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_video_eventbox", grab_video_eventbox, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (grab_video_eventbox); + gtk_table_attach (GTK_TABLE (grab_table), grab_video_eventbox, 0, 3, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + gtk_tooltips_set_tip (tooltips, grab_video_eventbox, "Whether the image-manipulating modes should operate on images captured from the system's video input (if there is one).", NULL); + + grab_video_button = gtk_check_button_new_with_label ("Grab Video Frames"); + gtk_widget_set_name (grab_video_button, "grab_video_button"); + gtk_widget_ref (grab_video_button); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_video_button", grab_video_button, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (grab_video_button); + gtk_container_add (GTK_CONTAINER (grab_video_eventbox), grab_video_button); + + grab_desk_eventbox = gtk_event_box_new (); + gtk_widget_set_name (grab_desk_eventbox, "grab_desk_eventbox"); + gtk_widget_ref (grab_desk_eventbox); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_desk_eventbox", grab_desk_eventbox, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (grab_desk_eventbox); + gtk_table_attach (GTK_TABLE (grab_table), grab_desk_eventbox, 0, 3, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + gtk_tooltips_set_tip (tooltips, grab_desk_eventbox, "Whether the image-manipulating modes should be allowed to operate on an image of your desktop.", NULL); + + grab_desk_button = gtk_check_button_new_with_label ("Grab Desktop Images"); + gtk_widget_set_name (grab_desk_button, "grab_desk_button"); + gtk_widget_ref (grab_desk_button); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_desk_button", grab_desk_button, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (grab_desk_button); + gtk_container_add (GTK_CONTAINER (grab_desk_eventbox), grab_desk_button); + + grab_dummy = gtk_label_new (""); + gtk_widget_set_name (grab_dummy, "grab_dummy"); + gtk_widget_ref (grab_dummy); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_dummy", grab_dummy, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (grab_dummy); + gtk_table_attach (GTK_TABLE (grab_table), grab_dummy, 0, 1, 3, 4, + (GtkAttachOptions) (GTK_SHRINK | GTK_FILL), + (GtkAttachOptions) (GTK_SHRINK), 0, 0); + gtk_label_set_justify (GTK_LABEL (grab_dummy), GTK_JUSTIFY_LEFT); + gtk_misc_set_padding (GTK_MISC (grab_dummy), 8, 0); + + image_text = gtk_entry_new (); + gtk_widget_set_name (image_text, "image_text"); + gtk_widget_ref (image_text); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "image_text", image_text, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (image_text); + gtk_table_attach (GTK_TABLE (grab_table), image_text, 1, 2, 3, 4, + (GtkAttachOptions) (GTK_SHRINK | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_tooltips_set_tip (tooltips, image_text, "The directory from which images will be randomly chosen.", NULL); + + blanking_frame = gtk_frame_new ("Blanking and Locking:"); + gtk_widget_set_name (blanking_frame, "blanking_frame"); + gtk_widget_ref (blanking_frame); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_frame", blanking_frame, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (blanking_frame); + gtk_table_attach (GTK_TABLE (options_table_1), blanking_frame, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + gtk_container_set_border_width (GTK_CONTAINER (blanking_frame), 10); + + blanking_table = gtk_table_new (5, 3, FALSE); + gtk_widget_set_name (blanking_table, "blanking_table"); + gtk_widget_ref (blanking_table); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_table", blanking_table, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (blanking_table); + gtk_container_add (GTK_CONTAINER (blanking_frame), blanking_table); + gtk_container_set_border_width (GTK_CONTAINER (blanking_table), 10); + gtk_table_set_row_spacings (GTK_TABLE (blanking_table), 2); + gtk_table_set_col_spacings (GTK_TABLE (blanking_table), 10); + + lock_text = gtk_entry_new_with_max_length (8); + gtk_widget_set_name (lock_text, "lock_text"); + gtk_widget_ref (lock_text); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_text", lock_text, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (lock_text); + gtk_table_attach (GTK_TABLE (blanking_table), lock_text, 1, 2, 4, 5, + (GtkAttachOptions) (0), + (GtkAttachOptions) (0), 0, 0); + gtk_tooltips_set_tip (tooltips, lock_text, "How long after the screen saver has activated until a password will be required (if `Require Password' is also set.)", NULL); + + cycle_text = gtk_entry_new_with_max_length (8); + gtk_widget_set_name (cycle_text, "cycle_text"); + gtk_widget_ref (cycle_text); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_text", cycle_text, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (cycle_text); + gtk_table_attach (GTK_TABLE (blanking_table), cycle_text, 1, 2, 1, 2, + (GtkAttachOptions) (0), + (GtkAttachOptions) (0), 0, 0); + gtk_tooltips_set_tip (tooltips, cycle_text, "How long each demo will be run before moving on to another.", NULL); + + timeout_text = gtk_entry_new_with_max_length (8); + gtk_widget_set_name (timeout_text, "timeout_text"); + gtk_widget_ref (timeout_text); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_text", timeout_text, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (timeout_text); + gtk_table_attach (GTK_TABLE (blanking_table), timeout_text, 1, 2, 0, 1, + (GtkAttachOptions) (0), + (GtkAttachOptions) (0), 0, 0); + gtk_tooltips_set_tip (tooltips, timeout_text, "How long until the screen saver activates and begins running demos.", NULL); + + timeout_label = gtk_label_new ("Blank After:"); + gtk_widget_set_name (timeout_label, "timeout_label"); + gtk_widget_ref (timeout_label); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_label", timeout_label, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (timeout_label); + gtk_table_attach (GTK_TABLE (blanking_table), timeout_label, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_label_set_justify (GTK_LABEL (timeout_label), GTK_JUSTIFY_RIGHT); + gtk_misc_set_alignment (GTK_MISC (timeout_label), 1, 0.5); + + cycle_label = gtk_label_new ("Cycle After:"); + gtk_widget_set_name (cycle_label, "cycle_label"); + gtk_widget_ref (cycle_label); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_label", cycle_label, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (cycle_label); + gtk_table_attach (GTK_TABLE (blanking_table), cycle_label, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_label_set_justify (GTK_LABEL (cycle_label), GTK_JUSTIFY_RIGHT); + gtk_misc_set_alignment (GTK_MISC (cycle_label), 1, 0.5); + + lock_label = gtk_label_new ("Lock After:"); + gtk_widget_set_name (lock_label, "lock_label"); + gtk_widget_ref (lock_label); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_label", lock_label, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (lock_label); + gtk_table_attach (GTK_TABLE (blanking_table), lock_label, 0, 1, 4, 5, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_label_set_justify (GTK_LABEL (lock_label), GTK_JUSTIFY_RIGHT); + gtk_misc_set_alignment (GTK_MISC (lock_label), 1, 0.5); + + blanking_dummy = gtk_label_new (""); + gtk_widget_set_name (blanking_dummy, "blanking_dummy"); + gtk_widget_ref (blanking_dummy); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_dummy", blanking_dummy, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (blanking_dummy); + gtk_table_attach (GTK_TABLE (blanking_table), blanking_dummy, 2, 3, 4, 5, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_label_set_justify (GTK_LABEL (blanking_dummy), GTK_JUSTIFY_LEFT); + + lock_button_eventbox = gtk_event_box_new (); + gtk_widget_set_name (lock_button_eventbox, "lock_button_eventbox"); + gtk_widget_ref (lock_button_eventbox); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_button_eventbox", lock_button_eventbox, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (lock_button_eventbox); + gtk_table_attach (GTK_TABLE (blanking_table), lock_button_eventbox, 0, 3, 3, 4, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + gtk_tooltips_set_tip (tooltips, lock_button_eventbox, "Whether a password should be required to unblank the screen.", NULL); + + lock_button = gtk_check_button_new_with_label ("Require Password"); + gtk_widget_set_name (lock_button, "lock_button"); + gtk_widget_ref (lock_button); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_button", lock_button, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (lock_button); + gtk_container_add (GTK_CONTAINER (lock_button_eventbox), lock_button); + + blanking_hr = gtk_hseparator_new (); + gtk_widget_set_name (blanking_hr, "blanking_hr"); + gtk_widget_ref (blanking_hr); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "blanking_hr", blanking_hr, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (blanking_hr); + gtk_table_attach (GTK_TABLE (blanking_table), blanking_hr, 0, 3, 2, 3, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 2); + + diag_frame = gtk_frame_new ("Diagnostics:"); + gtk_widget_set_name (diag_frame, "diag_frame"); + gtk_widget_ref (diag_frame); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "diag_frame", diag_frame, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (diag_frame); + gtk_table_attach (GTK_TABLE (options_table_1), diag_frame, 0, 1, 2, 3, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + gtk_container_set_border_width (GTK_CONTAINER (diag_frame), 10); + + diag_table = gtk_table_new (3, 1, FALSE); + gtk_widget_set_name (diag_table, "diag_table"); + gtk_widget_ref (diag_table); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "diag_table", diag_table, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (diag_table); + gtk_container_add (GTK_CONTAINER (diag_frame), diag_table); + gtk_container_set_border_width (GTK_CONTAINER (diag_table), 10); + gtk_table_set_row_spacings (GTK_TABLE (diag_table), 2); + gtk_table_set_col_spacings (GTK_TABLE (diag_table), 10); + + splash_button_eventbox = gtk_event_box_new (); + gtk_widget_set_name (splash_button_eventbox, "splash_button_eventbox"); + gtk_widget_ref (splash_button_eventbox); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "splash_button_eventbox", splash_button_eventbox, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (splash_button_eventbox); + gtk_table_attach (GTK_TABLE (diag_table), splash_button_eventbox, 0, 1, 2, 3, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_tooltips_set_tip (tooltips, splash_button_eventbox, "Whether the splash screen (with the version number and `Help' button) should be momentarily displayed when the daemon first starts up.", NULL); + + splash_button = gtk_check_button_new_with_label ("Display Splash Screen at Startup"); + gtk_widget_set_name (splash_button, "splash_button"); + gtk_widget_ref (splash_button); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "splash_button", splash_button, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (splash_button); + gtk_container_add (GTK_CONTAINER (splash_button_eventbox), splash_button); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (splash_button), TRUE); + + capture_button_eventbox = gtk_event_box_new (); + gtk_widget_set_name (capture_button_eventbox, "capture_button_eventbox"); + gtk_widget_ref (capture_button_eventbox); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "capture_button_eventbox", capture_button_eventbox, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (capture_button_eventbox); + gtk_table_attach (GTK_TABLE (diag_table), capture_button_eventbox, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_tooltips_set_tip (tooltips, capture_button_eventbox, "Whether the stdout and stderr streams of graphics demos should be displayed on the xscreensaver window.", NULL); + + capture_button = gtk_check_button_new_with_label ("Display Subprocess Errors"); + gtk_widget_set_name (capture_button, "capture_button"); + gtk_widget_ref (capture_button); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "capture_button", capture_button, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (capture_button); + gtk_container_add (GTK_CONTAINER (capture_button_eventbox), capture_button); + + verbose_button_eventbox = gtk_event_box_new (); + gtk_widget_set_name (verbose_button_eventbox, "verbose_button_eventbox"); + gtk_widget_ref (verbose_button_eventbox); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "verbose_button_eventbox", verbose_button_eventbox, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (verbose_button_eventbox); + gtk_table_attach (GTK_TABLE (diag_table), verbose_button_eventbox, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_tooltips_set_tip (tooltips, verbose_button_eventbox, "Whether the daemon should print lots of debugging information.", NULL); + + verbose_button = gtk_check_button_new_with_label ("Verbose Diagnostics"); + gtk_widget_set_name (verbose_button, "verbose_button"); + gtk_widget_ref (verbose_button); + gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "verbose_button", verbose_button, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (verbose_button); + gtk_container_add (GTK_CONTAINER (verbose_button_eventbox), verbose_button); + options_tab = gtk_label_new ("Screensaver Options"); gtk_widget_set_name (options_tab, "options_tab"); gtk_widget_ref (options_tab); @@ -1122,70 +1262,88 @@ create_xscreensaver_demo (void) gtk_signal_connect (GTK_OBJECT (manual), "clicked", GTK_SIGNAL_FUNC (manual_cb), NULL); - gtk_signal_connect (GTK_OBJECT (lock_text), "activate", + gtk_signal_connect (GTK_OBJECT (dpms_off_text), "activate", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (lock_text), "focus_out_event", + gtk_signal_connect (GTK_OBJECT (dpms_off_text), "focus_out_event", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (cycle_text), "activate", + gtk_signal_connect (GTK_OBJECT (dpms_suspend_text), "activate", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (cycle_text), "focus_out_event", + gtk_signal_connect (GTK_OBJECT (dpms_suspend_text), "focus_out_event", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (timeout_text), "activate", + gtk_signal_connect (GTK_OBJECT (dpms_standby_text), "activate", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (timeout_text), "focus_out_event", + gtk_signal_connect (GTK_OBJECT (dpms_standby_text), "focus_out_event", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (lock_button), "toggled", + gtk_signal_connect (GTK_OBJECT (dpms_button), "toggled", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (dpms_off_text), "activate", + gtk_signal_connect (GTK_OBJECT (fade_text), "activate", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (dpms_off_text), "focus_out_event", + gtk_signal_connect (GTK_OBJECT (fade_text), "focus_out_event", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (dpms_suspend_text), "activate", + gtk_signal_connect (GTK_OBJECT (install_button), "toggled", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (dpms_suspend_text), "focus_out_event", + gtk_signal_connect (GTK_OBJECT (fade_button), "toggled", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (dpms_standby_text), "activate", + gtk_signal_connect (GTK_OBJECT (unfade_button), "toggled", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (dpms_standby_text), "focus_out_event", + gtk_signal_connect (GTK_OBJECT (grab_image_button), "toggled", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (dpms_button), "toggled", + gtk_signal_connect (GTK_OBJECT (image_browse_button), "clicked", + GTK_SIGNAL_FUNC (browse_image_dir_cb), + NULL); + gtk_signal_connect (GTK_OBJECT (grab_video_button), "toggled", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (verbose_button), "toggled", + gtk_signal_connect (GTK_OBJECT (grab_desk_button), "toggled", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (capture_button), "toggled", + gtk_signal_connect (GTK_OBJECT (image_text), "activate", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (splash_button), "toggled", + gtk_signal_connect (GTK_OBJECT (image_text), "focus_out_event", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (fade_text), "activate", + gtk_signal_connect (GTK_OBJECT (lock_text), "activate", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (fade_text), "focus_out_event", + gtk_signal_connect (GTK_OBJECT (lock_text), "focus_out_event", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (install_button), "toggled", + gtk_signal_connect (GTK_OBJECT (cycle_text), "activate", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (fade_button), "toggled", + gtk_signal_connect (GTK_OBJECT (cycle_text), "focus_out_event", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (unfade_button), "toggled", + gtk_signal_connect (GTK_OBJECT (timeout_text), "activate", + GTK_SIGNAL_FUNC (pref_changed_cb), + NULL); + gtk_signal_connect (GTK_OBJECT (timeout_text), "focus_out_event", + GTK_SIGNAL_FUNC (pref_changed_cb), + NULL); + gtk_signal_connect (GTK_OBJECT (lock_button), "toggled", + GTK_SIGNAL_FUNC (pref_changed_cb), + NULL); + gtk_signal_connect (GTK_OBJECT (splash_button), "toggled", + GTK_SIGNAL_FUNC (pref_changed_cb), + NULL); + gtk_signal_connect (GTK_OBJECT (capture_button), "toggled", + GTK_SIGNAL_FUNC (pref_changed_cb), + NULL); + gtk_signal_connect (GTK_OBJECT (verbose_button), "toggled", GTK_SIGNAL_FUNC (pref_changed_cb), NULL); diff --git a/driver/demo-Gtk.c b/driver/demo-Gtk.c index 6564748f..2f04b6f0 100644 --- a/driver/demo-Gtk.c +++ b/driver/demo-Gtk.c @@ -33,6 +33,7 @@ #endif /* HAVE_UNAME */ #include +#include #include /* for CARD32 */ #include /* for XA_INTEGER */ @@ -938,6 +939,63 @@ hack_time_text (GtkWidget *widget, const char *line, Time *store, Bool sec_p) } +static Bool +directory_p (const char *path) +{ + struct stat st; + if (!path || !*path) + return False; + else if (stat (path, &st)) + return False; + else if (!S_ISDIR (st.st_mode)) + return False; + else + return True; +} + +static char * +normalize_directory (const char *path) +{ + int L; + char *p2, *s; + if (!path) return 0; + L = strlen (path);; + p2 = (char *) malloc (L + 2); + strcpy (p2, path); + if (p2[L-1] == '/') /* remove trailing slash */ + p2[--L] = 0; + + for (s = p2; s && *s; s++) + { + if (*s == '/' && + (!strncmp (s, "/../", 4) || /* delete "XYZ/../" */ + !strncmp (s, "/..\000", 4))) /* delete "XYZ/..$" */ + { + char *s0 = s; + while (s0 > p2 && s0[-1] != '/') + s0--; + if (s0 > p2) + { + s0--; + s += 3; + strcpy (s0, s); + s = s0-1; + } + } + else if (*s == '/' && !strncmp (s, "/./", 3)) /* delete "/./" */ + strcpy (s, s+2), s--; + else if (*s == '/' && !strncmp (s, "/.\000", 3)) /* delete "/.$" */ + *s = 0, s--; + } + + for (s = p2; s && *s; s++) /* normalize consecutive slashes */ + while (s[0] == '/' && s[1] == '/') + strcpy (s, s+1); + + return p2; +} + + void prefs_ok_cb (GtkButton *button, gpointer user_data) { @@ -977,6 +1035,23 @@ prefs_ok_cb (GtkButton *button, gpointer user_data) *(field) = value; \ } while(0) +# define PATHNAME(field, name) do { \ + char *line = gtk_entry_get_text (\ + GTK_ENTRY (name_to_widget (GTK_WIDGET(button), (name)))); \ + if (! *line) \ + ; \ + else if (!directory_p (line)) \ + { \ + char b[255]; \ + sprintf (b, "Error:\n\n" "Directory does not exist: \"%s\"\n", line); \ + warning_dialog (GTK_WIDGET (button), b, False, 100); \ + } \ + else { \ + if ((field)) free ((field)); \ + (field) = strdup(line); \ + } \ + } while(0) + # define CHECKBOX(field, name) \ field = gtk_toggle_button_get_active (\ GTK_TOGGLE_BUTTON (name_to_widget (GTK_WIDGET(button), (name)))) @@ -991,6 +1066,11 @@ prefs_ok_cb (GtkButton *button, gpointer user_data) MINUTES (&p2->dpms_suspend, "dpms_suspend_text"); MINUTES (&p2->dpms_off, "dpms_off_text"); + CHECKBOX (p2->grab_desktop_p, "grab_desk_button"); + CHECKBOX (p2->grab_video_p, "grab_video_button"); + CHECKBOX (p2->random_image_p, "grab_image_button"); + PATHNAME (p2->image_directory, "image_text"); + CHECKBOX (p2->verbose_p, "verbose_button"); CHECKBOX (p2->capture_stderr_p, "capture_button"); CHECKBOX (p2->splash_p, "splash_button"); @@ -1003,6 +1083,7 @@ prefs_ok_cb (GtkButton *button, gpointer user_data) # undef SECONDS # undef MINUTES # undef INTEGER +# undef PATHNAME # undef CHECKBOX # define COPY(field) \ @@ -1019,6 +1100,20 @@ prefs_ok_cb (GtkButton *button, gpointer user_data) COPY(dpms_suspend); COPY(dpms_off); + COPY (grab_desktop_p); + COPY (grab_video_p); + COPY (random_image_p); + + if (!p->image_directory || + !p2->image_directory || + strcmp(p->image_directory, p2->image_directory)) + changed = True; + if (p->image_directory && p->image_directory != p2->image_directory) + free (p->image_directory); + p->image_directory = normalize_directory (p2->image_directory); + if (p2->image_directory) free (p2->image_directory); + p2->image_directory = 0; + COPY(verbose_p); COPY(capture_stderr_p); COPY(splash_p); @@ -1176,6 +1271,103 @@ enabled_cb (GtkWidget *cb, gpointer client_data) } } + + +typedef struct { + prefs_pair *pair; + GtkFileSelection *widget; +} file_selection_data; + + + +static void +store_image_directory (GtkWidget *button, gpointer user_data) +{ + file_selection_data *fsd = (file_selection_data *) user_data; + prefs_pair *pair = fsd->pair; + GtkFileSelection *selector = fsd->widget; + GtkWidget *top = toplevel_widget; + saver_preferences *p = pair->a; + char *path = gtk_file_selection_get_filename (selector); + + if (p->image_directory && !strcmp(p->image_directory, path)) + return; /* no change */ + + if (!directory_p (path)) + { + char b[255]; + sprintf (b, "Error:\n\n" "Directory does not exist: \"%s\"\n", path); + warning_dialog (GTK_WIDGET (top), b, False, 100); + return; + } + + if (p->image_directory) free (p->image_directory); + p->image_directory = normalize_directory (path); + + gtk_entry_set_text (GTK_ENTRY (name_to_widget (top, "image_text")), + (p->image_directory ? p->image_directory : "")); + demo_write_init_file (GTK_WIDGET (top), p); +} + + +static void +browse_image_dir_cancel (GtkWidget *button, gpointer user_data) +{ + file_selection_data *fsd = (file_selection_data *) user_data; + gtk_widget_hide (GTK_WIDGET (fsd->widget)); +} + +static void +browse_image_dir_ok (GtkWidget *button, gpointer user_data) +{ + browse_image_dir_cancel (button, user_data); + store_image_directory (button, user_data); +} + +static void +browse_image_dir_close (GtkWidget *widget, GdkEvent *event, gpointer user_data) +{ + browse_image_dir_cancel (widget, user_data); +} + + +void +browse_image_dir_cb (GtkButton *button, gpointer user_data) +{ + /* prefs_pair *pair = (prefs_pair *) client_data; */ + prefs_pair *pair = global_prefs_pair; /* I hate C so much... */ + saver_preferences *p = pair->a; + static file_selection_data *fsd = 0; + + GtkFileSelection *selector = GTK_FILE_SELECTION( + gtk_file_selection_new ("Please select the image directory.")); + + if (!fsd) + fsd = (file_selection_data *) malloc (sizeof (*fsd)); + + fsd->widget = selector; + fsd->pair = pair; + + if (p->image_directory && *p->image_directory) + gtk_file_selection_set_filename (selector, p->image_directory); + + gtk_signal_connect (GTK_OBJECT (selector->ok_button), + "clicked", GTK_SIGNAL_FUNC (browse_image_dir_ok), + (gpointer *) fsd); + gtk_signal_connect (GTK_OBJECT (selector->cancel_button), + "clicked", GTK_SIGNAL_FUNC (browse_image_dir_cancel), + (gpointer *) fsd); + gtk_signal_connect (GTK_OBJECT (selector), "delete_event", + GTK_SIGNAL_FUNC (browse_image_dir_close), + (gpointer *) fsd); + + gtk_widget_set_sensitive (GTK_WIDGET (selector->file_list), False); + + gtk_window_set_modal (GTK_WINDOW (selector), True); + gtk_widget_show (GTK_WIDGET (selector)); +} + + /* Populating the various widgets */ @@ -1355,6 +1547,23 @@ populate_prefs_page (GtkWidget *top, prefs_pair *pair) GTK_TOGGLE_BUTTON (name_to_widget (top, "dpms_button")), p->dpms_enabled_p); + gtk_toggle_button_set_active ( + GTK_TOGGLE_BUTTON (name_to_widget (top,"grab_desk_button")), + p->grab_desktop_p); + gtk_toggle_button_set_active ( + GTK_TOGGLE_BUTTON (name_to_widget(top,"grab_video_button")), + p->grab_video_p); + gtk_toggle_button_set_active ( + GTK_TOGGLE_BUTTON (name_to_widget(top,"grab_image_button")), + p->random_image_p); + gtk_entry_set_text (GTK_ENTRY (name_to_widget (top, "image_text")), + (p->image_directory ? p->image_directory : "")); + gtk_widget_set_sensitive (GTK_WIDGET (name_to_widget (top, "image_text")), + p->random_image_p); + gtk_widget_set_sensitive ( + GTK_WIDGET (name_to_widget (top,"image_browse_button")), + p->random_image_p); + gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON (name_to_widget (top, "install_button")), p->install_cmap_p); @@ -1383,6 +1592,10 @@ populate_prefs_page (GtkWidget *top, prefs_pair *pair) } } +#ifdef HAVE_XF86VMODE_GAMMA + found_any_writable_cells = True; /* if we can gamma fade, go for it */ +#endif + #ifdef HAVE_DPMS_EXTENSION { int op = 0, event = 0, error = 0; @@ -1510,6 +1723,12 @@ fix_text_entry_sizes (GtkWidget *toplevel) width = gdk_text_width (w->style->font, "PseudoColor___", 14); gtk_widget_set_usize (w, width, -2); + /* Now fix the size of the file entry text. + */ + w = GTK_WIDGET (name_to_widget (GTK_WIDGET (toplevel), "image_text")); + width = gdk_text_width (w->style->font, "MMMMMMMMMMMMMM", 14); + gtk_widget_set_usize (w, width, -2); + #if 0 /* Now fix the size of the list. */ diff --git a/driver/demo-Xm.c b/driver/demo-Xm.c index bf7e0520..198f9bd8 100644 --- a/driver/demo-Xm.c +++ b/driver/demo-Xm.c @@ -1012,6 +1012,10 @@ populate_prefs_page (Widget top, prefs_pair *pair) } } +#ifdef HAVE_XF86VMODE_GAMMA + found_any_writable_cells = True; /* if we can gamma fade, go for it */ +#endif + XtVaSetValues (name_to_widget (top, "fadeSecondsLabel"), XtNsensitive, found_any_writable_cells, 0); XtVaSetValues (name_to_widget (top, "fadeTicksLabel"), XtNsensitive, diff --git a/driver/lock.c b/driver/lock.c index d47c99a0..0e8e5dff 100644 --- a/driver/lock.c +++ b/driver/lock.c @@ -360,7 +360,7 @@ make_passwd_window (saver_info *si) pw->logo_pixmap = xscreensaver_logo (si->dpy, si->passwd_dialog, cmap, pw->background, &pw->logo_pixels, &pw->logo_npixels, - True); + 0, True); /* Before mapping the window, save the bits that are underneath the rectangle the window will occlude. When we lower the window, we diff --git a/driver/prefs.c b/driver/prefs.c index bbc322d1..629b1b31 100644 --- a/driver/prefs.c +++ b/driver/prefs.c @@ -222,6 +222,10 @@ static const char * const prefs[] = { "dpmsStandby", "dpmsSuspend", "dpmsOff", + "grabDesktopImages", + "grabVideoFrames", + "chooseRandomImages", + "imageDirectory", "", "programs", "", @@ -495,6 +499,9 @@ write_entry (FILE *out, const char *key, const char *value) fprintf(out, "%s:", key); col = strlen(key) + 1; + if (strlen(key) > 14) + col = tab_to (out, col, 20); + while (1) { if (!programs_p) @@ -724,10 +731,17 @@ write_init_file (saver_preferences *p, const char *version_string, CHECK("captureStderr") type = pref_bool, b = p->capture_stderr_p; CHECK("captureStdout") continue; /* don't save */ CHECK("font") type = pref_str, s = stderr_font; + CHECK("dpmsEnabled") type = pref_bool, b = p->dpms_enabled_p; CHECK("dpmsStandby") type = pref_time, t = p->dpms_standby; CHECK("dpmsSuspend") type = pref_time, t = p->dpms_suspend; CHECK("dpmsOff") type = pref_time, t = p->dpms_off; + + CHECK("grabDesktopImages") type =pref_bool, b = p->grab_desktop_p; + CHECK("grabVideoFrames") type =pref_bool, b = p->grab_video_p; + CHECK("chooseRandomImages")type =pref_bool, b = p->random_image_p; + CHECK("imageDirectory") type =pref_str, s = p->image_directory; + CHECK("programs") type = pref_str, s = programs; CHECK("pointerPollTime") type = pref_time, t = p->pointer_timeout; CHECK("windowCreationTimeout")type=pref_time,t= p->notice_events_timeout; @@ -924,9 +938,15 @@ load_init_file (saver_preferences *p) "Time"); p->dpms_enabled_p = get_boolean_resource ("dpmsEnabled", "Boolean"); - p->dpms_standby = 1000 * get_seconds_resource ("dpmsStandby", "Time"); - p->dpms_suspend = 1000 * get_seconds_resource ("dpmsSuspend", "Time"); - p->dpms_off = 1000 * get_seconds_resource ("dpmsOff", "Time"); + p->dpms_standby = 1000 * get_minutes_resource ("dpmsStandby", "Time"); + p->dpms_suspend = 1000 * get_minutes_resource ("dpmsSuspend", "Time"); + p->dpms_off = 1000 * get_minutes_resource ("dpmsOff", "Time"); + + p->grab_desktop_p = get_boolean_resource ("grabDesktopImages", "Boolean"); + p->grab_video_p = get_boolean_resource ("grabVideoFrames", "Boolean"); + p->random_image_p = get_boolean_resource ("chooseRandomImages", "Boolean"); + p->image_directory = get_string_resource ("imageDirectory", + "ImageDirectory"); p->shell = get_string_resource ("bourneShell", "BourneShell"); @@ -945,6 +965,15 @@ load_init_file (saver_preferences *p) p->splash_p = True; } + /* If "*grabDesktopImages" is unset, default to true. */ + { + char *s = get_string_resource ("grabDesktopImages", "Boolean"); + if (s) + free (s); + else + p->grab_desktop_p = True; + } + p->use_xidle_extension = get_boolean_resource ("xidleExtension","Boolean"); p->use_mit_saver_extension = get_boolean_resource ("mitSaverExtension", "Boolean"); diff --git a/driver/prefs.h b/driver/prefs.h index a2b83b75..0ff0ff82 100644 --- a/driver/prefs.h +++ b/driver/prefs.h @@ -74,6 +74,11 @@ struct saver_preferences { Time dpms_suspend; /* how long until monitor power-saves */ Time dpms_off; /* how long until monitor powers down */ + Bool grab_desktop_p; /* These are not used by "xscreensaver" */ + Bool grab_video_p; /* itself: they are used by the external */ + Bool random_image_p; /* "xscreensaver-getimage" program, and set */ + char *image_directory; /* by the "xscreensaver-demo" configurator. */ + Bool use_xidle_extension; /* which extension to use, if possible */ Bool use_mit_saver_extension; Bool use_sgi_saver_extension; diff --git a/driver/splash.c b/driver/splash.c index d1daf2cd..33d255eb 100644 --- a/driver/splash.c +++ b/driver/splash.c @@ -363,7 +363,7 @@ make_splash_dialog (saver_info *si) sp->logo_pixmap = xscreensaver_logo (si->dpy, si->splash_dialog, cmap, sp->background, &sp->logo_pixels, &sp->logo_npixels, - True); + 0, True); XMapRaised (si->dpy, si->splash_dialog); XSync (si->dpy, False); diff --git a/driver/test-fade.c b/driver/test-fade.c new file mode 100644 index 00000000..b8e4475f --- /dev/null +++ b/driver/test-fade.c @@ -0,0 +1,120 @@ +/* test-fade.c --- playing with colormap and/or gamma fading. + * xscreensaver, Copyright (c) 2001 Jamie Zawinski + * + * 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. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#ifdef HAVE_UNISTD_H +# include +#endif + +#include + +#include +#include "xscreensaver.h" +#include "fade.h" + +#ifdef HAVE_SGI_VC_EXTENSION +# include +#endif +#ifdef HAVE_XF86VMODE_GAMMA +# include +#endif + +XrmDatabase db = 0; +char *progname = 0; +char *progclass = "XScreenSaver"; + +#define SGI_VC_NAME "SGI-VIDEO-CONTROL" +#define XF86_VIDMODE_NAME "XFree86-VidModeExtension" + +int +main (int argc, char **argv) +{ + int seconds = 3; + int ticks = 20; + int delay = 1; + + int op, event, error, major, minor; + + XtAppContext app; + Widget toplevel_shell = XtAppInitialize (&app, progclass, 0, 0, + &argc, argv, 0, 0, 0); + Display *dpy = XtDisplay (toplevel_shell); + Colormap *current_maps; + int i; + + XtGetApplicationNameAndClass (dpy, &progname, &progclass); + db = XtDatabase (dpy); + + current_maps = (Colormap *) calloc(sizeof(Colormap), ScreenCount(dpy)); + for (i = 0; i < ScreenCount(dpy); i++) + current_maps[i] = DefaultColormap (dpy, i); + + if (!XQueryExtension (dpy, SGI_VC_NAME, &op, &event, &error)) + fprintf(stderr, "%s: no " SGI_VC_NAME " extension\n", progname); + else + { +# ifdef HAVE_SGI_VC_EXTENSION + if (!XSGIvcQueryVersion (dpy, &major, &minor)) + fprintf(stderr, "%s: unable to get " SGI_VC_NAME " version\n", + progname); + else + fprintf(stderr, "%s: " SGI_VC_NAME " version %d.%d\n", + progname, major, minor); +# else /* !HAVE_SGI_VC_EXTENSION */ + fprintf(stderr, "%s: no support for display's " SGI_VC_NAME + " extension\n", progname); +# endif /* !HAVE_SGI_VC_EXTENSION */ + } + + + if (!XQueryExtension (dpy, XF86_VIDMODE_NAME, &op, &event, &error)) + fprintf(stderr, "%s: no " XF86_VIDMODE_NAME " extension\n", progname); + else + { +# ifdef HAVE_XF86VMODE_GAMMA + if (!XF86VidModeQueryVersion (dpy, &major, &minor)) + fprintf(stderr, "%s: unable to get " XF86_VIDMODE_NAME " version\n", + progname); + else + fprintf(stderr, "%s: " XF86_VIDMODE_NAME " version %d.%d\n", + progname, major, minor); +# else /* !HAVE_XF86VMODE_GAMMA */ + fprintf(stderr, "%s: no support for display's " XF86_VIDMODE_NAME + " extension\n", progname); +# endif /* !HAVE_XF86VMODE_GAMMA */ + } + + while (1) + { + XSync (dpy, False); + + fprintf(stderr, "%s: out...", progname); + fflush(stderr); + fade_screens (dpy, current_maps, 0, seconds, ticks, True, False); + fprintf(stderr, "done.\n"); + fflush(stderr); + + if (delay) sleep (delay); + + fprintf(stderr,"%s: in...", progname); + fflush(stderr); + fade_screens (dpy, current_maps, 0, seconds, ticks, False, False); + fprintf(stderr, "done.\n"); + fflush(stderr); + + if (delay) sleep (delay); + } +} diff --git a/driver/xscreensaver-command.man b/driver/xscreensaver-command.man index eea2ff83..25befb7e 100644 --- a/driver/xscreensaver-command.man +++ b/driver/xscreensaver-command.man @@ -11,7 +11,7 @@ .if n .sp 1 .if t .sp .5 .. -.TH XScreenSaver 1 "29-Mar-2001 (3.31)" "X Version 11" +.TH XScreenSaver 1 "15-Apr-2001 (3.32)" "X Version 11" .SH NAME xscreensaver-command - control a running xscreensaver process .SH SYNOPSIS diff --git a/driver/xscreensaver-demo.glade b/driver/xscreensaver-demo.glade index 6629a959..7fa9f86d 100644 --- a/driver/xscreensaver-demo.glade +++ b/driver/xscreensaver-demo.glade @@ -28,8 +28,6 @@ GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False - 600 - 400 True True False @@ -598,11 +596,10 @@ Mono GtkTable options_table - 10 - 2 + 1 2 True - 2 + 0 0 0 @@ -611,15 +608,16 @@ Mono - GtkFrame - blanking_frame - 10 - - 0 - GTK_SHADOW_ETCHED_IN + GtkTable + options_table_2 + 2 + 1 + False + 0 + 0 - 0 - 1 + 1 + 2 0 1 0 @@ -633,295 +631,542 @@ Mono - GtkTable - blanking_table + GtkFrame + dpms_frame 10 - 5 - 3 - False - 2 - 10 + + 0 + GTK_SHADOW_ETCHED_IN + + 0 + 1 + 0 + 1 + 0 + 0 + True + False + False + False + True + True + - GtkEntry - lock_text - How long after the screen saver has activated until a password will be required (if `Require Password' is also set.) - True - - activate - pref_changed_cb - Mon, 03 Apr 2000 02:28:29 GMT - - - focus_out_event - pref_changed_cb - Mon, 03 Apr 2000 02:35:28 GMT - - True - True - 8 - - - 1 - 2 - 4 - 5 - 0 - 0 - False - False - False - False - False - False - - + GtkTable + dpms_table + 10 + 4 + 3 + False + 2 + 10 - - GtkEntry - cycle_text - How long each demo will be run before moving on to another. - True - - activate - pref_changed_cb - Mon, 03 Apr 2000 02:28:29 GMT - - - focus_out_event - pref_changed_cb - Mon, 03 Apr 2000 02:35:28 GMT - - True - True - 8 - - - 1 - 2 - 1 - 2 - 0 - 0 - False - False - False - False - False - False - - + + GtkEntry + dpms_off_text + How long until the monitor powers down (if Power Management is enabled). + True + + activate + pref_changed_cb + Mon, 03 Apr 2000 02:28:29 GMT + + + focus_out_event + pref_changed_cb + Mon, 03 Apr 2000 02:35:28 GMT + + True + True + 8 + + + 1 + 2 + 3 + 4 + 0 + 0 + False + False + False + False + False + False + + - - GtkEntry - timeout_text - How long until the screen saver activates and begins running demos. - True - - activate - pref_changed_cb - Mon, 03 Apr 2000 02:28:10 GMT - - - focus_out_event - pref_changed_cb - Mon, 03 Apr 2000 02:34:26 GMT - - True - True - 8 - - - 1 - 2 - 0 - 1 + + GtkEntry + dpms_suspend_text + How long until the monitor goes into power-saving mode (if Power Management is enabled). + True + + activate + pref_changed_cb + Mon, 03 Apr 2000 02:28:29 GMT + + + focus_out_event + pref_changed_cb + Mon, 03 Apr 2000 02:35:28 GMT + + True + True + 8 + + + 1 + 2 + 2 + 3 + 0 + 0 + False + False + False + False + False + False + + + + + GtkEntry + dpms_standby_text + How long before the monitor goes completely black (if Power Management is enabled). + True + + activate + pref_changed_cb + Mon, 03 Apr 2000 02:28:29 GMT + + + focus_out_event + pref_changed_cb + Mon, 03 Apr 2000 02:35:28 GMT + + True + True + 8 + + + 1 + 2 + 1 + 2 + 0 + 0 + False + False + False + False + False + False + + + + + GtkLabel + dpms_standby_label + + GTK_JUSTIFY_RIGHT + False + 1 + 0.5 0 0 - False - False - False - False - False - False - - + + 0 + 1 + 1 + 2 + 0 + 0 + False + False + False + False + True + False + + - - GtkLabel - timeout_label - - GTK_JUSTIFY_RIGHT - False - 1 - 0.5 - 0 - 0 - - 0 - 1 - 0 - 1 + + GtkLabel + dpms_off_label + + GTK_JUSTIFY_RIGHT + False + 1 + 0.5 0 0 - False - False - False - False - True - False - - + + 0 + 1 + 3 + 4 + 0 + 0 + False + False + False + False + True + False + + - - GtkLabel - cycle_label - - GTK_JUSTIFY_RIGHT - False - 1 - 0.5 - 0 - 0 - - 0 - 1 - 1 - 2 + + GtkLabel + dpms_suspend_label + + GTK_JUSTIFY_RIGHT + False + 1 + 0.5 0 0 - False - False - False - False - True - False - - + + 0 + 1 + 2 + 3 + 0 + 0 + False + False + False + False + True + False + + - - GtkLabel - lock_label - - GTK_JUSTIFY_RIGHT - False - 1 - 0.5 - 0 - 0 - - 0 - 1 - 4 - 5 + + GtkLabel + dpms_dummy + + GTK_JUSTIFY_LEFT + False + 0.5 + 0.5 0 0 - False - False - False - False - True - False - + + 2 + 3 + 3 + 4 + 0 + 0 + True + False + False + False + True + False + + + + + GtkEventBox + dpms_button_eventbox + Whether the monitor should be powered down after a while. + + 0 + 3 + 0 + 1 + 0 + 0 + False + False + False + False + True + True + + + + GtkCheckButton + dpms_button + True + + toggled + pref_changed_cb + Mon, 03 Apr 2000 02:33:01 GMT + + + True + True + + + - - GtkLabel - blanking_dummy - - GTK_JUSTIFY_LEFT - False - 0.5 - 0.5 + + GtkFrame + cmap_frame + 10 + + 0 + GTK_SHADOW_ETCHED_IN + + 0 + 1 + 1 + 2 0 0 - - 2 - 3 - 4 - 5 - 0 - 0 - True - False - False - False - True - False - - + True + False + False + False + True + True + - GtkHSeparator - blanking_hr - - 0 - 3 - 2 - 3 + GtkTable + cmap_table + 10 + 5 + 3 + False + 2 + 10 + + + GtkEntry + fade_text + How long it should take for the screen to fade in and out. + True + + activate + pref_changed_cb + Mon, 03 Apr 2000 02:28:29 GMT + + + focus_out_event + pref_changed_cb + Mon, 03 Apr 2000 02:35:28 GMT + + True + True + 8 + + + 1 + 2 + 4 + 5 + 0 + 0 + False + False + False + False + False + False + + + + + GtkLabel + cmap_dummy + + GTK_JUSTIFY_LEFT + False + 0.5 + 0.5 0 0 - True - True - False - False - True - True - - + + 2 + 3 + 4 + 5 + 0 + 0 + True + False + False + False + True + False + + - - GtkEventBox - lock_button_eventbox - Whether a password should be required to unblank the screen. - - 0 - 3 - 3 - 4 + + GtkLabel + fade_label + + GTK_JUSTIFY_RIGHT + False + 1 + 0.5 0 0 - False - False - False - False - True - True - + + 0 + 1 + 4 + 5 + 0 + 0 + False + False + False + False + True + False + + - GtkCheckButton - lock_button - True - - toggled - pref_changed_cb - Mon, 03 Apr 2000 02:31:53 GMT - - - False - True + GtkEventBox + install_button_eventbox + Whether to install a private colormap when running in 8-bit mode on the default Visual. + + 0 + 3 + 0 + 1 + 0 + 0 + False + False + False + False + True + True + + + + GtkCheckButton + install_button + True + + toggled + pref_changed_cb + Mon, 03 Apr 2000 02:32:25 GMT + + + False + True + + + + + GtkEventBox + fade_button_eventbox + Whether the screen should slowly fade to black when the screen saver activates. + + 0 + 3 + 2 + 3 + 0 + 0 + False + False + False + False + True + True + + + + GtkCheckButton + fade_button + True + + toggled + pref_changed_cb + Mon, 03 Apr 2000 02:32:39 GMT + + + False + True + + + + + GtkEventBox + unfade_button_eventbox + Whether the screen should slowly fade in from black when the screen saver deactivates. + + 0 + 3 + 3 + 4 + 0 + 0 + False + False + False + False + True + True + + + + GtkCheckButton + unfade_button + True + + toggled + pref_changed_cb + Mon, 03 Apr 2000 02:32:51 GMT + + + False + True + + + + + GtkHSeparator + cmap_hr + + 0 + 3 + 1 + 2 + 0 + 2 + True + False + False + False + True + True + - GtkFrame - dpms_frame - 10 - - 0 - GTK_SHADOW_ETCHED_IN + GtkTable + options_table_1 + 3 + 1 + False + 0 + 0 - 1 - 2 + 0 + 1 0 1 0 0 - False - False + True + True False False True @@ -929,633 +1174,656 @@ Mono - GtkTable - dpms_table + GtkFrame + grab_frame 10 - 4 - 3 - False - 2 - 10 - - - GtkEntry - dpms_off_text - How long until the monitor powers down (if Power Management is enabled). - True - - activate - pref_changed_cb - Mon, 03 Apr 2000 02:28:29 GMT - - - focus_out_event - pref_changed_cb - Mon, 03 Apr 2000 02:35:28 GMT - - True - True - 8 - - - 1 - 2 - 3 - 4 - 0 - 0 - False - False - False - False - False - False - - - - - GtkEntry - dpms_suspend_text - How long until the monitor goes into power-saving mode (if Power Management is enabled). - True - - activate - pref_changed_cb - Mon, 03 Apr 2000 02:28:29 GMT - - - focus_out_event - pref_changed_cb - Mon, 03 Apr 2000 02:35:28 GMT - - True - True - 8 - - - 1 - 2 - 2 - 3 - 0 - 0 - False - False - False - False - False - False - - - - - GtkEntry - dpms_standby_text - How long before the monitor goes completely black (if Power Management is enabled). - True - - activate - pref_changed_cb - Mon, 03 Apr 2000 02:28:29 GMT - - - focus_out_event - pref_changed_cb - Mon, 03 Apr 2000 02:35:28 GMT - - True - True - 8 - - - 1 - 2 - 1 - 2 - 0 - 0 - False - False - False - False - False - False - - - - - GtkLabel - dpms_standby_label - - GTK_JUSTIFY_RIGHT - False - 1 - 0.5 + + 0 + GTK_SHADOW_ETCHED_IN + + 0 + 1 + 1 + 2 0 0 - - 0 - 1 - 1 - 2 - 0 - 0 - False - False - False - False - True - False - - + True + False + False + False + True + True + - GtkLabel - dpms_off_label - - GTK_JUSTIFY_RIGHT - False - 1 - 0.5 - 0 - 0 - - 0 - 1 - 3 - 4 - 0 - 0 - False - False - False - False - True - False - - + GtkTable + grab_table + 10 + 4 + 3 + False + 0 + 0 - - GtkLabel - dpms_suspend_label - - GTK_JUSTIFY_RIGHT - False - 1 - 0.5 - 0 - 0 - - 0 - 1 - 2 - 3 - 0 - 0 - False - False - False - False - True - False - - + + GtkEventBox + grab_image_eventbox + Whether the image-manipulating modes should operate on random images loaded from disk. + + 0 + 3 + 2 + 3 + 0 + 0 + True + False + False + False + True + True + + + + GtkCheckButton + grab_image_button + True + + toggled + pref_changed_cb + Thu, 12 Apr 2001 23:40:53 GMT + + + False + True + + - - GtkLabel - dpms_dummy - - GTK_JUSTIFY_LEFT - False - 0.5 - 0.5 - 0 - 0 - - 2 - 3 - 3 - 4 - 0 - 0 - True - False - False - False - True - False - - + + GtkButton + image_browse_button + True + + clicked + browse_image_dir_cb + Thu, 12 Apr 2001 00:35:43 GMT + + + + 2 + 3 + 3 + 4 + 4 + 0 + False + False + False + False + False + False + + - - GtkEventBox - dpms_button_eventbox - Whether the monitor should be powered down after a while. - - 0 - 3 - 0 - 1 - 0 + + GtkEventBox + grab_video_eventbox + Whether the image-manipulating modes should operate on images captured from the system's video input (if there is one). + + 0 + 3 + 1 + 2 + 0 + 0 + True + False + False + False + True + True + + + + GtkCheckButton + grab_video_button + True + + toggled + pref_changed_cb + Thu, 12 Apr 2001 23:40:40 GMT + + + False + True + + + + + GtkEventBox + grab_desk_eventbox + Whether the image-manipulating modes should be allowed to operate on an image of your desktop. + + 0 + 3 + 0 + 1 + 0 + 0 + True + False + False + False + True + True + + + + GtkCheckButton + grab_desk_button + True + + toggled + pref_changed_cb + Thu, 12 Apr 2001 23:40:27 GMT + + + False + True + + + + + GtkLabel + grab_dummy + + GTK_JUSTIFY_LEFT + False + 0.5 + 0.5 + 8 0 - False - False - False - False - True - True - + + 0 + 1 + 3 + 4 + 0 + 0 + False + False + True + True + True + False + + - GtkCheckButton - dpms_button + GtkEntry + image_text + The directory from which images will be randomly chosen. True - toggled + activate pref_changed_cb - Mon, 03 Apr 2000 02:33:01 GMT + Thu, 12 Apr 2001 00:34:49 GMT - - True - True + + focus_out_event + pref_changed_cb + Thu, 12 Apr 2001 00:35:17 GMT + + True + True + 0 + + + 1 + 2 + 3 + 4 + 0 + 0 + False + False + True + False + True + False + - - - - GtkFrame - diag_frame - 10 - - 0 - GTK_SHADOW_ETCHED_IN - - 0 - 1 - 1 - 2 - 0 - 0 - False - False - False - False - True - True - - GtkTable - diag_table + GtkFrame + blanking_frame 10 - 3 - 1 - False - 2 - 10 + + 0 + GTK_SHADOW_ETCHED_IN + + 0 + 1 + 0 + 1 + 0 + 0 + True + False + False + False + True + True + - GtkEventBox - verbose_button_eventbox - Whether the daemon should print lots of debugging information. - - 0 - 1 - 0 - 1 - 0 - 0 - True - False - False - False - True - True - + GtkTable + blanking_table + 10 + 5 + 3 + False + 2 + 10 - GtkCheckButton - verbose_button + GtkEntry + lock_text + How long after the screen saver has activated until a password will be required (if `Require Password' is also set.) True - toggled + activate pref_changed_cb - Mon, 03 Apr 2000 02:32:25 GMT + Mon, 03 Apr 2000 02:28:29 GMT - - False - True + + focus_out_event + pref_changed_cb + Mon, 03 Apr 2000 02:35:28 GMT + + True + True + 8 + + + 1 + 2 + 4 + 5 + 0 + 0 + False + False + False + False + False + False + - - - - GtkEventBox - capture_button_eventbox - Whether the stdout and stderr streams of graphics demos should be displayed on the xscreensaver window. - - 0 - 1 - 1 - 2 - 0 - 0 - True - False - False - False - True - True - - GtkCheckButton - capture_button + GtkEntry + cycle_text + How long each demo will be run before moving on to another. True - toggled + activate + pref_changed_cb + Mon, 03 Apr 2000 02:28:29 GMT + + + focus_out_event pref_changed_cb - Mon, 03 Apr 2000 02:32:25 GMT + Mon, 03 Apr 2000 02:35:28 GMT - - False - True + True + True + 8 + + + 1 + 2 + 1 + 2 + 0 + 0 + False + False + False + False + False + False + - - - - GtkEventBox - splash_button_eventbox - Whether the splash screen (with the version number and `Help' button) should be momentarily displayed when the daemon first starts up. - - 0 - 1 - 2 - 3 - 0 - 0 - True - False - False - False - True - False - - GtkCheckButton - splash_button + GtkEntry + timeout_text + How long until the screen saver activates and begins running demos. True - toggled + activate pref_changed_cb - Mon, 03 Apr 2000 02:32:39 GMT + Mon, 03 Apr 2000 02:28:10 GMT - - True - True + + focus_out_event + pref_changed_cb + Mon, 03 Apr 2000 02:34:26 GMT + + True + True + 8 + + + 1 + 2 + 0 + 1 + 0 + 0 + False + False + False + False + False + False + - - - - - GtkFrame - cmap_frame - 10 - - 0 - GTK_SHADOW_ETCHED_IN - - 1 - 2 - 1 - 2 - 0 - 0 - False - False - False - False - True - True - - - - GtkTable - cmap_table - 10 - 5 - 3 - False - 2 - 10 - - - GtkEntry - fade_text - How long it should take for the screen to fade in and out. - True - - activate - pref_changed_cb - Mon, 03 Apr 2000 02:28:29 GMT - - - focus_out_event - pref_changed_cb - Mon, 03 Apr 2000 02:35:28 GMT - - True - True - 8 - - - 1 - 2 - 4 - 5 + + GtkLabel + timeout_label + + GTK_JUSTIFY_RIGHT + False + 1 + 0.5 0 0 - False - False - False - False - False - False - - + + 0 + 1 + 0 + 1 + 0 + 0 + False + False + False + False + True + False + + - - GtkLabel - cmap_dummy - - GTK_JUSTIFY_LEFT - False - 0.5 - 0.5 - 0 - 0 - - 2 - 3 - 4 - 5 + + GtkLabel + cycle_label + + GTK_JUSTIFY_RIGHT + False + 1 + 0.5 0 0 - True - False - False - False - True - False - - + + 0 + 1 + 1 + 2 + 0 + 0 + False + False + False + False + True + False + + - - GtkLabel - fade_label - - GTK_JUSTIFY_RIGHT - False - 1 - 0.5 - 0 - 0 - - 0 - 1 - 4 - 5 + + GtkLabel + lock_label + + GTK_JUSTIFY_RIGHT + False + 1 + 0.5 0 0 - False - False - False - False - True - False - - + + 0 + 1 + 4 + 5 + 0 + 0 + False + False + False + False + True + False + + - - GtkHSeparator - cmap_hr - - 0 - 3 - 1 - 2 + + GtkLabel + blanking_dummy + + GTK_JUSTIFY_LEFT + False + 0.5 + 0.5 0 0 - True - True - False - False - True - True - - + + 2 + 3 + 4 + 5 + 0 + 0 + True + False + False + False + True + False + + - - GtkEventBox - install_button_eventbox - Whether to install a private colormap when running in 8-bit mode on the default Visual. - - 0 - 3 - 0 - 1 - 0 - 0 - False - False - False - False - True - True - + + GtkEventBox + lock_button_eventbox + Whether a password should be required to unblank the screen. + + 0 + 3 + 3 + 4 + 0 + 0 + False + False + False + False + True + True + + + + GtkCheckButton + lock_button + True + + toggled + pref_changed_cb + Mon, 03 Apr 2000 02:31:53 GMT + + + False + True + + - GtkCheckButton - install_button - True - - toggled - pref_changed_cb - Mon, 03 Apr 2000 02:32:25 GMT - - - False - True + GtkHSeparator + blanking_hr + + 0 + 3 + 2 + 3 + 0 + 2 + True + True + False + False + True + True + + + + + GtkFrame + diag_frame + 10 + + 0 + GTK_SHADOW_ETCHED_IN + + 0 + 1 + 2 + 3 + 0 + 0 + True + False + False + False + True + True + - GtkEventBox - fade_button_eventbox - Whether the screen should slowly fade to black when the screen saver activates. - - 0 - 3 - 2 - 3 - 0 - 0 - False - False - False - False - True - True - + GtkTable + diag_table + 10 + 3 + 1 + False + 2 + 10 - GtkCheckButton - fade_button - True - - toggled - pref_changed_cb - Mon, 03 Apr 2000 02:32:39 GMT - - - False - True + GtkEventBox + splash_button_eventbox + Whether the splash screen (with the version number and `Help' button) should be momentarily displayed when the daemon first starts up. + + 0 + 1 + 2 + 3 + 0 + 0 + True + False + False + False + True + False + + + + GtkCheckButton + splash_button + True + + toggled + pref_changed_cb + Mon, 03 Apr 2000 02:32:39 GMT + + + True + True + - - - GtkEventBox - unfade_button_eventbox - Whether the screen should slowly fade in from black when the screen saver deactivates. - - 0 - 3 - 3 - 4 - 0 - 0 - False - False - False - False - True - True - + + GtkEventBox + capture_button_eventbox + Whether the stdout and stderr streams of graphics demos should be displayed on the xscreensaver window. + + 0 + 1 + 1 + 2 + 0 + 0 + True + False + False + False + True + False + + + + GtkCheckButton + capture_button + True + + toggled + pref_changed_cb + Mon, 03 Apr 2000 02:32:25 GMT + + + False + True + + - GtkCheckButton - unfade_button - True - - toggled - pref_changed_cb - Mon, 03 Apr 2000 02:32:51 GMT - - - False - True + GtkEventBox + verbose_button_eventbox + Whether the daemon should print lots of debugging information. + + 0 + 1 + 0 + 1 + 0 + 0 + True + False + False + False + True + False + + + + GtkCheckButton + verbose_button + True + + toggled + pref_changed_cb + Mon, 03 Apr 2000 02:32:25 GMT + + + False + True + diff --git a/driver/xscreensaver-demo.man b/driver/xscreensaver-demo.man index bedb2081..01767bfb 100644 --- a/driver/xscreensaver-demo.man +++ b/driver/xscreensaver-demo.man @@ -11,7 +11,7 @@ .if n .sp 1 .if t .sp .5 .. -.TH XScreenSaver 1 "29-Mar-2001 (3.31)" "X Version 11" +.TH XScreenSaver 1 "15-Apr-2001 (3.32)" "X Version 11" .SH NAME xscreensaver-demo - interactively control the background xscreensaver daemon .SH SYNOPSIS @@ -162,6 +162,34 @@ activation) then a password would be required. The default is 0, meaning that if locking is enabled, then a password will be required as soon as the screen blanks. .TP 4 +.B Grab Desktop Images +Some of the graphics hacks manipulate images. If this option is selected, +then they are allowed to manipulate the desktop image, that is, a display +mode might draw a picture of your desktop melting, or being distorted in +some way. The security-paranoid might want to disable this option, because +if it is set, it means that the windows on your desktop will occasionally +be visible while your screen is locked. Others will not be able +to \fIdo\fP anything, but they may be able to \fIsee\fP whatever you +left on your screen. +.TP 4 +.B Grab Video Frames +If your system has a video capture card, selecting this option will allow +the image-manipulating modes to capture a frame of video to operate on. +.TP 4 +.B Choose Random Image +If this option is set, then the image-manipulating modes will select a +random image file from disk, from the directory you specify in the text +entry field. That directory will be recursively searched for files, +and it is assumed that all the files under that directory are images. + +If more than one of these options are selected, then one will be chosen at +random. If none of them are selected, then an image of video colorbars will +be used instead. + +(All three of these options work by invoking the +.BR xscreensaver\-getimage (1) +program, which is what actually does the work.) +.TP 4 .B Verbose Diagnostics Whether to print lots of debugging information. .TP 4 @@ -215,16 +243,15 @@ on a per-demo basis. .TP 4 .B Fade To Black When Blanking If selected, then when the screensaver activates, the current contents -of the screen will fade to black instead of simply winking out. This only -works on displays with writable colormaps, that is, if the screen's default -visual is a PseudoColor visual. A fade will also be done when +of the screen will fade to black instead of simply winking out. (Note: +this doesn't work with all X servers.) A fade will also be done when switching graphics hacks (when the \fICycle After\fP expires.) .TP 4 .B Unfade From Black When Unblanking The complement to \fIFade Colormap\fP: if selected, then when the screensaver deactivates, the original contents of the screen will fade in from black -instead of appearing immediately. This only works on displays with writable -colormaps, and when \fIFade Colormap\fP is also selected. +instead of appearing immediately. This is only done if \fIFade Colormap\fP +is also selected. .TP 4 .B Fade Duration When fading or unfading are selected, this controls how long the fade will @@ -278,7 +305,8 @@ http://www.jwz.org/xscreensaver/ .SH SEE ALSO .BR X (1), .BR xscreensaver (1), -.BR xscreensaver\-command (1) +.BR xscreensaver\-command (1), +.BR xscreensaver\-getimage (1) .SH COPYRIGHT Copyright \(co 1992, 1993, 1997, 1998, 1999, 2000, 2001 by Jamie Zawinski. Permission to use, copy, modify, distribute, and sell diff --git a/driver/xscreensaver-getimage-file b/driver/xscreensaver-getimage-file new file mode 100755 index 00000000..0766d9ed --- /dev/null +++ b/driver/xscreensaver-getimage-file @@ -0,0 +1,203 @@ +#!/usr/bin/perl -w +# Copyright © 2001 Jamie Zawinski , all rights reserved. +# +# 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. No representations are made about the suitability of this +# software for any purpose. It is provided "as is" without express or +# implied warranty. +# +# This program attempts to locate a random image from the specified directory, +# and load it on to the root window, using some other program that can decode +# image files. (It attempts to find such a program.) +# +# The various xscreensaver hacks that manipulate images ("slidescreen", +# "jigsaw", etc.) get the image to manipulate by running the +# "xscreensaver-getimage" program. +# +# "xscreensaver-getimage" will invoke this program, depending on the +# value of the "chooseRandomImages" and "imageDirectory" settings in +# the ~/.xscreensaver file (or /usr/lib/X11/app-defaults/XScreenSaver). +# +# Created: 12-Apr-01. + +require 5; +use diagnostics; +use strict; + +use POSIX; +use Fcntl; + + +my $progname = $0; $progname =~ s@.*/@@g; +my $version = q{ $Revision: 1.4 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/; + +my $verbose = 0; + +# These are programs that can be used to put an image file on the root +# window (including virtual root windows.) The first one of these programs +# that exists on $PATH will be used (with the file name as the last arg.) +# +# If you add other programs to this list, please let me know! +# +my @programs = ( + "xv -root -quit -viewonly -maxpect -noresetroot -quick24 -rmode 5" . + " -rfg black -rbg black", + "xli -quiet -fullscreen -onroot -center -border black", + "xloadimage -quiet -fullscreen -onroot -center -border black", + "chbg -once -xscreensaver -max_grow 4", + +# this lame program wasn't built with vroot.h: +# "xsri -scale -keep-aspect -center-horizontal -center-vertical", +); + +sub pick_displayer { + my @names = (); + + foreach my $cmd (@programs) { + $_ = $cmd; + my ($name) = m/^([^ ]+)/; + push @names, "\"$name\""; + print STDERR "$progname: looking for $name...\n" if ($verbose > 2); + foreach my $dir (split (/:/, $ENV{PATH})) { + print STDERR "$progname: checking $dir/$name\n" if ($verbose > 3); + return $cmd if (-x "$dir/$name"); + } + } + + $names[$#names] = "or " . $names[$#names]; + printf STDERR "$progname: none of: " . join (", ", @names) . + " were found on \$PATH.\n"; + exit 1; +} + + +my @all_files = (); +my %seen_inodes; + +sub find_all_files { + my ($dir) = @_; + + print STDERR "$progname: reading dir $dir/...\n" if ($verbose > 2); + + local *DIR; + if (! opendir (DIR, $dir)) { + print STDERR "$progname: couldn't open $dir: $!\n"; + return; + } + my @files = readdir (DIR); + closedir (DIR); + + my @dirs = (); + + foreach my $file (@files) { + next if ($file =~ m/^\./); # ignore dot files + next if ($file =~ m/[~%\#]$/); # ignore backup files + next if ($file =~ m/\.(BAK|bak|tmp|orig|rej|rpmsave)$/); + next if ($file eq "core"); + + $file = "$dir/$file"; + my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, + $atime,$mtime,$ctime,$blksize,$blocks) = stat($file); + + next if ($seen_inodes{$ino}); # break symlink loops + $seen_inodes{$ino} = 1; + + if (S_ISDIR($mode)) { + push @dirs, $file; + print STDERR "$progname: found dir $file\n" if ($verbose > 2); + } elsif (S_ISREG($mode) || S_ISLNK($mode)) { + push @all_files, $file; + print STDERR "$progname: found file $file\n" if ($verbose > 2); + } elsif ($verbose > 2) { + print STDERR "$progname: nonreg $file\n"; + } + } + + foreach (@dirs) { + find_all_files ($_); + } +} + + +sub find_random_file { + my ($dir) = @_; + + $dir =~ s@/+$@@g; + + print STDERR "$progname: recursively reading $dir...\n" if ($verbose > 1); + find_all_files ($dir); + print STDERR "$progname: found $#all_files files\n" if ($verbose > 1); + + @all_files = sort(@all_files); + + my $n = int (rand ($#all_files)); + my $file = $all_files[$n]; + + print STDERR "$progname: chose file $n: $file\n" if ($verbose > 1); + return $file; +} + + + +sub display_file { + my ($file, $displayer) = @_; + + if (!defined($displayer)) { + print STDOUT "$file\n"; + } else { + my @cmd = split (/ +/, $displayer); + push @cmd, $file; # do it this way to allow file names with spaces. + print STDERR "$progname: executing \"" . join(" ", @cmd) . "\"\n" + if ($verbose); + exec (@cmd) || die; + } +} + + +sub find_and_display { + my ($dir, $displayer) = @_; + my $file = find_random_file ($dir); + display_file ($file, $displayer); +} + + +sub usage { + print STDERR "usage: $progname [--verbose] [--name] directory\n"; + print STDERR "Puts a randomly selected image on the root window.\n"; + print STDERR "With --name, merely prints the filename to stdout.\n"; + exit 1; +} + +sub main { + my $dir = undef; + my $do_name = 0; + + while ($_ = $ARGV[0]) { + shift @ARGV; + if ($_ eq "--verbose") { $verbose++; } + elsif (m/^-v+$/) { $verbose += length($_)-1; } + elsif ($_ eq "--name") { $do_name++; } + elsif (m/^-./) { usage; } + elsif (!defined($dir)) { $dir = $_; } + else { usage; } + } + + usage unless (defined($dir)); + my $displayer = undef; + + $displayer = pick_displayer() unless $do_name; + + if (-d $dir) { + find_and_display ($dir, $displayer); + } elsif (-f $dir) { + display_file ($dir, $displayer); + } else { + usage(); + } +} + +main; +exit 0; diff --git a/driver/xscreensaver-getimage-file.man b/driver/xscreensaver-getimage-file.man new file mode 100644 index 00000000..beaf7b12 --- /dev/null +++ b/driver/xscreensaver-getimage-file.man @@ -0,0 +1,49 @@ +.TH XScreenSaver 1 "15-Apr-2001 (3.32)" "X Version 11" +.SH NAME +xscreensaver-getimage-file - put a randomly-selected image on the root window +.SH SYNOPSIS +.B xscreensaver-getimage-file +[\-display \fIhost:display.screen\fP] [\--verbose] [\--name] directory +.SH DESCRIPTION +The \fIxscreensaver\-getimage\-file\fP program is a helper program +for the xscreensaver hacks that manipulate images. Specifically, it +is invoked by +.BR xscreensaver\-getimage (1) +as needed. This is not a user-level command. + +This program selects a random image from disk, and loads it on the root +window. It does this by figuring out which image-loading programs are +installed on the system, and invoking the first one it finds. +.SH OPTIONS +.I xscreensaver-getimage-file +accepts the following options: +.TP 4 +.B --verbose +Print diagnostics. +.TP 4 +.B --name +Don't load an image: instead just print the file name to stdout. +.TP 4 +.I directory +The directory to search. The directory will be searched recursively, +and all files in it are assumed to be images. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1), +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1), +.BR xv (1), +.BR xli (1), +.BR xloadimage (1), +.BR chbg (1) +.SH COPYRIGHT +Copyright \(co 2001 by Jamie Zawinski. 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. +No representations are made about the suitability of this software for +any purpose. It is provided "as is" without express or implied +warranty. +.SH AUTHOR +Jamie Zawinski , 14-Apr-01 diff --git a/driver/xscreensaver-getimage-video b/driver/xscreensaver-getimage-video new file mode 100755 index 00000000..d79bc47c --- /dev/null +++ b/driver/xscreensaver-getimage-video @@ -0,0 +1,161 @@ +#!/usr/bin/perl -w +# Copyright © 2001 Jamie Zawinski , all rights reserved. +# +# 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. No representations are made about the suitability of this +# software for any purpose. It is provided "as is" without express or +# implied warranty. +# +# This program attempts to grab a single frame of video from the system's +# video capture card, and then load it on to the root window using the +# "xscreensaver-getimage-file" program. Various frame-grabbing programs +# are known, and the first one found is used. +# +# The various xscreensaver hacks that manipulate images ("slidescreen", +# "jigsaw", etc.) get the image to manipulate by running the +# "xscreensaver-getimage" program. +# +# "xscreensaver-getimage" will invoke this program, depending on the +# value of the "grabVideoFrames" setting in the ~/.xscreensaver file +# (or in /usr/lib/X11/app-defaults/XScreenSaver). +# +# Created: 13-Apr-01. + +require 5; +use diagnostics; +use strict; + +my $progname = $0; $progname =~ s@.*/@@g; +my $version = q{ $Revision: 1.4 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/; + +my $verbose = 0; + +# These are programs that can be used to grab a video frame. The first one +# of these programs that exists on $PATH will be used, and the image file +# is assumed to be written to stdout (in some image format acceptable to +# "xscreensaver-getimage-file", e.g., PPM or JPEG.) +# +# If you add other programs to this list, please let me know! +# + +my $tmpdir = $ENV{TMPDIR}; +$tmpdir = "/tmp" unless $tmpdir; + +my $tmpfile = "$tmpdir/xssgv.$$"; + +# this crap is because "vidtomem" can only write to a file, and uses +# a stupid, non-overridable file name format. +my $sgi_bogosity = "$tmpfile-00000.rgb"; + +my @programs = ( + + "bttvgrab -d q -Q -l 1 -o jpg -f $tmpfile", # BTTV + "qcam > $tmpfile", # Connectix Qcam + "streamer -o $tmpfile", # XawTV + "atitv snap $tmpfile", # ATI video capture card + + "vidtomem -f $tmpfile 2>- && mv $sgi_bogosity $tmpfile", # Silicon Graphics +); + + +sub error { + ($_) = @_; + print STDERR "$progname: $_\n"; + exit 1; +} + +my $displayer = undef; + +sub pick_grabber { + my @names = (); + + foreach my $cmd (@programs) { + $_ = $cmd; + my ($name) = m/^([^ ]+)/; + push @names, "\"$name\""; + print STDERR "$progname: looking for $name...\n" if ($verbose > 2); + foreach my $dir (split (/:/, $ENV{PATH})) { + print STDERR "$progname: checking $dir/$name\n" if ($verbose > 3); + if (-x "$dir/$name") { + $displayer = $name; + return $cmd; + } + } + } + + $names[$#names] = "or " . $names[$#names]; + error "none of: " . join (", ", @names) . " were found on \$PATH."; +} + + +my $use_stdout = 0; + +sub grab_image { + my $cmd = pick_grabber(); + unlink $tmpfile; + + print STDERR "$progname: executing \"$cmd\"\n" if ($verbose); + system ($cmd); + + if (-z $tmpfile) + { + unlink $tmpfile; + error "\"$cmd\" produced no data."; + } + + if ($use_stdout) { + local *IN; + my $ppm = ""; + my $reader = "<$tmpfile"; + + # horrid kludge for SGIs, since they don't use PPM... + if ($displayer eq "vidtomem") { + $reader = "sgitopnm $tmpfile"; + $reader .= " 2>/dev/null" if ($verbose <= 1); + $reader .= " |"; + } + + open(IN, $reader) || error "reading $tmpfile: $!"; + print STDERR "$progname: reading $tmpfile\n" if ($verbose > 1); + while () { $ppm .= $_; } + close IN; + unlink $tmpfile; + print STDOUT $ppm; + + } else { + + $cmd = "xscreensaver-getimage-file"; + $cmd .= " --verbose" if ($verbose); + $cmd .= " $tmpfile"; + + print STDERR "$progname: executing \"$cmd\"\n" if ($verbose); + system ($cmd); + + unlink $tmpfile; + } +} + + +sub usage { + print STDERR "usage: $progname [--verbose] [--stdout]\n"; + exit 1; +} + +sub main { + while ($_ = $ARGV[0]) { + shift @ARGV; + if ($_ eq "--verbose") { $verbose++; } + elsif (m/^-v+$/) { $verbose += length($_)-1; } + elsif (m/^--?stdout$/) { $use_stdout = 1; } + elsif (m/^-./) { usage; } + else { usage; } + } + + grab_image(); +} + +main; +exit 0; diff --git a/driver/xscreensaver-getimage-video.man b/driver/xscreensaver-getimage-video.man new file mode 100644 index 00000000..8539b4d0 --- /dev/null +++ b/driver/xscreensaver-getimage-video.man @@ -0,0 +1,51 @@ +.TH XScreenSaver 1 "15-Apr-2001 (3.32)" "X Version 11" +.SH NAME +xscreensaver-getimage-video - put a video frame on the root window +.SH SYNOPSIS +.B xscreensaver-getimage-video +[\-display \fIhost:display.screen\fP] [\--verbose] [\--stdout] +.SH DESCRIPTION +The \fIxscreensaver\-getimage\-video\fP program is a helper program +for the xscreensaver hacks that manipulate images. Specifically, it +is invoked by +.BR xscreensaver\-getimage (1) +as needed. This is not a user-level command. + +This program grabs a random frame of video from the system's video input, +and then loads it on the root window. It does this by figuring out which +frame-grabbing programs are installed on the system, and invoking the +first one it finds. Then it runs +.BR xscreensaver\-getimage\-file (1) +to load that image onto the root window. +.SH OPTIONS +.I xscreensaver-getimage-video +accepts the following options: +.TP 4 +.B --verbose +Print diagnostics. +.TP 4 +.B --stdout +Instead of loading the image onto the root window, write it to stdout +as a PBM file. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1), +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1), +.BR xscreensaver\-getimage\-file (1), +.BR bttvgrab (1), +.BR qcam (1), +.BR streamer (1), +.BR atitv (1), +.BR vidtomem (1) +.SH COPYRIGHT +Copyright \(co 2001 by Jamie Zawinski. 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. +No representations are made about the suitability of this software for +any purpose. It is provided "as is" without express or implied +warranty. +.SH AUTHOR +Jamie Zawinski , 14-Apr-01 diff --git a/driver/xscreensaver-getimage.c b/driver/xscreensaver-getimage.c new file mode 100644 index 00000000..c8e8228b --- /dev/null +++ b/driver/xscreensaver-getimage.c @@ -0,0 +1,377 @@ +/* xscreensaver, Copyright (c) 2001 by Jamie Zawinski + * + * 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. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +/* xscreensaver-getimage -- helper program that puts an image + (e.g., a snapshot of the desktop) onto the given window. + */ + +#include "utils.h" + +#include +#include + +#include "yarandom.h" +#include "grabscreen.h" +#include "resources.h" +#include "colorbars.h" +#include "prefs.h" +#include "vroot.h" + + +static char *defaults[] = { +#include "../driver/XScreenSaver_ad.h" + 0 +}; + + + +char *progname = 0; +char *progclass = "XScreenSaver"; +XrmDatabase db; +XtAppContext app; + +extern void grabscreen_verbose (void); + + +#define GETIMAGE_VIDEO_PROGRAM "xscreensaver-getimage-video" +#define GETIMAGE_FILE_PROGRAM "xscreensaver-getimage-file" + + +const char * +blurb (void) +{ + return progname; +} + + +static void +exec_error (char **av) +{ + char buf [512]; + char *token; + + sprintf (buf, "%s: could not execute \"%s\"", progname, av[0]); + perror (buf); + + if (errno == ENOENT && + (token = getenv("PATH"))) + { +# ifndef PATH_MAX +# ifdef MAXPATHLEN +# define PATH_MAX MAXPATHLEN +# else +# define PATH_MAX 2048 +# endif +# endif + char path[PATH_MAX]; + fprintf (stderr, "\n"); + *path = 0; +# if defined(HAVE_GETCWD) + getcwd (path, sizeof(path)); +# elif defined(HAVE_GETWD) + getwd (path); +# endif + if (*path) + fprintf (stderr, " Current directory is: %s\n", path); + fprintf (stderr, " PATH is:\n"); + token = strtok (strdup(token), ":"); + while (token) + { + fprintf (stderr, " %s\n", token); + token = strtok(0, ":"); + } + fprintf (stderr, "\n"); + } + + exit (1); +} + + +static void +get_image (Screen *screen, Window window, Bool verbose_p) +{ + Display *dpy = DisplayOfScreen (screen); + Bool desk_p = get_boolean_resource ("grabDesktopImages", "Boolean"); + Bool video_p = get_boolean_resource ("grabVideoFrames", "Boolean"); + Bool image_p = get_boolean_resource ("chooseRandomImages", "Boolean"); + char *dir = get_string_resource ("imageDirectory", "ImageDirectory"); + + enum { do_desk, do_video, do_image, do_bars } which = do_bars; + int count = 0; + if (desk_p) count++; + if (video_p) count++; + if (image_p) count++; + + if (verbose_p) + { + fprintf (stderr, "%s: grabDesktopImages: %s\n", + progname, desk_p ? "True" : "False"); + fprintf (stderr, "%s: grabVideoFrames: %s\n", + progname, video_p ? "True" : "False"); + fprintf (stderr, "%s: chooseRandomImages: %s\n", + progname, image_p ? "True" : "False"); + fprintf (stderr, "%s: imageDirectory: %s\n", + progname, (dir ? dir : "")); + } + + if (!dir || !*dir) + { + if (verbose_p && image_p) + fprintf (stderr, + "%s: no imageDirectory: turning off chooseRandomImages.\n", + progname); + image_p = False; + } + +# ifndef _VROOT_H_ +# error Error! This file definitely needs vroot.h! +# endif + + /* If the window is not the root window (real or virtual!) then the hack + that called this program is running in "-window" mode instead of in + "-root" mode. + + If the window is not the root window, then it's not possible to grab + video or images onto it (the contract with those programs is to draw on + the root.) So turn off those options in that case, and turn on desktop + grabbing. (Since we're running in a window on the desktop already, we + know it's not a security problem to expose desktop bits.) + */ + + if (window != VirtualRootWindowOfScreen (screen)) + { + Bool changed_p = False; + if (!desk_p) desk_p = True, changed_p = True; + if (video_p) video_p = False, changed_p = True; + if (image_p) image_p = False, changed_p = True; + if (changed_p && verbose_p) + fprintf (stderr, + "%s: not running on root window: grabbing desktop.\n", + progname); + } + + if (count == 0) + which = do_bars; + else + while (1) /* loop until we get one that's permitted */ + { + which = (random() % 3); + if (which == do_desk && desk_p) break; + if (which == do_video && video_p) break; + if (which == do_image && image_p) break; + } + + if (which == do_desk) + { + if (verbose_p) + { + fprintf (stderr, "%s: grabbing desktop image\n", progname); + grabscreen_verbose(); + } + grab_screen_image (screen, window); + XSync (dpy, False); + } + else if (which == do_bars) + { + XWindowAttributes xgwa; + XGetWindowAttributes (dpy, window, &xgwa); + if (verbose_p) + fprintf (stderr, "%s: drawing colorbars\n", progname); + draw_colorbars (dpy, window, 0, 0, xgwa.width, xgwa.height); + XSync (dpy, False); + } + else + { + char *av[10]; + memset (av, 0, sizeof(av)); + switch (which) + { + case do_video: + if (verbose_p) + fprintf (stderr, "%s: grabbing video\n", progname); + av[0] = GETIMAGE_VIDEO_PROGRAM; + break; + case do_image: + if (verbose_p) + fprintf (stderr, "%s: loading random image file\n", progname); + av[0] = GETIMAGE_FILE_PROGRAM; + av[1] = dir; + break; + default: + abort(); + break; + } + + if (verbose_p) + { + int i; + for (i = (sizeof(av)/sizeof(*av))-1; i > 1; i--) + av[i] = av[i-1]; + av[1] = strdup ("--verbose"); + } + + if (verbose_p) + { + int i = 0; + fprintf (stderr, "%s: executing \"", progname); + while (av[i]) + { + fprintf (stderr, "%s", av[i]); + if (av[++i]) fprintf (stderr, " "); + } + fprintf (stderr, "\"\n"); + } + +# ifdef HAVE_PUTENV + /* Store our "-display" argument into the $DISPLAY variable, + so that the subprocess gets the right display if the + prevailing $DISPLAY is different. */ + { + const char *odpy = DisplayString (dpy); + char *ndpy = (char *) malloc(strlen(odpy) + 20); + strcpy (ndpy, "DISPLAY="); + strcat (ndpy, odpy); + if (putenv (ndpy)) + abort (); + } +# endif /* HAVE_PUTENV */ + + close (ConnectionNumber (dpy)); /* close display fd */ + + execvp (av[0], av); /* shouldn't return */ + exec_error (av); + } +} + + +#if 0 +static Bool +mapper (XrmDatabase *db, XrmBindingList bindings, XrmQuarkList quarks, + XrmRepresentation *type, XrmValue *value, XPointer closure) +{ + int i; + for (i = 0; quarks[i]; i++) + { + if (bindings[i] == XrmBindTightly) + fprintf (stderr, (i == 0 ? "" : ".")); + else if (bindings[i] == XrmBindLoosely) + fprintf (stderr, "*"); + else + fprintf (stderr, " ??? "); + fprintf(stderr, "%s", XrmQuarkToString (quarks[i])); + } + + fprintf (stderr, ": %s\n", (char *) value->addr); + + return False; +} +#endif + + +int +main (int argc, char **argv) +{ + saver_preferences P; + Widget toplevel; + Display *dpy; + Screen *screen; + Window window = (Window) 0; + Bool verbose_p = False; + char *s; + int i; + + progname = argv[0]; + s = strrchr (progname, '/'); + if (s) progname = s+1; + + /* We must read exactly the same resources as xscreensaver. + That means we must have both the same progclass *and* progname, + at least as far as the resource database is concerned. So, + put "xscreensaver" in argv[0] while initializing Xt. + */ + argv[0] = "xscreensaver"; + toplevel = XtAppInitialize (&app, progclass, 0, 0, &argc, argv, + defaults, 0, 0); + argv[0] = progname; + dpy = XtDisplay (toplevel); + screen = XtScreen (toplevel); + db = XtDatabase (dpy); + + XtGetApplicationNameAndClass (dpy, &s, &progclass); + + /* half-assed way of avoiding buffer-overrun attacks. */ + if (strlen (progname) >= 100) progname[100] = 0; + + for (i = 1; i < argc; i++) + { + if (argv[i][0] == '-' && argv[i][1] == '-') argv[i]++; + if (!strcmp (argv[i], "-v") || + !strcmp (argv[i], "-verbose")) + verbose_p = True; + else if (window == 0) + { + unsigned long w; + char dummy; + + if (!strcmp (argv[i], "root") || + !strcmp (argv[i], "-root") || + !strcmp (argv[i], "--root")) + window = RootWindowOfScreen (screen); + + else if ((1 == sscanf (argv[i], " 0x%x %c", &w, &dummy) || + 1 == sscanf (argv[i], " %d %c", &w, &dummy)) && + w != 0) + window = (Window) w; + else + goto LOSE; + } + else + { + LOSE: + fprintf (stderr, + "usage: %s [ -display host:dpy.screen ] [ -v ] window-id\n", + progname); + fprintf (stderr, "\n" + "\tThis program puts an image of the desktop on the given window.\n" + "\tIt is used by those xscreensaver demos that operate on images.\n" + "\n"); + exit (1); + } + } + + if (window == 0) goto LOSE; + + /* Randomize -- only need to do this here because this program + doesn't use the `screenhack.h' or `lockmore.h' APIs. */ +# undef ya_rand_init + ya_rand_init (0); + + memset (&P, 0, sizeof(P)); + P.db = db; + load_init_file (&P); + + if (P.verbose_p) + verbose_p = True; + +#if 0 + /* Print out all the resources we read. */ + { + XrmName name = { 0 }; + XrmClass class = { 0 }; + int count = 0; + XrmEnumerateDatabase (db, &name, &class, XrmEnumAllLevels, mapper, + (XtPointer) &count); + } +#endif + + get_image (screen, window, verbose_p); + exit (0); +} diff --git a/driver/xscreensaver-getimage.man b/driver/xscreensaver-getimage.man new file mode 100644 index 00000000..04232ee7 --- /dev/null +++ b/driver/xscreensaver-getimage.man @@ -0,0 +1,68 @@ +.TH XScreenSaver 1 "15-Apr-2001 (3.32)" "X Version 11" +.SH NAME +xscreensaver-getimage - put some randomly-selected image on the root window +.SH SYNOPSIS +.B xscreensaver-getimage +[\-display \fIhost:display.screen\fP] [\--verbose] window-id +.SH DESCRIPTION +The \fIxscreensaver\-getimage\fP program is a helper program for the +xscreensaver hacks that manipulate images. This is not a user-level +command. + +This program selects a random image, and puts it on the specified +window. This image might be a snapshot of the desktop; or a frame +captured from the system's video input; or a randomly-selected image +from disk. +.SH OPTIONS +.I xscreensaver-getimage +reads the \fI~/.xscreensaver\fP file for configuration information. +It uses these settings: +.TP 4 +.B grabDesktopImages +Whether it is acceptable to grab snapshots of the desktop. +The security paranoid might want to turn this off, to avoid letting +people see (but not touch!) your desktop while the screen is locked. +.TP 4 +.B grabVideoFrames +Whether it is acceptable to grab frames of video from the system's video +input. Grabbing of video is done by invoking the +.BR xscreensaver-getimage-video (1) +program. +.TP 4 +.B chooseRandomImages +Whether it is acceptable to display random images found on disk. +Selection and loading of images is done by invoking the +.BR xscreensaver-getimage-file (1) +program. +.TP 4 +.B imageDirectory +When loading images from disk, this is the directory to search. +The directory will be searched recursively, and all files in it are +assumed to be images. +.PP +If none of the three options are set to True, then video +colorbars will be displayed instead. +.SH BUGS +If the target window is not the root window, then this program +will \fIalways\fP grab a desktop image. This means that if an +image-manipulating xscreensaver mode is run in a normal window, +it will always operate on a desktop image; it's only when it is +run in \fI-root\fP mode (or when invoked by xscreensaver) that +it will load image files or grab video. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1) +.BR xscreensaver\-demo (1) +.BR xscreensaver\-getimage\-file (1) +.BR xscreensaver\-getimage\-video (1) +.SH COPYRIGHT +Copyright \(co 2001 by Jamie Zawinski. 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. +No representations are made about the suitability of this software for +any purpose. It is provided "as is" without express or implied +warranty. +.SH AUTHOR +Jamie Zawinski , 14-Apr-01 diff --git a/driver/xscreensaver.c b/driver/xscreensaver.c index 641ccdda..08838dfa 100644 --- a/driver/xscreensaver.c +++ b/driver/xscreensaver.c @@ -740,6 +740,10 @@ initialize_per_screen_info (saver_info *si, Widget toplevel_shell) } si->fading_possible_p = found_any_writable_cells; + +#ifdef HAVE_XF86VMODE_GAMMA + si->fading_possible_p = True; /* if we can gamma fade, go for it */ +#endif } diff --git a/driver/xscreensaver.man b/driver/xscreensaver.man index 3b8b059d..9d33a72e 100644 --- a/driver/xscreensaver.man +++ b/driver/xscreensaver.man @@ -11,7 +11,7 @@ .if n .sp 1 .if t .sp .5 .. -.TH XScreenSaver 1 "29-Mar-2001 (3.31)" "X Version 11" +.TH XScreenSaver 1 "15-Apr-2001 (3.32)" "X Version 11" .SH NAME xscreensaver - graphics hack and screen locker, launched when the user is idle .SH SYNOPSIS diff --git a/hacks/Makefile.in b/hacks/Makefile.in index 7dd7ad3f..e0586ed0 100644 --- a/hacks/Makefile.in +++ b/hacks/Makefile.in @@ -41,35 +41,34 @@ X_CFLAGS = @X_CFLAGS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ +XMU_LIBS = @XMU_LIBS@ # Note: see comment in ../driver/Makefile.in for explanation of X_LIBS, etc. # HACK_PRE = $(LIBS) $(X_LIBS) -HACK_POST = $(X_PRE_LIBS) -lXt -lX11 -lXext $(X_EXTRA_LIBS) -lm +HACK_POST = $(X_PRE_LIBS) -lXt -lX11 $(XMU_LIBS) -lXext $(X_EXTRA_LIBS) -lm HACK_LIBS = $(HACK_PRE) @HACK_LIBS@ $(HACK_POST) XPM_LIBS = $(HACK_PRE) @XPM_LIBS@ @HACK_LIBS@ $(HACK_POST) XLOCK_LIBS = $(HACK_LIBS) -SGI_VIDEO_OBJS = @SGI_VIDEO_OBJS@ -SGI_VIDEO_LIBS = @SGI_VIDEO_LIBS@ UTILS_SRC = $(srcdir)/../utils UTILS_BIN = ../utils -INCLUDES = -I$(srcdir) -I$(UTILS_SRC) -I.. @INCLUDES@ +INCLUDES = -I. -I$(srcdir) -I$(UTILS_SRC) -I.. @INCLUDES@ UTIL_SRCS = $(UTILS_SRC)/alpha.c $(UTILS_SRC)/colors.c \ - $(UTILS_SRC)/grabscreen.c $(UTILS_SRC)/hsv.c \ - $(UTILS_SRC)/resources.c $(UTILS_SRC)/spline.c \ - $(UTILS_SRC)/usleep.c $(UTILS_SRC)/visual.c \ - $(UTILS_SRC)/logo.c $(UTILS_SRC)/yarandom.c \ - $(UTILS_SRC)/erase.c $(UTILS_SRC)/sgivideo.c \ + $(UTILS_SRC)/grabscreen.c $(UTILS_SRC)/grabclient.c \ + $(UTILS_SRC)/hsv.c $(UTILS_SRC)/resources.c \ + $(UTILS_SRC)/spline.c $(UTILS_SRC)/usleep.c \ + $(UTILS_SRC)/visual.c $(UTILS_SRC)/logo.c \ + $(UTILS_SRC)/yarandom.c $(UTILS_SRC)/erase.c \ $(UTILS_SRC)/xshm.c $(UTILS_SRC)/xdbe.c UTIL_OBJS = $(UTILS_BIN)/alpha.o $(UTILS_BIN)/colors.o \ - $(UTILS_BIN)/grabscreen.o $(UTILS_BIN)/hsv.o \ - $(UTILS_BIN)/resources.o $(UTILS_BIN)/spline.o \ - $(UTILS_BIN)/usleep.o $(UTILS_BIN)/visual.o \ - $(UTILS_BIN)/logo.o $(UTILS_BIN)/yarandom.o \ - $(UTILS_BIN)/erase.o $(UTILS_BIN)/sgivideo.o \ + $(UTILS_BIN)/grabscreen.o $(UTILS_BIN)/grabclient.o \ + $(UTILS_BIN)/hsv.o $(UTILS_BIN)/resources.o \ + $(UTILS_BIN)/spline.o $(UTILS_BIN)/usleep.o \ + $(UTILS_BIN)/visual.o $(UTILS_BIN)/logo.o \ + $(UTILS_BIN)/yarandom.o $(UTILS_BIN)/erase.o \ $(UTILS_SRC)/xshm.o $(UTILS_SRC)/xdbe.o SRCS = attraction.c blitspin.c bouboule.c braid.c bubbles.c \ @@ -134,11 +133,9 @@ HACK_OBJS_1 = $(UTILS_BIN)/resources.o $(UTILS_BIN)/visual.o \ HACK_OBJS = screenhack.o $(HACK_OBJS_1) XLOCK_OBJS = screenhack-xlock.o xlockmore.o $(COLOR_OBJS) $(HACK_OBJS_1) COLOR_OBJS = $(UTILS_BIN)/hsv.o $(UTILS_BIN)/colors.o -GRAB_OBJS_1 = $(UTILS_BIN)/grabscreen.o $(SGI_VIDEO_OBJS) -GRAB_OBJS = $(GRAB_OBJS_1) $(COLOR_OBJS) +GRAB_OBJS = $(UTILS_BIN)/grabclient.o XSHM_OBJS = $(UTILS_BIN)/xshm.o XDBE_OBJS = $(UTILS_BIN)/xdbe.o -GRAB_LIBS = $(SGI_VIDEO_LIBS) HDRS = bubbles.h screenhack.h xlockmore.h xlockmoreI.h automata.h \ bumps.h @@ -151,7 +148,7 @@ MEN = attraction.man blitspin.man bouboule.man braid.man \ noseguy.man pedal.man penrose.man pyro.man qix.man \ rocks.man rorschach.man sierpinski.man slidescreen.man \ slip.man sphere.man spiral.man strange.man swirl.man \ - goop.man starfish.man munch.man rd-bomb.man \ + goop.man starfish.man munch.man rd-bomb.man bumps.man \ xjack.man xlyap.man jigsaw.man epicycle.man bsod.man \ sonar.man t3d.man squiral.man spotlight.man critical.man \ vidwhacker.man webcollage.man xsublim.man distort.man \ @@ -183,10 +180,10 @@ uninstall: uninstall-program uninstall-man install-strip: $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \ - INSTALL_SETUID='$(INSTALL_SETUID) -s' \ install -install-program: $(EXES) +# the hacks, in $HACKDIR +install-program:: $(EXES) @if [ ! -d $(install_prefix)$(HACKDIR) ]; then \ $(INSTALL_DIRS) $(install_prefix)$(HACKDIR) ; \ fi ; \ @@ -360,8 +357,7 @@ distdepend:: $(srcdir)/../setup.com # $(UTILS_BIN)/alpha.o: $(UTILS_SRC)/alpha.c $(UTILS_BIN)/colors.o: $(UTILS_SRC)/colors.c -$(UTILS_BIN)/grabscreen.o: $(UTILS_SRC)/grabscreen.c -$(UTILS_BIN)/sgivideo.o: $(UTILS_SRC)/sgivideo.c +$(UTILS_BIN)/grabclient.o: $(UTILS_SRC)/grabclient.c $(UTILS_BIN)/hsv.o: $(UTILS_SRC)/hsv.c $(UTILS_BIN)/resources.o: $(UTILS_SRC)/resources.c $(UTILS_BIN)/spline.o: $(UTILS_SRC)/spline.c @@ -393,18 +389,19 @@ screenhack-xlock.o: screenhack.c ALP = $(UTILS_BIN)/alpha.o HSV = $(UTILS_BIN)/hsv.o SPL = $(UTILS_BIN)/spline.o -LOGO = $(UTILS_BIN)/logo.o $(SPL) +LOGO = $(UTILS_BIN)/logo.o GRAB = $(GRAB_OBJS) ERASE = $(UTILS_BIN)/erase.o COL = $(COLOR_OBJS) SHM = $(XSHM_OBJS) DBE = $(XDBE_OBJS) +BARS = $(UTILS_BIN)/colorbars.o $(LOGO) CC_HACK = $(CC) $(LDFLAGS) xscreensaver-sgigl: xscreensaver-sgigl.c $(CC) $(LDFLAGS) -o $@ $< -I$(UTILS_SRC) $(HACK_PRE) \ - -lXmu -lX11 -lXext $(X_EXTRA_LIBS) -lm + $(XMU_LIBS) -lX11 -lXext $(X_EXTRA_LIBS) -lm # The rules for those hacks which follow the `screenhack.c' API. @@ -417,13 +414,13 @@ attraction: attraction.o $(HACK_OBJS) $(COL) $(SPL) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(SPL) $(HACK_LIBS) blitspin: blitspin.o $(HACK_OBJS) $(GRAB) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(XPM_LIBS) $(GRAB_LIBS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(XPM_LIBS) bubbles: bubbles.o $(HACK_OBJS) bubbles-default.o $(CC_HACK) -o $@ $@.o $(HACK_OBJS) bubbles-default.o $(XPM_LIBS) decayscreen: decayscreen.o $(HACK_OBJS) $(GRAB) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(HACK_LIBS) $(GRAB_LIBS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(HACK_LIBS) deco: deco.o $(HACK_OBJS) $(COL) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(HACK_LIBS) @@ -480,7 +477,7 @@ rorschach: rorschach.o $(HACK_OBJS) $(HSV) $(ERASE) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HSV) $(ERASE) $(HACK_LIBS) slidescreen: slidescreen.o $(HACK_OBJS) $(GRAB) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(HACK_LIBS) $(GRAB_LIBS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(HACK_LIBS) goop: goop.o $(HACK_OBJS) $(HSV) $(ALP) $(SPL) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HSV) $(ALP) $(SPL) $(HACK_LIBS) @@ -504,7 +501,7 @@ xlyap: xlyap.o $(HACK_OBJS) $(COL) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(HACK_LIBS) jigsaw: jigsaw.o $(HACK_OBJS) $(GRAB) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(HACK_LIBS) $(GRAB_LIBS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(HACK_LIBS) cynosure: cynosure.o $(HACK_OBJS) $(COL) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(HACK_LIBS) @@ -519,10 +516,10 @@ truchet: truchet.o $(HACK_OBJS) $(COL) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(HACK_LIBS) bsod: bsod.o $(HACK_OBJS) $(GRAB) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(HACK_LIBS) $(XPM_LIBS) $(GRAB_LIBS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(HACK_LIBS) $(XPM_LIBS) distort: distort.o $(HACK_OBJS) $(GRAB) $(SHM) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS) $(GRAB_LIBS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS) kumppa: kumppa.o $(HACK_OBJS) $(DBE) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(DBE) $(HACK_LIBS) @@ -552,7 +549,7 @@ wander: wander.o $(HACK_OBJS) $(COL) $(ERASE) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS) spotlight: spotlight.o $(HACK_OBJS) $(GRAB) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(HACK_LIBS) $(GRAB_LIBS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(HACK_LIBS) critical: critical.o $(HACK_OBJS) $(COL) $(ERASE) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS) @@ -576,13 +573,13 @@ blaster: blaster.o $(HACK_OBJS) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) bumps: bumps.o $(HACK_OBJS) $(GRAB) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(HACK_LIBS) $(GRAB_LIBS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(HACK_LIBS) -ripples: ripples.o $(HACK_OBJS) $(SHM) $(GRAB) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(SHM) $(GRAB) $(HACK_LIBS) $(GRAB_LIBS) +ripples: ripples.o $(HACK_OBJS) $(SHM) $(COL) $(GRAB) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(SHM) $(COL) $(GRAB) $(HACK_LIBS) -xteevee: xteevee.o $(HACK_OBJS) $(GRAB) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(HACK_LIBS) $(GRAB_LIBS) +xteevee: xteevee.o $(BARS) $(HACK_OBJS) $(GRAB) + $(CC_HACK) -o $@ $@.o $(BARS) $(HACK_OBJS) $(GRAB) $(HACK_LIBS) xspirograph: xspirograph.o $(HACK_OBJS) $(COL) $(ERASE) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS) @@ -597,13 +594,13 @@ hyperball: hyperball.o $(HACK_OBJS) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) zoom: zoom.o $(HACK_OBJS) $(GRAB) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(HACK_LIBS) $(GRAB_LIBS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(HACK_LIBS) whirlwindwarp: whirlwindwarp.o $(HACK_OBJS) $(COL) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(HACK_LIBS) rotzoomer: rotzoomer.o $(HACK_OBJS) $(GRAB) $(SHM) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS) $(GRAB_LIBS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS) # The rules for those hacks which follow the `xlockmore' API. @@ -661,7 +658,7 @@ sierpinski: sierpinski.o $(XLOCK_OBJS) $(CC_HACK) -o $@ $@.o $(XLOCK_OBJS) $(HACK_LIBS) slip: slip.o $(XLOCK_OBJS) $(GRAB) - $(CC_HACK) -o $@ $@.o $(XLOCK_OBJS) $(GRAB_OBJS_1) $(HACK_LIBS) $(GRAB_LIBS) + $(CC_HACK) -o $@ $@.o $(XLOCK_OBJS) $(GRAB) $(HACK_LIBS) sphere: sphere.o $(XLOCK_OBJS) $(CC_HACK) -o $@ $@.o $(XLOCK_OBJS) $(HACK_LIBS) @@ -723,62 +720,22 @@ xsublim: xsublim.o $(HACK_OBJS_1) attraction.o: $(srcdir)/screenhack.h attraction.o: ../config.h -attraction.o: $(UTILS_SRC)/yarandom.h -attraction.o: $(UTILS_SRC)/usleep.h -attraction.o: $(UTILS_SRC)/resources.h -attraction.o: $(UTILS_SRC)/hsv.h -attraction.o: $(UTILS_SRC)/colors.h -attraction.o: $(UTILS_SRC)/grabscreen.h -attraction.o: $(UTILS_SRC)/visual.h -attraction.o: $(UTILS_SRC)/spline.h blitspin.o: $(srcdir)/screenhack.h blitspin.o: ../config.h -blitspin.o: $(UTILS_SRC)/yarandom.h -blitspin.o: $(UTILS_SRC)/usleep.h -blitspin.o: $(UTILS_SRC)/resources.h -blitspin.o: $(UTILS_SRC)/hsv.h -blitspin.o: $(UTILS_SRC)/colors.h -blitspin.o: $(UTILS_SRC)/grabscreen.h -blitspin.o: $(UTILS_SRC)/visual.h blitspin.o: $(srcdir)/images/som.xbm bouboule.o: $(srcdir)/xlockmore.h bouboule.o: ../config.h bouboule.o: $(srcdir)/xlockmoreI.h bouboule.o: $(srcdir)/screenhack.h -bouboule.o: $(UTILS_SRC)/yarandom.h -bouboule.o: $(UTILS_SRC)/usleep.h -bouboule.o: $(UTILS_SRC)/resources.h -bouboule.o: $(UTILS_SRC)/hsv.h -bouboule.o: $(UTILS_SRC)/colors.h -bouboule.o: $(UTILS_SRC)/grabscreen.h -bouboule.o: $(UTILS_SRC)/visual.h -bouboule.o: $(UTILS_SRC)/xshm.h braid.o: $(srcdir)/xlockmore.h braid.o: ../config.h braid.o: $(srcdir)/xlockmoreI.h braid.o: $(srcdir)/screenhack.h -braid.o: $(UTILS_SRC)/yarandom.h -braid.o: $(UTILS_SRC)/usleep.h -braid.o: $(UTILS_SRC)/resources.h -braid.o: $(UTILS_SRC)/hsv.h -braid.o: $(UTILS_SRC)/colors.h -braid.o: $(UTILS_SRC)/grabscreen.h -braid.o: $(UTILS_SRC)/visual.h -braid.o: $(UTILS_SRC)/xshm.h -braid.o: $(UTILS_SRC)/erase.h bubbles.o: $(srcdir)/screenhack.h bubbles.o: ../config.h -bubbles.o: $(UTILS_SRC)/yarandom.h -bubbles.o: $(UTILS_SRC)/usleep.h -bubbles.o: $(UTILS_SRC)/resources.h -bubbles.o: $(UTILS_SRC)/hsv.h -bubbles.o: $(UTILS_SRC)/colors.h -bubbles.o: $(UTILS_SRC)/grabscreen.h -bubbles.o: $(UTILS_SRC)/visual.h bubbles.o: $(srcdir)/bubbles.h bubbles-default.o: ../config.h bubbles-default.o: $(srcdir)/bubbles.h -bubbles-default.o: $(UTILS_SRC)/yarandom.h bubbles-default.o: $(srcdir)/images/bubbles/blood1.xpm bubbles-default.o: $(srcdir)/images/bubbles/blood2.xpm bubbles-default.o: $(srcdir)/images/bubbles/blood3.xpm @@ -825,273 +782,79 @@ bubbles-default.o: $(srcdir)/images/bubbles/jade10.xpm bubbles-default.o: $(srcdir)/images/bubbles/jade11.xpm decayscreen.o: $(srcdir)/screenhack.h decayscreen.o: ../config.h -decayscreen.o: $(UTILS_SRC)/yarandom.h -decayscreen.o: $(UTILS_SRC)/usleep.h -decayscreen.o: $(UTILS_SRC)/resources.h -decayscreen.o: $(UTILS_SRC)/hsv.h -decayscreen.o: $(UTILS_SRC)/colors.h -decayscreen.o: $(UTILS_SRC)/grabscreen.h -decayscreen.o: $(UTILS_SRC)/visual.h deco.o: $(srcdir)/screenhack.h deco.o: ../config.h -deco.o: $(UTILS_SRC)/yarandom.h -deco.o: $(UTILS_SRC)/usleep.h -deco.o: $(UTILS_SRC)/resources.h -deco.o: $(UTILS_SRC)/hsv.h -deco.o: $(UTILS_SRC)/colors.h -deco.o: $(UTILS_SRC)/grabscreen.h -deco.o: $(UTILS_SRC)/visual.h drift.o: $(srcdir)/xlockmore.h drift.o: ../config.h drift.o: $(srcdir)/xlockmoreI.h drift.o: $(srcdir)/screenhack.h -drift.o: $(UTILS_SRC)/yarandom.h -drift.o: $(UTILS_SRC)/usleep.h -drift.o: $(UTILS_SRC)/resources.h -drift.o: $(UTILS_SRC)/hsv.h -drift.o: $(UTILS_SRC)/colors.h -drift.o: $(UTILS_SRC)/grabscreen.h -drift.o: $(UTILS_SRC)/visual.h -drift.o: $(UTILS_SRC)/xshm.h -drift.o: $(UTILS_SRC)/erase.h flag.o: $(srcdir)/xlockmore.h flag.o: ../config.h flag.o: $(srcdir)/xlockmoreI.h flag.o: $(srcdir)/screenhack.h -flag.o: $(UTILS_SRC)/yarandom.h -flag.o: $(UTILS_SRC)/usleep.h -flag.o: $(UTILS_SRC)/resources.h -flag.o: $(UTILS_SRC)/hsv.h -flag.o: $(UTILS_SRC)/colors.h -flag.o: $(UTILS_SRC)/grabscreen.h -flag.o: $(UTILS_SRC)/visual.h -flag.o: $(UTILS_SRC)/xshm.h flag.o: $(srcdir)/images/bob.xbm flame.o: $(srcdir)/screenhack.h flame.o: ../config.h -flame.o: $(UTILS_SRC)/yarandom.h -flame.o: $(UTILS_SRC)/usleep.h -flame.o: $(UTILS_SRC)/resources.h -flame.o: $(UTILS_SRC)/hsv.h -flame.o: $(UTILS_SRC)/colors.h -flame.o: $(UTILS_SRC)/grabscreen.h -flame.o: $(UTILS_SRC)/visual.h forest.o: ../config.h forest.o: $(srcdir)/xlockmore.h forest.o: $(srcdir)/xlockmoreI.h forest.o: $(srcdir)/screenhack.h -forest.o: $(UTILS_SRC)/yarandom.h -forest.o: $(UTILS_SRC)/usleep.h -forest.o: $(UTILS_SRC)/resources.h -forest.o: $(UTILS_SRC)/hsv.h -forest.o: $(UTILS_SRC)/colors.h -forest.o: $(UTILS_SRC)/grabscreen.h -forest.o: $(UTILS_SRC)/visual.h -forest.o: $(UTILS_SRC)/xshm.h vines.o: $(srcdir)/xlockmore.h vines.o: ../config.h vines.o: $(srcdir)/xlockmoreI.h vines.o: $(srcdir)/screenhack.h -vines.o: $(UTILS_SRC)/yarandom.h -vines.o: $(UTILS_SRC)/usleep.h -vines.o: $(UTILS_SRC)/resources.h -vines.o: $(UTILS_SRC)/hsv.h -vines.o: $(UTILS_SRC)/colors.h -vines.o: $(UTILS_SRC)/grabscreen.h -vines.o: $(UTILS_SRC)/visual.h -vines.o: $(UTILS_SRC)/xshm.h -vines.o: $(UTILS_SRC)/erase.h galaxy.o: $(srcdir)/xlockmore.h galaxy.o: ../config.h galaxy.o: $(srcdir)/xlockmoreI.h galaxy.o: $(srcdir)/screenhack.h -galaxy.o: $(UTILS_SRC)/yarandom.h -galaxy.o: $(UTILS_SRC)/usleep.h -galaxy.o: $(UTILS_SRC)/resources.h -galaxy.o: $(UTILS_SRC)/hsv.h -galaxy.o: $(UTILS_SRC)/colors.h -galaxy.o: $(UTILS_SRC)/grabscreen.h -galaxy.o: $(UTILS_SRC)/visual.h -galaxy.o: $(UTILS_SRC)/xshm.h grav.o: $(srcdir)/xlockmore.h grav.o: ../config.h grav.o: $(srcdir)/xlockmoreI.h grav.o: $(srcdir)/screenhack.h -grav.o: $(UTILS_SRC)/yarandom.h -grav.o: $(UTILS_SRC)/usleep.h -grav.o: $(UTILS_SRC)/resources.h -grav.o: $(UTILS_SRC)/hsv.h -grav.o: $(UTILS_SRC)/colors.h -grav.o: $(UTILS_SRC)/grabscreen.h -grav.o: $(UTILS_SRC)/visual.h -grav.o: $(UTILS_SRC)/xshm.h greynetic.o: $(srcdir)/screenhack.h greynetic.o: ../config.h -greynetic.o: $(UTILS_SRC)/yarandom.h -greynetic.o: $(UTILS_SRC)/usleep.h -greynetic.o: $(UTILS_SRC)/resources.h -greynetic.o: $(UTILS_SRC)/hsv.h -greynetic.o: $(UTILS_SRC)/colors.h -greynetic.o: $(UTILS_SRC)/grabscreen.h -greynetic.o: $(UTILS_SRC)/visual.h halo.o: $(srcdir)/screenhack.h halo.o: ../config.h -halo.o: $(UTILS_SRC)/yarandom.h -halo.o: $(UTILS_SRC)/usleep.h -halo.o: $(UTILS_SRC)/resources.h -halo.o: $(UTILS_SRC)/hsv.h -halo.o: $(UTILS_SRC)/colors.h -halo.o: $(UTILS_SRC)/grabscreen.h -halo.o: $(UTILS_SRC)/visual.h helix.o: $(srcdir)/screenhack.h helix.o: ../config.h -helix.o: $(UTILS_SRC)/yarandom.h -helix.o: $(UTILS_SRC)/usleep.h -helix.o: $(UTILS_SRC)/resources.h -helix.o: $(UTILS_SRC)/hsv.h -helix.o: $(UTILS_SRC)/colors.h -helix.o: $(UTILS_SRC)/grabscreen.h -helix.o: $(UTILS_SRC)/visual.h -helix.o: $(UTILS_SRC)/erase.h hopalong.o: $(srcdir)/xlockmore.h hopalong.o: ../config.h hopalong.o: $(srcdir)/xlockmoreI.h hopalong.o: $(srcdir)/screenhack.h -hopalong.o: $(UTILS_SRC)/yarandom.h -hopalong.o: $(UTILS_SRC)/usleep.h -hopalong.o: $(UTILS_SRC)/resources.h -hopalong.o: $(UTILS_SRC)/hsv.h -hopalong.o: $(UTILS_SRC)/colors.h -hopalong.o: $(UTILS_SRC)/grabscreen.h -hopalong.o: $(UTILS_SRC)/visual.h -hopalong.o: $(UTILS_SRC)/xshm.h -hopalong.o: $(UTILS_SRC)/erase.h hypercube.o: $(srcdir)/screenhack.h hypercube.o: ../config.h -hypercube.o: $(UTILS_SRC)/yarandom.h -hypercube.o: $(UTILS_SRC)/usleep.h -hypercube.o: $(UTILS_SRC)/resources.h -hypercube.o: $(UTILS_SRC)/hsv.h -hypercube.o: $(UTILS_SRC)/colors.h -hypercube.o: $(UTILS_SRC)/grabscreen.h -hypercube.o: $(UTILS_SRC)/visual.h ifs.o: $(srcdir)/xlockmore.h ifs.o: ../config.h ifs.o: $(srcdir)/xlockmoreI.h ifs.o: $(srcdir)/screenhack.h -ifs.o: $(UTILS_SRC)/yarandom.h -ifs.o: $(UTILS_SRC)/usleep.h -ifs.o: $(UTILS_SRC)/resources.h -ifs.o: $(UTILS_SRC)/hsv.h -ifs.o: $(UTILS_SRC)/colors.h -ifs.o: $(UTILS_SRC)/grabscreen.h -ifs.o: $(UTILS_SRC)/visual.h -ifs.o: $(UTILS_SRC)/xshm.h imsmap.o: $(srcdir)/screenhack.h imsmap.o: ../config.h -imsmap.o: $(UTILS_SRC)/yarandom.h -imsmap.o: $(UTILS_SRC)/usleep.h -imsmap.o: $(UTILS_SRC)/resources.h -imsmap.o: $(UTILS_SRC)/hsv.h -imsmap.o: $(UTILS_SRC)/colors.h -imsmap.o: $(UTILS_SRC)/grabscreen.h -imsmap.o: $(UTILS_SRC)/visual.h julia.o: $(srcdir)/xlockmore.h julia.o: ../config.h julia.o: $(srcdir)/xlockmoreI.h julia.o: $(srcdir)/screenhack.h -julia.o: $(UTILS_SRC)/yarandom.h -julia.o: $(UTILS_SRC)/usleep.h -julia.o: $(UTILS_SRC)/resources.h -julia.o: $(UTILS_SRC)/hsv.h -julia.o: $(UTILS_SRC)/colors.h -julia.o: $(UTILS_SRC)/grabscreen.h -julia.o: $(UTILS_SRC)/visual.h -julia.o: $(UTILS_SRC)/xshm.h -kaleidescope.o: $(UTILS_SRC)/spline.h kaleidescope.o: $(srcdir)/screenhack.h kaleidescope.o: ../config.h -kaleidescope.o: $(UTILS_SRC)/yarandom.h -kaleidescope.o: $(UTILS_SRC)/usleep.h -kaleidescope.o: $(UTILS_SRC)/resources.h -kaleidescope.o: $(UTILS_SRC)/hsv.h -kaleidescope.o: $(UTILS_SRC)/colors.h -kaleidescope.o: $(UTILS_SRC)/grabscreen.h -kaleidescope.o: $(UTILS_SRC)/visual.h laser.o: $(srcdir)/xlockmore.h laser.o: ../config.h laser.o: $(srcdir)/xlockmoreI.h laser.o: $(srcdir)/screenhack.h -laser.o: $(UTILS_SRC)/yarandom.h -laser.o: $(UTILS_SRC)/usleep.h -laser.o: $(UTILS_SRC)/resources.h -laser.o: $(UTILS_SRC)/hsv.h -laser.o: $(UTILS_SRC)/colors.h -laser.o: $(UTILS_SRC)/grabscreen.h -laser.o: $(UTILS_SRC)/visual.h -laser.o: $(UTILS_SRC)/xshm.h lightning.o: $(srcdir)/xlockmore.h lightning.o: ../config.h lightning.o: $(srcdir)/xlockmoreI.h lightning.o: $(srcdir)/screenhack.h -lightning.o: $(UTILS_SRC)/yarandom.h -lightning.o: $(UTILS_SRC)/usleep.h -lightning.o: $(UTILS_SRC)/resources.h -lightning.o: $(UTILS_SRC)/hsv.h -lightning.o: $(UTILS_SRC)/colors.h -lightning.o: $(UTILS_SRC)/grabscreen.h -lightning.o: $(UTILS_SRC)/visual.h -lightning.o: $(UTILS_SRC)/xshm.h lisa.o: $(srcdir)/xlockmore.h lisa.o: ../config.h lisa.o: $(srcdir)/xlockmoreI.h lisa.o: $(srcdir)/screenhack.h -lisa.o: $(UTILS_SRC)/yarandom.h -lisa.o: $(UTILS_SRC)/usleep.h -lisa.o: $(UTILS_SRC)/resources.h -lisa.o: $(UTILS_SRC)/hsv.h -lisa.o: $(UTILS_SRC)/colors.h -lisa.o: $(UTILS_SRC)/grabscreen.h -lisa.o: $(UTILS_SRC)/visual.h -lisa.o: $(UTILS_SRC)/xshm.h lmorph.o: $(srcdir)/screenhack.h lmorph.o: ../config.h -lmorph.o: $(UTILS_SRC)/yarandom.h -lmorph.o: $(UTILS_SRC)/usleep.h -lmorph.o: $(UTILS_SRC)/resources.h -lmorph.o: $(UTILS_SRC)/hsv.h -lmorph.o: $(UTILS_SRC)/colors.h -lmorph.o: $(UTILS_SRC)/grabscreen.h -lmorph.o: $(UTILS_SRC)/visual.h maze.o: $(srcdir)/screenhack.h maze.o: ../config.h -maze.o: $(UTILS_SRC)/yarandom.h -maze.o: $(UTILS_SRC)/usleep.h -maze.o: $(UTILS_SRC)/resources.h -maze.o: $(UTILS_SRC)/hsv.h -maze.o: $(UTILS_SRC)/colors.h -maze.o: $(UTILS_SRC)/grabscreen.h -maze.o: $(UTILS_SRC)/visual.h -maze.o: $(UTILS_SRC)/erase.h moire.o: $(srcdir)/screenhack.h moire.o: ../config.h -moire.o: $(UTILS_SRC)/yarandom.h -moire.o: $(UTILS_SRC)/usleep.h -moire.o: $(UTILS_SRC)/resources.h -moire.o: $(UTILS_SRC)/hsv.h -moire.o: $(UTILS_SRC)/colors.h -moire.o: $(UTILS_SRC)/grabscreen.h -moire.o: $(UTILS_SRC)/visual.h -moire.o: $(UTILS_SRC)/xshm.h noseguy.o: $(srcdir)/screenhack.h noseguy.o: ../config.h -noseguy.o: $(UTILS_SRC)/yarandom.h -noseguy.o: $(UTILS_SRC)/usleep.h -noseguy.o: $(UTILS_SRC)/resources.h -noseguy.o: $(UTILS_SRC)/hsv.h -noseguy.o: $(UTILS_SRC)/colors.h -noseguy.o: $(UTILS_SRC)/grabscreen.h -noseguy.o: $(UTILS_SRC)/visual.h noseguy.o: $(srcdir)/images/noseguy/nose-f1.xpm noseguy.o: $(srcdir)/images/noseguy/nose-f2.xpm noseguy.o: $(srcdir)/images/noseguy/nose-f3.xpm @@ -1102,331 +865,94 @@ noseguy.o: $(srcdir)/images/noseguy/nose-r1.xpm noseguy.o: $(srcdir)/images/noseguy/nose-r2.xpm pedal.o: $(srcdir)/screenhack.h pedal.o: ../config.h -pedal.o: $(UTILS_SRC)/yarandom.h -pedal.o: $(UTILS_SRC)/usleep.h -pedal.o: $(UTILS_SRC)/resources.h -pedal.o: $(UTILS_SRC)/hsv.h -pedal.o: $(UTILS_SRC)/colors.h -pedal.o: $(UTILS_SRC)/grabscreen.h -pedal.o: $(UTILS_SRC)/visual.h penrose.o: $(srcdir)/xlockmore.h penrose.o: ../config.h penrose.o: $(srcdir)/xlockmoreI.h penrose.o: $(srcdir)/screenhack.h -penrose.o: $(UTILS_SRC)/yarandom.h -penrose.o: $(UTILS_SRC)/usleep.h -penrose.o: $(UTILS_SRC)/resources.h -penrose.o: $(UTILS_SRC)/hsv.h -penrose.o: $(UTILS_SRC)/colors.h -penrose.o: $(UTILS_SRC)/grabscreen.h -penrose.o: $(UTILS_SRC)/visual.h -penrose.o: $(UTILS_SRC)/xshm.h pyro.o: $(srcdir)/screenhack.h pyro.o: ../config.h -pyro.o: $(UTILS_SRC)/yarandom.h -pyro.o: $(UTILS_SRC)/usleep.h -pyro.o: $(UTILS_SRC)/resources.h -pyro.o: $(UTILS_SRC)/hsv.h -pyro.o: $(UTILS_SRC)/colors.h -pyro.o: $(UTILS_SRC)/grabscreen.h -pyro.o: $(UTILS_SRC)/visual.h qix.o: $(srcdir)/screenhack.h qix.o: ../config.h -qix.o: $(UTILS_SRC)/yarandom.h -qix.o: $(UTILS_SRC)/usleep.h -qix.o: $(UTILS_SRC)/resources.h -qix.o: $(UTILS_SRC)/hsv.h -qix.o: $(UTILS_SRC)/colors.h -qix.o: $(UTILS_SRC)/grabscreen.h -qix.o: $(UTILS_SRC)/visual.h -qix.o: $(UTILS_SRC)/alpha.h rocks.o: $(srcdir)/screenhack.h rocks.o: ../config.h -rocks.o: $(UTILS_SRC)/yarandom.h -rocks.o: $(UTILS_SRC)/usleep.h -rocks.o: $(UTILS_SRC)/resources.h -rocks.o: $(UTILS_SRC)/hsv.h -rocks.o: $(UTILS_SRC)/colors.h -rocks.o: $(UTILS_SRC)/grabscreen.h -rocks.o: $(UTILS_SRC)/visual.h rorschach.o: $(srcdir)/screenhack.h rorschach.o: ../config.h -rorschach.o: $(UTILS_SRC)/yarandom.h -rorschach.o: $(UTILS_SRC)/usleep.h -rorschach.o: $(UTILS_SRC)/resources.h -rorschach.o: $(UTILS_SRC)/hsv.h -rorschach.o: $(UTILS_SRC)/colors.h -rorschach.o: $(UTILS_SRC)/grabscreen.h -rorschach.o: $(UTILS_SRC)/visual.h -rorschach.o: $(UTILS_SRC)/erase.h -screenhack.o: $(UTILS_SRC)/xmu.h screenhack.o: $(srcdir)/screenhack.h screenhack.o: ../config.h -screenhack.o: $(UTILS_SRC)/yarandom.h -screenhack.o: $(UTILS_SRC)/usleep.h -screenhack.o: $(UTILS_SRC)/resources.h -screenhack.o: $(UTILS_SRC)/hsv.h -screenhack.o: $(UTILS_SRC)/colors.h -screenhack.o: $(UTILS_SRC)/grabscreen.h -screenhack.o: $(UTILS_SRC)/visual.h -screenhack.o: $(UTILS_SRC)/version.h -screenhack.o: $(UTILS_SRC)/vroot.h sierpinski.o: $(srcdir)/xlockmore.h sierpinski.o: ../config.h sierpinski.o: $(srcdir)/xlockmoreI.h sierpinski.o: $(srcdir)/screenhack.h -sierpinski.o: $(UTILS_SRC)/yarandom.h -sierpinski.o: $(UTILS_SRC)/usleep.h -sierpinski.o: $(UTILS_SRC)/resources.h -sierpinski.o: $(UTILS_SRC)/hsv.h -sierpinski.o: $(UTILS_SRC)/colors.h -sierpinski.o: $(UTILS_SRC)/grabscreen.h -sierpinski.o: $(UTILS_SRC)/visual.h -sierpinski.o: $(UTILS_SRC)/xshm.h slidescreen.o: $(srcdir)/screenhack.h slidescreen.o: ../config.h -slidescreen.o: $(UTILS_SRC)/yarandom.h -slidescreen.o: $(UTILS_SRC)/usleep.h -slidescreen.o: $(UTILS_SRC)/resources.h -slidescreen.o: $(UTILS_SRC)/hsv.h -slidescreen.o: $(UTILS_SRC)/colors.h -slidescreen.o: $(UTILS_SRC)/grabscreen.h -slidescreen.o: $(UTILS_SRC)/visual.h slip.o: $(srcdir)/xlockmore.h slip.o: ../config.h slip.o: $(srcdir)/xlockmoreI.h slip.o: $(srcdir)/screenhack.h -slip.o: $(UTILS_SRC)/yarandom.h -slip.o: $(UTILS_SRC)/usleep.h -slip.o: $(UTILS_SRC)/resources.h -slip.o: $(UTILS_SRC)/hsv.h -slip.o: $(UTILS_SRC)/colors.h -slip.o: $(UTILS_SRC)/grabscreen.h -slip.o: $(UTILS_SRC)/visual.h -slip.o: $(UTILS_SRC)/xshm.h sphere.o: $(srcdir)/xlockmore.h sphere.o: ../config.h sphere.o: $(srcdir)/xlockmoreI.h sphere.o: $(srcdir)/screenhack.h -sphere.o: $(UTILS_SRC)/yarandom.h -sphere.o: $(UTILS_SRC)/usleep.h -sphere.o: $(UTILS_SRC)/resources.h -sphere.o: $(UTILS_SRC)/hsv.h -sphere.o: $(UTILS_SRC)/colors.h -sphere.o: $(UTILS_SRC)/grabscreen.h -sphere.o: $(UTILS_SRC)/visual.h -sphere.o: $(UTILS_SRC)/xshm.h spiral.o: $(srcdir)/xlockmore.h spiral.o: ../config.h spiral.o: $(srcdir)/xlockmoreI.h spiral.o: $(srcdir)/screenhack.h -spiral.o: $(UTILS_SRC)/yarandom.h -spiral.o: $(UTILS_SRC)/usleep.h -spiral.o: $(UTILS_SRC)/resources.h -spiral.o: $(UTILS_SRC)/hsv.h -spiral.o: $(UTILS_SRC)/colors.h -spiral.o: $(UTILS_SRC)/grabscreen.h -spiral.o: $(UTILS_SRC)/visual.h -spiral.o: $(UTILS_SRC)/xshm.h strange.o: $(srcdir)/xlockmore.h strange.o: ../config.h strange.o: $(srcdir)/xlockmoreI.h strange.o: $(srcdir)/screenhack.h -strange.o: $(UTILS_SRC)/yarandom.h -strange.o: $(UTILS_SRC)/usleep.h -strange.o: $(UTILS_SRC)/resources.h -strange.o: $(UTILS_SRC)/hsv.h -strange.o: $(UTILS_SRC)/colors.h -strange.o: $(UTILS_SRC)/grabscreen.h -strange.o: $(UTILS_SRC)/visual.h -strange.o: $(UTILS_SRC)/xshm.h swirl.o: $(srcdir)/xlockmore.h swirl.o: ../config.h swirl.o: $(srcdir)/xlockmoreI.h swirl.o: $(srcdir)/screenhack.h -swirl.o: $(UTILS_SRC)/yarandom.h -swirl.o: $(UTILS_SRC)/usleep.h -swirl.o: $(UTILS_SRC)/resources.h -swirl.o: $(UTILS_SRC)/hsv.h -swirl.o: $(UTILS_SRC)/colors.h -swirl.o: $(UTILS_SRC)/grabscreen.h -swirl.o: $(UTILS_SRC)/visual.h -swirl.o: $(UTILS_SRC)/xshm.h xlockmore.o: $(srcdir)/screenhack.h xlockmore.o: ../config.h -xlockmore.o: $(UTILS_SRC)/yarandom.h -xlockmore.o: $(UTILS_SRC)/usleep.h -xlockmore.o: $(UTILS_SRC)/resources.h -xlockmore.o: $(UTILS_SRC)/hsv.h -xlockmore.o: $(UTILS_SRC)/colors.h -xlockmore.o: $(UTILS_SRC)/grabscreen.h -xlockmore.o: $(UTILS_SRC)/visual.h xlockmore.o: $(srcdir)/xlockmoreI.h -xlockmore.o: $(UTILS_SRC)/xshm.h goop.o: $(srcdir)/screenhack.h goop.o: ../config.h -goop.o: $(UTILS_SRC)/yarandom.h -goop.o: $(UTILS_SRC)/usleep.h -goop.o: $(UTILS_SRC)/resources.h -goop.o: $(UTILS_SRC)/hsv.h -goop.o: $(UTILS_SRC)/colors.h -goop.o: $(UTILS_SRC)/grabscreen.h -goop.o: $(UTILS_SRC)/visual.h -goop.o: $(UTILS_SRC)/spline.h -goop.o: $(UTILS_SRC)/alpha.h starfish.o: $(srcdir)/screenhack.h starfish.o: ../config.h -starfish.o: $(UTILS_SRC)/yarandom.h -starfish.o: $(UTILS_SRC)/usleep.h -starfish.o: $(UTILS_SRC)/resources.h -starfish.o: $(UTILS_SRC)/hsv.h -starfish.o: $(UTILS_SRC)/colors.h -starfish.o: $(UTILS_SRC)/grabscreen.h -starfish.o: $(UTILS_SRC)/visual.h -starfish.o: $(UTILS_SRC)/spline.h munch.o: $(srcdir)/screenhack.h munch.o: ../config.h -munch.o: $(UTILS_SRC)/yarandom.h -munch.o: $(UTILS_SRC)/usleep.h -munch.o: $(UTILS_SRC)/resources.h -munch.o: $(UTILS_SRC)/hsv.h -munch.o: $(UTILS_SRC)/colors.h -munch.o: $(UTILS_SRC)/grabscreen.h -munch.o: $(UTILS_SRC)/visual.h fadeplot.o: $(srcdir)/xlockmore.h fadeplot.o: ../config.h fadeplot.o: $(srcdir)/xlockmoreI.h fadeplot.o: $(srcdir)/screenhack.h -fadeplot.o: $(UTILS_SRC)/yarandom.h -fadeplot.o: $(UTILS_SRC)/usleep.h -fadeplot.o: $(UTILS_SRC)/resources.h -fadeplot.o: $(UTILS_SRC)/hsv.h -fadeplot.o: $(UTILS_SRC)/colors.h -fadeplot.o: $(UTILS_SRC)/grabscreen.h -fadeplot.o: $(UTILS_SRC)/visual.h -fadeplot.o: $(UTILS_SRC)/xshm.h rd-bomb.o: $(srcdir)/screenhack.h rd-bomb.o: ../config.h -rd-bomb.o: $(UTILS_SRC)/yarandom.h -rd-bomb.o: $(UTILS_SRC)/usleep.h -rd-bomb.o: $(UTILS_SRC)/resources.h -rd-bomb.o: $(UTILS_SRC)/hsv.h -rd-bomb.o: $(UTILS_SRC)/colors.h -rd-bomb.o: $(UTILS_SRC)/grabscreen.h -rd-bomb.o: $(UTILS_SRC)/visual.h -rd-bomb.o: $(UTILS_SRC)/xshm.h coral.o: $(srcdir)/screenhack.h coral.o: ../config.h -coral.o: $(UTILS_SRC)/yarandom.h -coral.o: $(UTILS_SRC)/usleep.h -coral.o: $(UTILS_SRC)/resources.h -coral.o: $(UTILS_SRC)/hsv.h -coral.o: $(UTILS_SRC)/colors.h -coral.o: $(UTILS_SRC)/grabscreen.h -coral.o: $(UTILS_SRC)/visual.h -coral.o: $(UTILS_SRC)/erase.h mountain.o: $(srcdir)/xlockmore.h mountain.o: ../config.h mountain.o: $(srcdir)/xlockmoreI.h mountain.o: $(srcdir)/screenhack.h -mountain.o: $(UTILS_SRC)/yarandom.h -mountain.o: $(UTILS_SRC)/usleep.h -mountain.o: $(UTILS_SRC)/resources.h -mountain.o: $(UTILS_SRC)/hsv.h -mountain.o: $(UTILS_SRC)/colors.h -mountain.o: $(UTILS_SRC)/grabscreen.h -mountain.o: $(UTILS_SRC)/visual.h -mountain.o: $(UTILS_SRC)/xshm.h triangle.o: $(srcdir)/xlockmore.h triangle.o: ../config.h triangle.o: $(srcdir)/xlockmoreI.h triangle.o: $(srcdir)/screenhack.h -triangle.o: $(UTILS_SRC)/yarandom.h -triangle.o: $(UTILS_SRC)/usleep.h -triangle.o: $(UTILS_SRC)/resources.h -triangle.o: $(UTILS_SRC)/hsv.h -triangle.o: $(UTILS_SRC)/colors.h -triangle.o: $(UTILS_SRC)/grabscreen.h -triangle.o: $(UTILS_SRC)/visual.h -triangle.o: $(UTILS_SRC)/xshm.h lissie.o: $(srcdir)/xlockmore.h lissie.o: ../config.h lissie.o: $(srcdir)/xlockmoreI.h lissie.o: $(srcdir)/screenhack.h -lissie.o: $(UTILS_SRC)/yarandom.h -lissie.o: $(UTILS_SRC)/usleep.h -lissie.o: $(UTILS_SRC)/resources.h -lissie.o: $(UTILS_SRC)/hsv.h -lissie.o: $(UTILS_SRC)/colors.h -lissie.o: $(UTILS_SRC)/grabscreen.h -lissie.o: $(UTILS_SRC)/visual.h -lissie.o: $(UTILS_SRC)/xshm.h worm.o: $(srcdir)/xlockmore.h worm.o: ../config.h worm.o: $(srcdir)/xlockmoreI.h worm.o: $(srcdir)/screenhack.h -worm.o: $(UTILS_SRC)/yarandom.h -worm.o: $(UTILS_SRC)/usleep.h -worm.o: $(UTILS_SRC)/resources.h -worm.o: $(UTILS_SRC)/hsv.h -worm.o: $(UTILS_SRC)/colors.h -worm.o: $(UTILS_SRC)/grabscreen.h -worm.o: $(UTILS_SRC)/visual.h -worm.o: $(UTILS_SRC)/xshm.h rotor.o: $(srcdir)/xlockmore.h rotor.o: ../config.h rotor.o: $(srcdir)/xlockmoreI.h rotor.o: $(srcdir)/screenhack.h -rotor.o: $(UTILS_SRC)/yarandom.h -rotor.o: $(UTILS_SRC)/usleep.h -rotor.o: $(UTILS_SRC)/resources.h -rotor.o: $(UTILS_SRC)/hsv.h -rotor.o: $(UTILS_SRC)/colors.h -rotor.o: $(UTILS_SRC)/grabscreen.h -rotor.o: $(UTILS_SRC)/visual.h -rotor.o: $(UTILS_SRC)/xshm.h ant.o: $(srcdir)/xlockmore.h ant.o: ../config.h ant.o: $(srcdir)/xlockmoreI.h ant.o: $(srcdir)/screenhack.h -ant.o: $(UTILS_SRC)/yarandom.h -ant.o: $(UTILS_SRC)/usleep.h -ant.o: $(UTILS_SRC)/resources.h -ant.o: $(UTILS_SRC)/hsv.h -ant.o: $(UTILS_SRC)/colors.h -ant.o: $(UTILS_SRC)/grabscreen.h -ant.o: $(UTILS_SRC)/visual.h -ant.o: $(UTILS_SRC)/xshm.h -ant.o: $(UTILS_SRC)/erase.h ant.o: $(srcdir)/automata.h xjack.o: $(srcdir)/screenhack.h xjack.o: ../config.h -xjack.o: $(UTILS_SRC)/yarandom.h -xjack.o: $(UTILS_SRC)/usleep.h -xjack.o: $(UTILS_SRC)/resources.h -xjack.o: $(UTILS_SRC)/hsv.h -xjack.o: $(UTILS_SRC)/colors.h -xjack.o: $(UTILS_SRC)/grabscreen.h -xjack.o: $(UTILS_SRC)/visual.h xlyap.o: $(srcdir)/screenhack.h xlyap.o: ../config.h -xlyap.o: $(UTILS_SRC)/yarandom.h -xlyap.o: $(UTILS_SRC)/usleep.h -xlyap.o: $(UTILS_SRC)/resources.h -xlyap.o: $(UTILS_SRC)/hsv.h -xlyap.o: $(UTILS_SRC)/colors.h -xlyap.o: $(UTILS_SRC)/grabscreen.h -xlyap.o: $(UTILS_SRC)/visual.h -xlyap.o: $(UTILS_SRC)/vroot.h jigsaw.o: $(srcdir)/screenhack.h jigsaw.o: ../config.h -jigsaw.o: $(UTILS_SRC)/yarandom.h -jigsaw.o: $(UTILS_SRC)/usleep.h -jigsaw.o: $(UTILS_SRC)/resources.h -jigsaw.o: $(UTILS_SRC)/hsv.h -jigsaw.o: $(UTILS_SRC)/colors.h -jigsaw.o: $(UTILS_SRC)/grabscreen.h -jigsaw.o: $(UTILS_SRC)/visual.h jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_h.xbm jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_n_h.xbm jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_a_ne_h.xbm @@ -1463,77 +989,22 @@ jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_s_f.xbm jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_sw_f.xbm jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_w_f.xbm jigsaw.o: $(srcdir)/images/jigsaw/jigsaw_b_nw_f.xbm -xscreensaver-sgigl.o: $(UTILS_SRC)/vroot.h cynosure.o: $(srcdir)/screenhack.h cynosure.o: ../config.h -cynosure.o: $(UTILS_SRC)/yarandom.h -cynosure.o: $(UTILS_SRC)/usleep.h -cynosure.o: $(UTILS_SRC)/resources.h -cynosure.o: $(UTILS_SRC)/hsv.h -cynosure.o: $(UTILS_SRC)/colors.h -cynosure.o: $(UTILS_SRC)/grabscreen.h -cynosure.o: $(UTILS_SRC)/visual.h moire2.o: $(srcdir)/screenhack.h moire2.o: ../config.h -moire2.o: $(UTILS_SRC)/yarandom.h -moire2.o: $(UTILS_SRC)/usleep.h -moire2.o: $(UTILS_SRC)/resources.h -moire2.o: $(UTILS_SRC)/hsv.h -moire2.o: $(UTILS_SRC)/colors.h -moire2.o: $(UTILS_SRC)/grabscreen.h -moire2.o: $(UTILS_SRC)/visual.h -moire2.o: $(UTILS_SRC)/xdbe.h flow.o: $(srcdir)/xlockmore.h flow.o: ../config.h flow.o: $(srcdir)/xlockmoreI.h flow.o: $(srcdir)/screenhack.h -flow.o: $(UTILS_SRC)/yarandom.h -flow.o: $(UTILS_SRC)/usleep.h -flow.o: $(UTILS_SRC)/resources.h -flow.o: $(UTILS_SRC)/hsv.h -flow.o: $(UTILS_SRC)/colors.h -flow.o: $(UTILS_SRC)/grabscreen.h -flow.o: $(UTILS_SRC)/visual.h -flow.o: $(UTILS_SRC)/xshm.h -flow.o: $(UTILS_SRC)/erase.h epicycle.o: $(srcdir)/screenhack.h epicycle.o: ../config.h -epicycle.o: $(UTILS_SRC)/yarandom.h -epicycle.o: $(UTILS_SRC)/usleep.h -epicycle.o: $(UTILS_SRC)/resources.h -epicycle.o: $(UTILS_SRC)/hsv.h -epicycle.o: $(UTILS_SRC)/colors.h -epicycle.o: $(UTILS_SRC)/grabscreen.h -epicycle.o: $(UTILS_SRC)/visual.h -epicycle.o: $(UTILS_SRC)/erase.h interference.o: $(srcdir)/screenhack.h interference.o: ../config.h -interference.o: $(UTILS_SRC)/yarandom.h -interference.o: $(UTILS_SRC)/usleep.h -interference.o: $(UTILS_SRC)/resources.h -interference.o: $(UTILS_SRC)/hsv.h -interference.o: $(UTILS_SRC)/colors.h -interference.o: $(UTILS_SRC)/grabscreen.h -interference.o: $(UTILS_SRC)/visual.h -interference.o: $(UTILS_SRC)/xdbe.h truchet.o: $(srcdir)/screenhack.h truchet.o: ../config.h -truchet.o: $(UTILS_SRC)/yarandom.h -truchet.o: $(UTILS_SRC)/usleep.h -truchet.o: $(UTILS_SRC)/resources.h -truchet.o: $(UTILS_SRC)/hsv.h -truchet.o: $(UTILS_SRC)/colors.h -truchet.o: $(UTILS_SRC)/grabscreen.h -truchet.o: $(UTILS_SRC)/visual.h bsod.o: $(srcdir)/screenhack.h bsod.o: ../config.h -bsod.o: $(UTILS_SRC)/yarandom.h -bsod.o: $(UTILS_SRC)/usleep.h -bsod.o: $(UTILS_SRC)/resources.h -bsod.o: $(UTILS_SRC)/hsv.h -bsod.o: $(UTILS_SRC)/colors.h -bsod.o: $(UTILS_SRC)/grabscreen.h -bsod.o: $(UTILS_SRC)/visual.h bsod.o: $(srcdir)/images/amiga.xpm bsod.o: $(srcdir)/images/atari.xbm bsod.o: $(srcdir)/images/mac.xbm @@ -1541,327 +1012,80 @@ crystal.o: $(srcdir)/xlockmore.h crystal.o: ../config.h crystal.o: $(srcdir)/xlockmoreI.h crystal.o: $(srcdir)/screenhack.h -crystal.o: $(UTILS_SRC)/yarandom.h -crystal.o: $(UTILS_SRC)/usleep.h -crystal.o: $(UTILS_SRC)/resources.h -crystal.o: $(UTILS_SRC)/hsv.h -crystal.o: $(UTILS_SRC)/colors.h -crystal.o: $(UTILS_SRC)/grabscreen.h -crystal.o: $(UTILS_SRC)/visual.h -crystal.o: $(UTILS_SRC)/xshm.h discrete.o: $(srcdir)/xlockmore.h discrete.o: ../config.h discrete.o: $(srcdir)/xlockmoreI.h discrete.o: $(srcdir)/screenhack.h -discrete.o: $(UTILS_SRC)/yarandom.h -discrete.o: $(UTILS_SRC)/usleep.h -discrete.o: $(UTILS_SRC)/resources.h -discrete.o: $(UTILS_SRC)/hsv.h -discrete.o: $(UTILS_SRC)/colors.h -discrete.o: $(UTILS_SRC)/grabscreen.h -discrete.o: $(UTILS_SRC)/visual.h -discrete.o: $(UTILS_SRC)/xshm.h -discrete.o: $(UTILS_SRC)/erase.h distort.o: $(srcdir)/screenhack.h distort.o: ../config.h -distort.o: $(UTILS_SRC)/yarandom.h -distort.o: $(UTILS_SRC)/usleep.h -distort.o: $(UTILS_SRC)/resources.h -distort.o: $(UTILS_SRC)/hsv.h -distort.o: $(UTILS_SRC)/colors.h -distort.o: $(UTILS_SRC)/grabscreen.h -distort.o: $(UTILS_SRC)/visual.h -distort.o: $(UTILS_SRC)/xshm.h kumppa.o: $(srcdir)/screenhack.h kumppa.o: ../config.h -kumppa.o: $(UTILS_SRC)/yarandom.h -kumppa.o: $(UTILS_SRC)/usleep.h -kumppa.o: $(UTILS_SRC)/resources.h -kumppa.o: $(UTILS_SRC)/hsv.h -kumppa.o: $(UTILS_SRC)/colors.h -kumppa.o: $(UTILS_SRC)/grabscreen.h -kumppa.o: $(UTILS_SRC)/visual.h -kumppa.o: $(UTILS_SRC)/xdbe.h sonar.o: $(srcdir)/screenhack.h sonar.o: ../config.h -sonar.o: $(UTILS_SRC)/yarandom.h -sonar.o: $(UTILS_SRC)/usleep.h -sonar.o: $(UTILS_SRC)/resources.h -sonar.o: $(UTILS_SRC)/hsv.h -sonar.o: $(UTILS_SRC)/colors.h -sonar.o: $(UTILS_SRC)/grabscreen.h -sonar.o: $(UTILS_SRC)/visual.h demon.o: $(srcdir)/xlockmore.h demon.o: ../config.h demon.o: $(srcdir)/xlockmoreI.h demon.o: $(srcdir)/screenhack.h -demon.o: $(UTILS_SRC)/yarandom.h -demon.o: $(UTILS_SRC)/usleep.h -demon.o: $(UTILS_SRC)/resources.h -demon.o: $(UTILS_SRC)/hsv.h -demon.o: $(UTILS_SRC)/colors.h -demon.o: $(UTILS_SRC)/grabscreen.h -demon.o: $(UTILS_SRC)/visual.h -demon.o: $(UTILS_SRC)/xshm.h demon.o: $(srcdir)/automata.h loop.o: $(srcdir)/xlockmore.h loop.o: ../config.h loop.o: $(srcdir)/xlockmoreI.h loop.o: $(srcdir)/screenhack.h -loop.o: $(UTILS_SRC)/yarandom.h -loop.o: $(UTILS_SRC)/usleep.h -loop.o: $(UTILS_SRC)/resources.h -loop.o: $(UTILS_SRC)/hsv.h -loop.o: $(UTILS_SRC)/colors.h -loop.o: $(UTILS_SRC)/grabscreen.h -loop.o: $(UTILS_SRC)/visual.h -loop.o: $(UTILS_SRC)/xshm.h loop.o: $(srcdir)/automata.h t3d.o: $(srcdir)/screenhack.h t3d.o: ../config.h -t3d.o: $(UTILS_SRC)/yarandom.h -t3d.o: $(UTILS_SRC)/usleep.h -t3d.o: $(UTILS_SRC)/resources.h -t3d.o: $(UTILS_SRC)/hsv.h -t3d.o: $(UTILS_SRC)/colors.h -t3d.o: $(UTILS_SRC)/grabscreen.h -t3d.o: $(UTILS_SRC)/visual.h penetrate.o: $(srcdir)/screenhack.h penetrate.o: ../config.h -penetrate.o: $(UTILS_SRC)/yarandom.h -penetrate.o: $(UTILS_SRC)/usleep.h -penetrate.o: $(UTILS_SRC)/resources.h -penetrate.o: $(UTILS_SRC)/hsv.h -penetrate.o: $(UTILS_SRC)/colors.h -penetrate.o: $(UTILS_SRC)/grabscreen.h -penetrate.o: $(UTILS_SRC)/visual.h deluxe.o: $(srcdir)/screenhack.h deluxe.o: ../config.h -deluxe.o: $(UTILS_SRC)/yarandom.h -deluxe.o: $(UTILS_SRC)/usleep.h -deluxe.o: $(UTILS_SRC)/resources.h -deluxe.o: $(UTILS_SRC)/hsv.h -deluxe.o: $(UTILS_SRC)/colors.h -deluxe.o: $(UTILS_SRC)/grabscreen.h -deluxe.o: $(UTILS_SRC)/visual.h -deluxe.o: $(UTILS_SRC)/alpha.h -deluxe.o: $(UTILS_SRC)/xdbe.h compass.o: $(srcdir)/screenhack.h compass.o: ../config.h -compass.o: $(UTILS_SRC)/yarandom.h -compass.o: $(UTILS_SRC)/usleep.h -compass.o: $(UTILS_SRC)/resources.h -compass.o: $(UTILS_SRC)/hsv.h -compass.o: $(UTILS_SRC)/colors.h -compass.o: $(UTILS_SRC)/grabscreen.h -compass.o: $(UTILS_SRC)/visual.h -compass.o: $(UTILS_SRC)/xdbe.h squiral.o: $(srcdir)/screenhack.h squiral.o: ../config.h -squiral.o: $(UTILS_SRC)/yarandom.h -squiral.o: $(UTILS_SRC)/usleep.h -squiral.o: $(UTILS_SRC)/resources.h -squiral.o: $(UTILS_SRC)/hsv.h -squiral.o: $(UTILS_SRC)/colors.h -squiral.o: $(UTILS_SRC)/grabscreen.h -squiral.o: $(UTILS_SRC)/visual.h -squiral.o: $(UTILS_SRC)/erase.h xflame.o: $(srcdir)/screenhack.h xflame.o: ../config.h -xflame.o: $(UTILS_SRC)/yarandom.h -xflame.o: $(UTILS_SRC)/usleep.h -xflame.o: $(UTILS_SRC)/resources.h -xflame.o: $(UTILS_SRC)/hsv.h -xflame.o: $(UTILS_SRC)/colors.h -xflame.o: $(UTILS_SRC)/grabscreen.h -xflame.o: $(UTILS_SRC)/visual.h -xflame.o: $(UTILS_SRC)/xshm.h xflame.o: $(srcdir)/images/bob.xbm wander.o: $(srcdir)/screenhack.h wander.o: ../config.h -wander.o: $(UTILS_SRC)/yarandom.h -wander.o: $(UTILS_SRC)/usleep.h -wander.o: $(UTILS_SRC)/resources.h -wander.o: $(UTILS_SRC)/hsv.h -wander.o: $(UTILS_SRC)/colors.h -wander.o: $(UTILS_SRC)/grabscreen.h -wander.o: $(UTILS_SRC)/visual.h -wander.o: $(UTILS_SRC)/erase.h spotlight.o: $(srcdir)/screenhack.h spotlight.o: ../config.h -spotlight.o: $(UTILS_SRC)/yarandom.h -spotlight.o: $(UTILS_SRC)/usleep.h -spotlight.o: $(UTILS_SRC)/resources.h -spotlight.o: $(UTILS_SRC)/hsv.h -spotlight.o: $(UTILS_SRC)/colors.h -spotlight.o: $(UTILS_SRC)/grabscreen.h -spotlight.o: $(UTILS_SRC)/visual.h critical.o: $(srcdir)/screenhack.h critical.o: ../config.h -critical.o: $(UTILS_SRC)/yarandom.h -critical.o: $(UTILS_SRC)/usleep.h -critical.o: $(UTILS_SRC)/resources.h -critical.o: $(UTILS_SRC)/hsv.h -critical.o: $(UTILS_SRC)/colors.h -critical.o: $(UTILS_SRC)/grabscreen.h -critical.o: $(UTILS_SRC)/visual.h -critical.o: $(UTILS_SRC)/erase.h phosphor.o: $(srcdir)/screenhack.h phosphor.o: ../config.h -phosphor.o: $(UTILS_SRC)/yarandom.h -phosphor.o: $(UTILS_SRC)/usleep.h -phosphor.o: $(UTILS_SRC)/resources.h -phosphor.o: $(UTILS_SRC)/hsv.h -phosphor.o: $(UTILS_SRC)/colors.h -phosphor.o: $(UTILS_SRC)/grabscreen.h -phosphor.o: $(UTILS_SRC)/visual.h xmatrix.o: $(srcdir)/screenhack.h xmatrix.o: ../config.h -xmatrix.o: $(UTILS_SRC)/yarandom.h -xmatrix.o: $(UTILS_SRC)/usleep.h -xmatrix.o: $(UTILS_SRC)/resources.h -xmatrix.o: $(UTILS_SRC)/hsv.h -xmatrix.o: $(UTILS_SRC)/colors.h -xmatrix.o: $(UTILS_SRC)/grabscreen.h -xmatrix.o: $(UTILS_SRC)/visual.h xmatrix.o: $(srcdir)/images/matrix.xpm xmatrix.o: $(srcdir)/images/matrix2.xpm xmatrix.o: $(srcdir)/images/matrix.xbm xmatrix.o: $(srcdir)/images/matrix2.xbm petri.o: $(srcdir)/screenhack.h petri.o: ../config.h -petri.o: $(UTILS_SRC)/yarandom.h -petri.o: $(UTILS_SRC)/usleep.h -petri.o: $(UTILS_SRC)/resources.h -petri.o: $(UTILS_SRC)/hsv.h -petri.o: $(UTILS_SRC)/colors.h -petri.o: $(UTILS_SRC)/grabscreen.h -petri.o: $(UTILS_SRC)/visual.h -petri.o: $(UTILS_SRC)/spline.h shadebobs.o: $(srcdir)/screenhack.h shadebobs.o: ../config.h -shadebobs.o: $(UTILS_SRC)/yarandom.h -shadebobs.o: $(UTILS_SRC)/usleep.h -shadebobs.o: $(UTILS_SRC)/resources.h -shadebobs.o: $(UTILS_SRC)/hsv.h -shadebobs.o: $(UTILS_SRC)/colors.h -shadebobs.o: $(UTILS_SRC)/grabscreen.h -shadebobs.o: $(UTILS_SRC)/visual.h -xsublim.o: $(UTILS_SRC)/usleep.h -xsublim.o: $(UTILS_SRC)/yarandom.h -xsublim.o: $(UTILS_SRC)/resources.h ccurve.o: $(srcdir)/screenhack.h ccurve.o: ../config.h -ccurve.o: $(UTILS_SRC)/yarandom.h -ccurve.o: $(UTILS_SRC)/usleep.h -ccurve.o: $(UTILS_SRC)/resources.h -ccurve.o: $(UTILS_SRC)/hsv.h -ccurve.o: $(UTILS_SRC)/colors.h -ccurve.o: $(UTILS_SRC)/grabscreen.h -ccurve.o: $(UTILS_SRC)/visual.h -ccurve.o: $(UTILS_SRC)/erase.h blaster.o: $(srcdir)/screenhack.h blaster.o: ../config.h -blaster.o: $(UTILS_SRC)/yarandom.h -blaster.o: $(UTILS_SRC)/usleep.h -blaster.o: $(UTILS_SRC)/resources.h -blaster.o: $(UTILS_SRC)/hsv.h -blaster.o: $(UTILS_SRC)/colors.h -blaster.o: $(UTILS_SRC)/grabscreen.h -blaster.o: $(UTILS_SRC)/visual.h bumps.o: $(srcdir)/bumps.h bumps.o: $(srcdir)/screenhack.h bumps.o: ../config.h -bumps.o: $(UTILS_SRC)/yarandom.h -bumps.o: $(UTILS_SRC)/usleep.h -bumps.o: $(UTILS_SRC)/resources.h -bumps.o: $(UTILS_SRC)/hsv.h -bumps.o: $(UTILS_SRC)/colors.h -bumps.o: $(UTILS_SRC)/grabscreen.h -bumps.o: $(UTILS_SRC)/visual.h ripples.o: $(srcdir)/screenhack.h ripples.o: ../config.h -ripples.o: $(UTILS_SRC)/yarandom.h -ripples.o: $(UTILS_SRC)/usleep.h -ripples.o: $(UTILS_SRC)/resources.h -ripples.o: $(UTILS_SRC)/hsv.h -ripples.o: $(UTILS_SRC)/colors.h -ripples.o: $(UTILS_SRC)/grabscreen.h -ripples.o: $(UTILS_SRC)/visual.h -ripples.o: $(UTILS_SRC)/xshm.h xteevee.o: $(srcdir)/screenhack.h xteevee.o: ../config.h -xteevee.o: $(UTILS_SRC)/yarandom.h -xteevee.o: $(UTILS_SRC)/usleep.h -xteevee.o: $(UTILS_SRC)/resources.h -xteevee.o: $(UTILS_SRC)/hsv.h -xteevee.o: $(UTILS_SRC)/colors.h -xteevee.o: $(UTILS_SRC)/grabscreen.h -xteevee.o: $(UTILS_SRC)/visual.h xspirograph.o: $(srcdir)/screenhack.h xspirograph.o: ../config.h -xspirograph.o: $(UTILS_SRC)/yarandom.h -xspirograph.o: $(UTILS_SRC)/usleep.h -xspirograph.o: $(UTILS_SRC)/resources.h -xspirograph.o: $(UTILS_SRC)/hsv.h -xspirograph.o: $(UTILS_SRC)/colors.h -xspirograph.o: $(UTILS_SRC)/grabscreen.h -xspirograph.o: $(UTILS_SRC)/visual.h -xspirograph.o: $(UTILS_SRC)/erase.h nerverot.o: $(srcdir)/screenhack.h nerverot.o: ../config.h -nerverot.o: $(UTILS_SRC)/yarandom.h -nerverot.o: $(UTILS_SRC)/usleep.h -nerverot.o: $(UTILS_SRC)/resources.h -nerverot.o: $(UTILS_SRC)/hsv.h -nerverot.o: $(UTILS_SRC)/colors.h -nerverot.o: $(UTILS_SRC)/grabscreen.h -nerverot.o: $(UTILS_SRC)/visual.h xrayswarm.o: $(srcdir)/screenhack.h xrayswarm.o: ../config.h -xrayswarm.o: $(UTILS_SRC)/yarandom.h -xrayswarm.o: $(UTILS_SRC)/usleep.h -xrayswarm.o: $(UTILS_SRC)/resources.h -xrayswarm.o: $(UTILS_SRC)/hsv.h -xrayswarm.o: $(UTILS_SRC)/colors.h -xrayswarm.o: $(UTILS_SRC)/grabscreen.h -xrayswarm.o: $(UTILS_SRC)/visual.h hyperball.o: $(srcdir)/screenhack.h hyperball.o: ../config.h -hyperball.o: $(UTILS_SRC)/yarandom.h -hyperball.o: $(UTILS_SRC)/usleep.h -hyperball.o: $(UTILS_SRC)/resources.h -hyperball.o: $(UTILS_SRC)/hsv.h -hyperball.o: $(UTILS_SRC)/colors.h -hyperball.o: $(UTILS_SRC)/grabscreen.h -hyperball.o: $(UTILS_SRC)/visual.h zoom.o: $(srcdir)/screenhack.h zoom.o: ../config.h -zoom.o: $(UTILS_SRC)/yarandom.h -zoom.o: $(UTILS_SRC)/usleep.h -zoom.o: $(UTILS_SRC)/resources.h -zoom.o: $(UTILS_SRC)/hsv.h -zoom.o: $(UTILS_SRC)/colors.h -zoom.o: $(UTILS_SRC)/grabscreen.h -zoom.o: $(UTILS_SRC)/visual.h whirlwindwarp.o: $(srcdir)/screenhack.h whirlwindwarp.o: ../config.h -whirlwindwarp.o: $(UTILS_SRC)/yarandom.h -whirlwindwarp.o: $(UTILS_SRC)/usleep.h -whirlwindwarp.o: $(UTILS_SRC)/resources.h -whirlwindwarp.o: $(UTILS_SRC)/hsv.h -whirlwindwarp.o: $(UTILS_SRC)/colors.h -whirlwindwarp.o: $(UTILS_SRC)/grabscreen.h -whirlwindwarp.o: $(UTILS_SRC)/visual.h -whirlwindwarp.o: $(UTILS_SRC)/erase.h rotzoomer.o: $(srcdir)/screenhack.h rotzoomer.o: ../config.h -rotzoomer.o: $(UTILS_SRC)/yarandom.h -rotzoomer.o: $(UTILS_SRC)/usleep.h -rotzoomer.o: $(UTILS_SRC)/resources.h -rotzoomer.o: $(UTILS_SRC)/hsv.h -rotzoomer.o: $(UTILS_SRC)/colors.h -rotzoomer.o: $(UTILS_SRC)/grabscreen.h -rotzoomer.o: $(UTILS_SRC)/visual.h -rotzoomer.o: $(UTILS_SRC)/xshm.h diff --git a/hacks/blitspin.man b/hacks/blitspin.man index f374666e..0d2b9fbb 100644 --- a/hacks/blitspin.man +++ b/hacks/blitspin.man @@ -3,7 +3,10 @@ blitspin - rotate a bitmap in an interesting way .SH SYNOPSIS .B blitspin -[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-bitmap \fIfilename\fP] [\-delay \fIusecs\fP] [\-delay2 \fIusecs\fP] +[\-display \fIhost:display.screen\fP] +[\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] +[\-mono] [\-install] [\-visual \fIvisual\fP] [\-bitmap \fIfilename\fP] +[\-delay \fIusecs\fP] [\-delay2 \fIusecs\fP] .SH DESCRIPTION The \fIblitspin\fP program repeatedly rotates a bitmap by 90 degrees by using logical operations: the bitmap is divided into quadrants, and the @@ -46,8 +49,13 @@ name is not a fully-qualified pathname. .TP 8 .B \-grab\-screen If this option is specified, then the image which is spun will be grabbed -from the portion of the screen underlying the blitspin window. (Or, it -may come from an external video source: see below.) +from the portion of the screen underlying the blitspin window, or from +the system's video input, or from a random file on disk, as indicated by +the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, +and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP file; +see +.BR xscreensaver-demo (1) +for more details. .PP .TP 8 .B \-delay \fImicroseconds\fP @@ -60,39 +68,17 @@ How long to delay between each 90-degree rotation, in microseconds. Default is 500000, one-half second. .B DISPLAY to get the default host and display number. -.SH RESOURCES -On some systems (currently, only SGIs), this program can, instead of grabbing -a desktop image, grab a frame of video from an external camera and manipulate -that instead. The following resources control that. -.PP -.TP 8 -.B grabVideoProbability \fR(Float)\fP -What portion of the time to grab video rather than a screen image, -between 0.0 and 1.0. Defaults to 0.5, or half the time. -.TP 8 -.B videoDevice \fR(Integer)\fP -The number of the default video input device to check first. If unspecified, -the default camera (from videopanel(1)) will be checked first. After that, all -other available video input devices will be checked in order. - -The first one which produces a non-black image will be used. If all images -are black, the others will be re-checked a few times before giving up and -falling back to simply grabbing a desktop image (but note that this takes a -few seconds, so if you don't actually have any video sources hooked up, you -should consider turning off video grabbing by setting -\fBgrabVideoProbability\fP to 0.0.) -.TP 8 -.B videoGain \fR(Float)\fP -The amount by which to brighten the grabbed image. This defaults to 2.2. .SH ENVIRONMENT .B XENVIRONMENT to get the name of a resource file that overrides the global resources stored in the RESOURCE_MANAGER property. .SH SEE ALSO .BR X (1), -.BR xscreensaver (1) +.BR xscreensaver (1), +.BR xscreensaver-demo (1), +.BR xscreensaver-getimage (1) .SH COPYRIGHT -Copyright \(co 1992, 1993, 1997 by Jamie Zawinski. +Copyright \(co 1992, 1993, 1997, 2001 by Jamie Zawinski. 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 diff --git a/hacks/bumps.h b/hacks/bumps.h index 219bffc6..d5601ec7 100644 --- a/hacks/bumps.h +++ b/hacks/bumps.h @@ -53,6 +53,9 @@ char *defaults [] = { "*delay: 50000", "*soften: 1", "*invert: FALSE", +#ifdef __sgi /* really, HAVE_READ_DISPLAY_EXTENSION */ + "*visualID: Best", +#endif 0 }; diff --git a/hacks/bumps.man b/hacks/bumps.man new file mode 100644 index 00000000..35f68147 --- /dev/null +++ b/hacks/bumps.man @@ -0,0 +1,69 @@ +.TH XScreenSaver 1 "05-Apr-1999" "X Version 11" +.SH NAME +bumps - move distorting spotlight around desktop +.SH SYNOPSIS +.B bumps +[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] +[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] +[\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-radius \fIpixels\fP] +.SH DESCRIPTION +The \fIbumps\fP program takes an image and exposes small, distorted +sections of it as if through an odd wandering spotlight beam. + +The image that it manipulates will be grabbed from the portion of +the screen underlying the window, or from the system's video input, +or from a random file on disk, as indicated by +the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, +and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP +file; see +.BR xscreensaver-demo (1) +for more details. +.SH OPTIONS +.I bumps +accepts the following options: +.TP 8 +.B \-window +Draw on a newly-created window. This is the default. +.TP 8 +.B \-root +Draw on the root window. +.TP 8 +.B \-mono +If on a color display, pretend we're on a monochrome display. +.TP 8 +.B \-install +Install a private colormap for the window. +.TP 8 +.B \-visual \fIvisual\fP +Specify which visual to use. Legal values are the name of a visual class, +or the id number (decimal or hex) of a specific visual. +.TP 8 +.B \-delay \fImicroseconds\fP +Slow it down. +.TP 8 +.B \-radius \fIpixels\fP +Radius of the spotlight in pixels. +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +to get the default host and display number. +.TP 8 +.B XENVIRONMENT +to get the name of a resource file that overrides the global resources +stored in the RESOURCE_MANAGER property. +.SH SEE ALSO +.BR X (1), +.BR xscreensaver (1), +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) +.SH COPYRIGHT +Copyright \(co 1999 by Shane Smit. 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. No representations are made about the +suitability of this software for any purpose. It is provided "as is" without +express or implied warranty. +.SH CREDITS +Shane Smit , 8-Oct-1999. diff --git a/hacks/decayscreen.man b/hacks/decayscreen.man index 8dc0a0e7..8f1aea7c 100644 --- a/hacks/decayscreen.man +++ b/hacks/decayscreen.man @@ -3,10 +3,20 @@ decayscreen - make a screen meltdown. .SH SYNOPSIS .B decayscreen -[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-mode \fImode\fP] +[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-mono] [\-install] +[\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-mode \fImode\fP] .SH DESCRIPTION The \fIdecayscreen\fP program creates a melting effect by randomly shifting rectangles around the screen. + +The image that it manipulates will be grabbed from the portion of +the screen underlying the window, or from the system's video input, +or from a random file on disk, as indicated by +the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, +and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP +file; see +.BR xscreensaver-demo (1) +for more details. .SH OPTIONS .I decayscreen accepts the following options: @@ -36,32 +46,8 @@ The direction in which the image should tend to slide. Legal values are \fIdown\fP, \fIupleft\fP, \fIdownleft\fP, \fIupright\fP, \fIdownright\fP, \fIshuffle\fP (meaning perfer no particular direction), \fIin\fP (meaning move things toward the center), \fIout\fP (meaning move things away -from the center), \fImelt\fP (meaning melt straight downward), and \fIstretch\fP -(meaning stretch the screen downward). -.SH RESOURCES -On some systems (currently, only SGIs), this program can, instead of grabbing -a desktop image, grab a frame of video from an external camera and manipulate -that instead. The following resources control that. -.PP -.TP 8 -.B grabVideoProbability \fR(Float)\fP -What portion of the time to grab video rather than a screen image, -between 0.0 and 1.0. Defaults to 0.5, or half the time. -.TP 8 -.B videoDevice \fR(Integer)\fP -The number of the default video input device to check first. If unspecified, -the default camera (from videopanel(1)) will be checked first. After that, all -other available video input devices will be checked in order. - -The first one which produces a non-black image will be used. If all images -are black, the others will be re-checked a few times before giving up and -falling back to simply grabbing a desktop image (but note that this takes a -few seconds, so if you don't actually have any video sources hooked up, you -should consider turning off video grabbing by setting -\fBgrabVideoProbability\fP to 0.0.) -.TP 8 -.B videoGain \fR(Float)\fP -The amount by which to brighten the grabbed image. This defaults to 2.2. +from the center), \fImelt\fP (meaning melt straight downward), +and \fIstretch\fP (meaning stretch the screen downward). .SH ENVIRONMENT .PP .TP 8 @@ -72,8 +58,10 @@ to get the default host and display number. to get the name of a resource file that overrides the global resources stored in the RESOURCE_MANAGER property. .SH "SEE ALSO" -X(1), -xscreensaver(1) +.BR X (1), +.BR xscreensaver (1), +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) .SH COPYRIGHT Copyright 1992 by Vivek Khera. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -84,5 +72,5 @@ of this software for any purpose. It is provided "as is" without express or implied warranty. .SH AUTHOR Vivek Khera , 05-Aug-93; based on code by David Wald, 1988. -Modified by jwz, 28-Nov-97. Modified by Rick Schultz 05-Apr-1999. - +Modified by jwz, 28-Nov-97. +Modified by Rick Schultz 05-Apr-1999. diff --git a/hacks/distort.man b/hacks/distort.man index 92facfc3..178febd3 100644 --- a/hacks/distort.man +++ b/hacks/distort.man @@ -3,12 +3,24 @@ distort \- distort the content of the screen in interesting ways .SH SYNOPSIS .B distort -[\-root] [\-window] [\-mono] [\-install] [\-noinstall] [\-visual \fIvisual\fP] [\-window\-id \fIwindow\-id\fP] [\-delay \fIusecs\fP] [\-radius \fIpixels\fP] [\-speed \fIint\fP] [\-number \fIint\fP] [\-swamp] [\-bounce] [\-reflect] [\-vortex] [\-magnify] [\-blackhole] [\-slow] [\-shm] [\-no\-shm] +[\-root] [\-window] [\-mono] [\-install] [\-noinstall] [\-visual \fIvisual\fP] +[\-window\-id \fIwindow\-id\fP] [\-delay \fIusecs\fP] [\-radius \fIpixels\fP] +[\-speed \fIint\fP] [\-number \fIint\fP] [\-swamp] [\-bounce] [\-reflect] +[\-vortex] [\-magnify] [\-blackhole] [\-slow] [\-shm] [\-no\-shm] .SH DESCRIPTION -The \fIdistort\fP program lets circular zones of distortion wander -randomly around its window, apparently distorting what is under them -due to the window's pseudo-transparency. The mode of distortion and -the overall behaviour of the zones can be influenced in various ways. +The \fIdistort\fP program takes an image and lets circular zones of +distortion wander randomly around it, distorting what is under them. +The mode of distortion and the overall behaviour of the zones can be +influenced in various ways. + +The image that it manipulates will be grabbed from the portion of +the screen underlying the window, or from the system's video input, +or from a random file on disk, as indicated by +the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, +and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP +file; see +.BR xscreensaver-demo (1) +for more details. .SH OPTIONS .I distort accepts the following options: @@ -88,7 +100,9 @@ to get the name of a resource file that overrides the global resources stored in the RESOURCE_MANAGER property. .SH SEE ALSO .BR X (1), -.BR xscreensaver (1) +.BR xscreensaver (1), +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) .SH COPYRIGHT Copyright \(co 1998 by Jonas Munsin and Jamie Zawinski. Permission to use, copy, modify, distribute, and sell this software and its documentation for diff --git a/hacks/glx/Makefile.in b/hacks/glx/Makefile.in index 06b84f78..65089482 100644 --- a/hacks/glx/Makefile.in +++ b/hacks/glx/Makefile.in @@ -38,11 +38,12 @@ X_CFLAGS = @X_CFLAGS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ +XMU_LIBS = @XMU_LIBS@ # Note: see comment in ../../driver/Makefile.in for explanation of X_LIBS, etc. # HACK_PRE = $(LIBS) $(X_LIBS) -HACK_POST = $(X_PRE_LIBS) -lXt -lX11 -lXext $(X_EXTRA_LIBS) -lm +HACK_POST = $(X_PRE_LIBS) -lXt -lX11 $(XMU_LIBS) -lXext $(X_EXTRA_LIBS) -lm HACK_POST2 = @GL_LIBS@ @HACK_LIBS@ $(HACK_POST) HACK_LIBS = $(HACK_PRE) $(HACK_POST2) XPM_LIBS = $(HACK_PRE) @XPM_LIBS@ $(HACK_POST2) @@ -53,7 +54,7 @@ HACK_BIN = .. UTILS_SRC = $(HACK_SRC)/../utils UTILS_BIN = $(HACK_BIN)/../utils -INCLUDES = -I$(srcdir) -I$(UTILS_SRC) -I$(HACK_SRC) -I../.. @INCLUDES@ +INCLUDES = -I. -I$(srcdir) -I$(UTILS_SRC) -I$(HACK_SRC) -I../.. @INCLUDES@ UTIL_SRCS = $(UTILS_SRC)/colors.c $(UTILS_SRC)/hsv.c \ $(UTILS_SRC)/resources.c $(UTILS_SRC)/usleep.c \ @@ -282,9 +283,9 @@ screenhack-gl.o: $(HACK_SRC)/screenhack.c CC_HACK = $(CC) $(LDFLAGS) -atlantis: atlantis.o $(HACK_OBJS) dolphin.o shark.o swim.o whale.o - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) dolphin.o shark.o swim.o whale.o \ - $(HACK_LIBS) +ATLANTIS_OBJS = $(HACK_OBJS) dolphin.o shark.o swim.o whale.o xpm-ximage.o +atlantis: atlantis.o $(ATLANTIS_OBJS) + $(CC_HACK) -o $@ $@.o $(ATLANTIS_OBJS) $(HACK_LIBS) $(XPM_LIBS) cage: cage.o $(HACK_OBJS) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) @@ -379,163 +380,34 @@ molecule: molecule.o sphere.o tube.o $(HACK_OBJS) # DO NOT DELETE: updated by make distdepend # $(srcdir)/DO $(srcdir)/NOT $(srcdir)/DELETE: $(srcdir)/updated $(srcdir)/by $(srcdir)/make $(srcdir)/distdepend -xscreensaver-gl-helper.o: $(UTILS_SRC)/utils.h xscreensaver-gl-helper.o: ../../config.h -xscreensaver-gl-helper.o: $(UTILS_SRC)/visual.h -atlantis.o: $(HACK_SRC)/xlockmore.h atlantis.o: ../../config.h -atlantis.o: $(HACK_SRC)/xlockmoreI.h -atlantis.o: $(HACK_SRC)/screenhack.h -atlantis.o: $(UTILS_SRC)/yarandom.h -atlantis.o: $(UTILS_SRC)/usleep.h -atlantis.o: $(UTILS_SRC)/resources.h -atlantis.o: $(UTILS_SRC)/hsv.h -atlantis.o: $(UTILS_SRC)/colors.h -atlantis.o: $(UTILS_SRC)/grabscreen.h -atlantis.o: $(UTILS_SRC)/visual.h -atlantis.o: $(UTILS_SRC)/xshm.h atlantis.o: $(srcdir)/atlantis.h +atlantis.o: $(srcdir)/xpm-ximage.h +atlantis.o: $(HACK_SRC)/images/sea-texture.xpm b_draw.o: $(srcdir)/bubble3d.h -b_draw.o: $(HACK_SRC)/xlockmoreI.h -b_draw.o: $(HACK_SRC)/screenhack.h b_draw.o: ../../config.h -b_draw.o: $(UTILS_SRC)/yarandom.h -b_draw.o: $(UTILS_SRC)/usleep.h -b_draw.o: $(UTILS_SRC)/resources.h -b_draw.o: $(UTILS_SRC)/hsv.h -b_draw.o: $(UTILS_SRC)/colors.h -b_draw.o: $(UTILS_SRC)/grabscreen.h -b_draw.o: $(UTILS_SRC)/visual.h -b_draw.o: $(UTILS_SRC)/xshm.h b_lockglue.o: $(srcdir)/bubble3d.h -b_lockglue.o: $(HACK_SRC)/xlockmoreI.h -b_lockglue.o: $(HACK_SRC)/screenhack.h b_lockglue.o: ../../config.h -b_lockglue.o: $(UTILS_SRC)/yarandom.h -b_lockglue.o: $(UTILS_SRC)/usleep.h -b_lockglue.o: $(UTILS_SRC)/resources.h -b_lockglue.o: $(UTILS_SRC)/hsv.h -b_lockglue.o: $(UTILS_SRC)/colors.h -b_lockglue.o: $(UTILS_SRC)/grabscreen.h -b_lockglue.o: $(UTILS_SRC)/visual.h -b_lockglue.o: $(UTILS_SRC)/xshm.h -b_lockglue.o: $(HACK_SRC)/xlockmore.h b_sphere.o: $(srcdir)/bubble3d.h -b_sphere.o: $(HACK_SRC)/xlockmoreI.h -b_sphere.o: $(HACK_SRC)/screenhack.h b_sphere.o: ../../config.h -b_sphere.o: $(UTILS_SRC)/yarandom.h -b_sphere.o: $(UTILS_SRC)/usleep.h -b_sphere.o: $(UTILS_SRC)/resources.h -b_sphere.o: $(UTILS_SRC)/hsv.h -b_sphere.o: $(UTILS_SRC)/colors.h -b_sphere.o: $(UTILS_SRC)/grabscreen.h -b_sphere.o: $(UTILS_SRC)/visual.h -b_sphere.o: $(UTILS_SRC)/xshm.h bubble3d.o: $(srcdir)/bubble3d.h -bubble3d.o: $(HACK_SRC)/xlockmoreI.h -bubble3d.o: $(HACK_SRC)/screenhack.h bubble3d.o: ../../config.h -bubble3d.o: $(UTILS_SRC)/yarandom.h -bubble3d.o: $(UTILS_SRC)/usleep.h -bubble3d.o: $(UTILS_SRC)/resources.h -bubble3d.o: $(UTILS_SRC)/hsv.h -bubble3d.o: $(UTILS_SRC)/colors.h -bubble3d.o: $(UTILS_SRC)/grabscreen.h -bubble3d.o: $(UTILS_SRC)/visual.h -bubble3d.o: $(UTILS_SRC)/xshm.h buildlwo.o: $(srcdir)/buildlwo.h -cage.o: $(HACK_SRC)/xlockmore.h cage.o: ../../config.h -cage.o: $(HACK_SRC)/xlockmoreI.h -cage.o: $(HACK_SRC)/screenhack.h -cage.o: $(UTILS_SRC)/yarandom.h -cage.o: $(UTILS_SRC)/usleep.h -cage.o: $(UTILS_SRC)/resources.h -cage.o: $(UTILS_SRC)/hsv.h -cage.o: $(UTILS_SRC)/colors.h -cage.o: $(UTILS_SRC)/grabscreen.h -cage.o: $(UTILS_SRC)/visual.h -cage.o: $(UTILS_SRC)/xshm.h cage.o: $(srcdir)/e_textures.h dolphin.o: $(srcdir)/atlantis.h -gears.o: $(HACK_SRC)/xlockmore.h gears.o: ../../config.h -gears.o: $(HACK_SRC)/xlockmoreI.h -gears.o: $(HACK_SRC)/screenhack.h -gears.o: $(UTILS_SRC)/yarandom.h -gears.o: $(UTILS_SRC)/usleep.h -gears.o: $(UTILS_SRC)/resources.h -gears.o: $(UTILS_SRC)/hsv.h -gears.o: $(UTILS_SRC)/colors.h -gears.o: $(UTILS_SRC)/grabscreen.h -gears.o: $(UTILS_SRC)/visual.h -gears.o: $(UTILS_SRC)/xshm.h -lament.o: $(HACK_SRC)/xlockmore.h lament.o: ../../config.h -lament.o: $(HACK_SRC)/xlockmoreI.h -lament.o: $(HACK_SRC)/screenhack.h -lament.o: $(UTILS_SRC)/yarandom.h -lament.o: $(UTILS_SRC)/usleep.h -lament.o: $(UTILS_SRC)/resources.h -lament.o: $(UTILS_SRC)/hsv.h -lament.o: $(UTILS_SRC)/colors.h -lament.o: $(UTILS_SRC)/grabscreen.h -lament.o: $(UTILS_SRC)/visual.h -lament.o: $(UTILS_SRC)/xshm.h lament.o: $(srcdir)/xpm-ximage.h lament.o: $(HACK_SRC)/images/lament.xpm -moebius.o: $(HACK_SRC)/xlockmore.h moebius.o: ../../config.h -moebius.o: $(HACK_SRC)/xlockmoreI.h -moebius.o: $(HACK_SRC)/screenhack.h -moebius.o: $(UTILS_SRC)/yarandom.h -moebius.o: $(UTILS_SRC)/usleep.h -moebius.o: $(UTILS_SRC)/resources.h -moebius.o: $(UTILS_SRC)/hsv.h -moebius.o: $(UTILS_SRC)/colors.h -moebius.o: $(UTILS_SRC)/grabscreen.h -moebius.o: $(UTILS_SRC)/visual.h -moebius.o: $(UTILS_SRC)/xshm.h moebius.o: $(srcdir)/e_textures.h -morph3d.o: $(HACK_SRC)/xlockmore.h morph3d.o: ../../config.h -morph3d.o: $(HACK_SRC)/xlockmoreI.h -morph3d.o: $(HACK_SRC)/screenhack.h -morph3d.o: $(UTILS_SRC)/yarandom.h -morph3d.o: $(UTILS_SRC)/usleep.h -morph3d.o: $(UTILS_SRC)/resources.h -morph3d.o: $(UTILS_SRC)/hsv.h -morph3d.o: $(UTILS_SRC)/colors.h -morph3d.o: $(UTILS_SRC)/grabscreen.h -morph3d.o: $(UTILS_SRC)/visual.h -morph3d.o: $(UTILS_SRC)/xshm.h pipeobjs.o: $(srcdir)/buildlwo.h -pipes.o: $(HACK_SRC)/xlockmore.h pipes.o: ../../config.h -pipes.o: $(HACK_SRC)/xlockmoreI.h -pipes.o: $(HACK_SRC)/screenhack.h -pipes.o: $(UTILS_SRC)/yarandom.h -pipes.o: $(UTILS_SRC)/usleep.h -pipes.o: $(UTILS_SRC)/resources.h -pipes.o: $(UTILS_SRC)/hsv.h -pipes.o: $(UTILS_SRC)/colors.h -pipes.o: $(UTILS_SRC)/grabscreen.h -pipes.o: $(UTILS_SRC)/visual.h -pipes.o: $(UTILS_SRC)/xshm.h pipes.o: $(srcdir)/buildlwo.h -rubik.o: $(HACK_SRC)/xlockmore.h rubik.o: ../../config.h -rubik.o: $(HACK_SRC)/xlockmoreI.h -rubik.o: $(HACK_SRC)/screenhack.h -rubik.o: $(UTILS_SRC)/yarandom.h -rubik.o: $(UTILS_SRC)/usleep.h -rubik.o: $(UTILS_SRC)/resources.h -rubik.o: $(UTILS_SRC)/hsv.h -rubik.o: $(UTILS_SRC)/colors.h -rubik.o: $(UTILS_SRC)/grabscreen.h -rubik.o: $(UTILS_SRC)/visual.h -rubik.o: $(UTILS_SRC)/xshm.h s1_1.o: $(srcdir)/buildlwo.h s1_2.o: $(srcdir)/buildlwo.h s1_3.o: $(srcdir)/buildlwo.h @@ -544,130 +416,24 @@ s1_5.o: $(srcdir)/buildlwo.h s1_6.o: $(srcdir)/buildlwo.h s1_b.o: $(srcdir)/buildlwo.h shark.o: $(srcdir)/atlantis.h -sproingies.o: $(HACK_SRC)/xlockmoreI.h -sproingies.o: $(HACK_SRC)/screenhack.h sproingies.o: ../../config.h -sproingies.o: $(UTILS_SRC)/yarandom.h -sproingies.o: $(UTILS_SRC)/usleep.h -sproingies.o: $(UTILS_SRC)/resources.h -sproingies.o: $(UTILS_SRC)/hsv.h -sproingies.o: $(UTILS_SRC)/colors.h -sproingies.o: $(UTILS_SRC)/grabscreen.h -sproingies.o: $(UTILS_SRC)/visual.h -sproingies.o: $(UTILS_SRC)/xshm.h sproingies.o: $(srcdir)/buildlwo.h -sproingiewrap.o: $(HACK_SRC)/xlockmore.h sproingiewrap.o: ../../config.h -sproingiewrap.o: $(HACK_SRC)/xlockmoreI.h -sproingiewrap.o: $(HACK_SRC)/screenhack.h -sproingiewrap.o: $(UTILS_SRC)/yarandom.h -sproingiewrap.o: $(UTILS_SRC)/usleep.h -sproingiewrap.o: $(UTILS_SRC)/resources.h -sproingiewrap.o: $(UTILS_SRC)/hsv.h -sproingiewrap.o: $(UTILS_SRC)/colors.h -sproingiewrap.o: $(UTILS_SRC)/grabscreen.h -sproingiewrap.o: $(UTILS_SRC)/visual.h -sproingiewrap.o: $(UTILS_SRC)/xshm.h -stairs.o: $(HACK_SRC)/xlockmore.h stairs.o: ../../config.h -stairs.o: $(HACK_SRC)/xlockmoreI.h -stairs.o: $(HACK_SRC)/screenhack.h -stairs.o: $(UTILS_SRC)/yarandom.h -stairs.o: $(UTILS_SRC)/usleep.h -stairs.o: $(UTILS_SRC)/resources.h -stairs.o: $(UTILS_SRC)/hsv.h -stairs.o: $(UTILS_SRC)/colors.h -stairs.o: $(UTILS_SRC)/grabscreen.h -stairs.o: $(UTILS_SRC)/visual.h -stairs.o: $(UTILS_SRC)/xshm.h stairs.o: $(srcdir)/e_textures.h -superquadrics.o: $(HACK_SRC)/xlockmore.h superquadrics.o: ../../config.h -superquadrics.o: $(HACK_SRC)/xlockmoreI.h -superquadrics.o: $(HACK_SRC)/screenhack.h -superquadrics.o: $(UTILS_SRC)/yarandom.h -superquadrics.o: $(UTILS_SRC)/usleep.h -superquadrics.o: $(UTILS_SRC)/resources.h -superquadrics.o: $(UTILS_SRC)/hsv.h -superquadrics.o: $(UTILS_SRC)/colors.h -superquadrics.o: $(UTILS_SRC)/grabscreen.h -superquadrics.o: $(UTILS_SRC)/visual.h -superquadrics.o: $(UTILS_SRC)/xshm.h -swim.o: $(HACK_SRC)/xlockmoreI.h -swim.o: $(HACK_SRC)/screenhack.h swim.o: ../../config.h -swim.o: $(UTILS_SRC)/yarandom.h -swim.o: $(UTILS_SRC)/usleep.h -swim.o: $(UTILS_SRC)/resources.h -swim.o: $(UTILS_SRC)/hsv.h -swim.o: $(UTILS_SRC)/colors.h -swim.o: $(UTILS_SRC)/grabscreen.h -swim.o: $(UTILS_SRC)/visual.h -swim.o: $(UTILS_SRC)/xshm.h swim.o: $(srcdir)/atlantis.h whale.o: $(srcdir)/atlantis.h -xlock-gl.o: $(HACK_SRC)/screenhack.h xlock-gl.o: ../../config.h -xlock-gl.o: $(UTILS_SRC)/yarandom.h -xlock-gl.o: $(UTILS_SRC)/usleep.h -xlock-gl.o: $(UTILS_SRC)/resources.h -xlock-gl.o: $(UTILS_SRC)/hsv.h -xlock-gl.o: $(UTILS_SRC)/colors.h -xlock-gl.o: $(UTILS_SRC)/grabscreen.h -xlock-gl.o: $(UTILS_SRC)/visual.h -xlock-gl.o: $(HACK_SRC)/xlockmoreI.h -xlock-gl.o: $(UTILS_SRC)/xshm.h fps.o: ../../config.h -fps.o: $(HACK_SRC)/screenhack.h -fps.o: $(UTILS_SRC)/yarandom.h -fps.o: $(UTILS_SRC)/usleep.h -fps.o: $(UTILS_SRC)/resources.h -fps.o: $(UTILS_SRC)/hsv.h -fps.o: $(UTILS_SRC)/colors.h -fps.o: $(UTILS_SRC)/grabscreen.h -fps.o: $(UTILS_SRC)/visual.h -fps.o: $(HACK_SRC)/xlockmoreI.h -fps.o: $(UTILS_SRC)/xshm.h xpm-ximage.o: ../../config.h -glplanet.o: $(HACK_SRC)/xlockmore.h glplanet.o: ../../config.h -glplanet.o: $(HACK_SRC)/xlockmoreI.h -glplanet.o: $(HACK_SRC)/screenhack.h -glplanet.o: $(UTILS_SRC)/yarandom.h -glplanet.o: $(UTILS_SRC)/usleep.h -glplanet.o: $(UTILS_SRC)/resources.h -glplanet.o: $(UTILS_SRC)/hsv.h -glplanet.o: $(UTILS_SRC)/colors.h -glplanet.o: $(UTILS_SRC)/grabscreen.h -glplanet.o: $(UTILS_SRC)/visual.h -glplanet.o: $(UTILS_SRC)/xshm.h glplanet.o: $(srcdir)/sphere.h glplanet.o: $(HACK_SRC)/images/earth.xbm glplanet.o: $(srcdir)/xpm-ximage.h -pulsar.o: $(HACK_SRC)/xlockmore.h pulsar.o: ../../config.h -pulsar.o: $(HACK_SRC)/xlockmoreI.h -pulsar.o: $(HACK_SRC)/screenhack.h -pulsar.o: $(UTILS_SRC)/yarandom.h -pulsar.o: $(UTILS_SRC)/usleep.h -pulsar.o: $(UTILS_SRC)/resources.h -pulsar.o: $(UTILS_SRC)/hsv.h -pulsar.o: $(UTILS_SRC)/colors.h -pulsar.o: $(UTILS_SRC)/grabscreen.h -pulsar.o: $(UTILS_SRC)/visual.h -pulsar.o: $(UTILS_SRC)/xshm.h extrusion.o: ../../config.h -extrusion.o: $(HACK_SRC)/xlockmore.h -extrusion.o: $(HACK_SRC)/xlockmoreI.h -extrusion.o: $(HACK_SRC)/screenhack.h -extrusion.o: $(UTILS_SRC)/yarandom.h -extrusion.o: $(UTILS_SRC)/usleep.h -extrusion.o: $(UTILS_SRC)/resources.h -extrusion.o: $(UTILS_SRC)/hsv.h -extrusion.o: $(UTILS_SRC)/colors.h -extrusion.o: $(UTILS_SRC)/grabscreen.h -extrusion.o: $(UTILS_SRC)/visual.h -extrusion.o: $(UTILS_SRC)/xshm.h extrusion-helix2.o: ../../config.h extrusion-helix3.o: ../../config.h extrusion-helix4.o: ../../config.h @@ -675,110 +441,36 @@ extrusion-joinoffset.o: ../../config.h extrusion-screw.o: ../../config.h extrusion-taper.o: ../../config.h extrusion-twistoid.o: ../../config.h -sierpinski3d.o: $(HACK_SRC)/xlockmore.h sierpinski3d.o: ../../config.h -sierpinski3d.o: $(HACK_SRC)/xlockmoreI.h -sierpinski3d.o: $(HACK_SRC)/screenhack.h -sierpinski3d.o: $(UTILS_SRC)/yarandom.h -sierpinski3d.o: $(UTILS_SRC)/usleep.h -sierpinski3d.o: $(UTILS_SRC)/resources.h -sierpinski3d.o: $(UTILS_SRC)/hsv.h -sierpinski3d.o: $(UTILS_SRC)/colors.h -sierpinski3d.o: $(UTILS_SRC)/grabscreen.h -sierpinski3d.o: $(UTILS_SRC)/visual.h -sierpinski3d.o: $(UTILS_SRC)/xshm.h -gflux.o: $(HACK_SRC)/xlockmore.h gflux.o: ../../config.h -gflux.o: $(HACK_SRC)/xlockmoreI.h -gflux.o: $(HACK_SRC)/screenhack.h -gflux.o: $(UTILS_SRC)/yarandom.h -gflux.o: $(UTILS_SRC)/usleep.h -gflux.o: $(UTILS_SRC)/resources.h -gflux.o: $(UTILS_SRC)/hsv.h -gflux.o: $(UTILS_SRC)/colors.h -gflux.o: $(UTILS_SRC)/grabscreen.h -gflux.o: $(UTILS_SRC)/visual.h -gflux.o: $(UTILS_SRC)/xshm.h stonerview.o: ../../config.h -stonerview.o: $(UTILS_SRC)/yarandom.h stonerview.o: $(srcdir)/stonerview-move.h stonerview-move.o: ../../config.h -stonerview-move.o: $(UTILS_SRC)/yarandom.h stonerview-move.o: $(srcdir)/stonerview-osc.h stonerview-move.o: $(srcdir)/stonerview-move.h stonerview-osc.o: ../../config.h -stonerview-osc.o: $(UTILS_SRC)/yarandom.h stonerview-osc.o: $(srcdir)/stonerview-osc.h stonerview-view.o: ../../config.h -stonerview-view.o: $(UTILS_SRC)/vroot.h -stonerview-view.o: $(UTILS_SRC)/version.h -stonerview-view.o: $(UTILS_SRC)/yarandom.h stonerview-view.o: $(srcdir)/stonerview-osc.h stonerview-view.o: $(srcdir)/stonerview-move.h -starwars.o: $(HACK_SRC)/xlockmore.h starwars.o: ../../config.h -starwars.o: $(HACK_SRC)/xlockmoreI.h -starwars.o: $(HACK_SRC)/screenhack.h -starwars.o: $(UTILS_SRC)/yarandom.h -starwars.o: $(UTILS_SRC)/usleep.h -starwars.o: $(UTILS_SRC)/resources.h -starwars.o: $(UTILS_SRC)/hsv.h -starwars.o: $(UTILS_SRC)/colors.h -starwars.o: $(UTILS_SRC)/grabscreen.h -starwars.o: $(UTILS_SRC)/visual.h -starwars.o: $(UTILS_SRC)/xshm.h starwars.o: $(srcdir)/glutstroke.h starwars.o: $(srcdir)/glut_roman.h glut_stroke.o: ../../config.h glut_stroke.o: $(srcdir)/glutstroke.h glut_swidth.o: ../../config.h glut_swidth.o: $(srcdir)/glutstroke.h -gltext.o: $(HACK_SRC)/xlockmore.h gltext.o: ../../config.h -gltext.o: $(HACK_SRC)/xlockmoreI.h -gltext.o: $(HACK_SRC)/screenhack.h -gltext.o: $(UTILS_SRC)/yarandom.h -gltext.o: $(UTILS_SRC)/usleep.h -gltext.o: $(UTILS_SRC)/resources.h -gltext.o: $(UTILS_SRC)/hsv.h -gltext.o: $(UTILS_SRC)/colors.h -gltext.o: $(UTILS_SRC)/grabscreen.h -gltext.o: $(UTILS_SRC)/visual.h -gltext.o: $(UTILS_SRC)/xshm.h gltext.o: $(srcdir)/tube.h gltext.o: $(srcdir)/glutstroke.h gltext.o: $(srcdir)/glut_roman.h -molecule.o: $(HACK_SRC)/xlockmore.h molecule.o: ../../config.h -molecule.o: $(HACK_SRC)/xlockmoreI.h -molecule.o: $(HACK_SRC)/screenhack.h -molecule.o: $(UTILS_SRC)/yarandom.h -molecule.o: $(UTILS_SRC)/usleep.h -molecule.o: $(UTILS_SRC)/resources.h -molecule.o: $(UTILS_SRC)/hsv.h -molecule.o: $(UTILS_SRC)/colors.h -molecule.o: $(UTILS_SRC)/grabscreen.h -molecule.o: $(UTILS_SRC)/visual.h -molecule.o: $(UTILS_SRC)/xshm.h molecule.o: $(srcdir)/sphere.h molecule.o: $(srcdir)/tube.h molecule.o: molecules.h -dangerball.o: $(HACK_SRC)/xlockmore.h dangerball.o: ../../config.h -dangerball.o: $(HACK_SRC)/xlockmoreI.h -dangerball.o: $(HACK_SRC)/screenhack.h -dangerball.o: $(UTILS_SRC)/yarandom.h -dangerball.o: $(UTILS_SRC)/usleep.h -dangerball.o: $(UTILS_SRC)/resources.h -dangerball.o: $(UTILS_SRC)/hsv.h -dangerball.o: $(UTILS_SRC)/colors.h -dangerball.o: $(UTILS_SRC)/grabscreen.h -dangerball.o: $(UTILS_SRC)/visual.h -dangerball.o: $(UTILS_SRC)/xshm.h dangerball.o: $(srcdir)/sphere.h dangerball.o: $(srcdir)/tube.h -dangerball.o: $(srcdir)/glutstroke.h -dangerball.o: $(srcdir)/glut_roman.h sphere.o: ../../config.h sphere.o: $(srcdir)/tube.h tube.o: ../../config.h diff --git a/hacks/glx/atlantis.c b/hacks/glx/atlantis.c index 00853dc6..f1844a5b 100644 --- a/hacks/glx/atlantis.c +++ b/hacks/glx/atlantis.c @@ -36,6 +36,11 @@ static const char sccsid[] = "@(#)atlantis.c 1.3 98/06/18 xlockmore"; * * REVISION HISTORY: * + * Jamie Zawinski, 2-Apr-01: - The fishies were inside out! The back faces + * were being drawn, not the front faces. + * - Added a texture to simulate light from the + * surface, like in the SGI version. + * * David A. Bagley - 98/06/17 : Add whalespeed option. Global options to * initialize local variables are now: * XLock.atlantis.cycles: 100 ! SharkSpeed @@ -109,6 +114,7 @@ static const char sccsid[] = "@(#)atlantis.c 1.3 98/06/18 xlockmore"; "*showFPS: False \n" \ "*cycles: 100 \n" \ "*size: 6000 \n" \ + "*wireframe: False \n" \ "*whalespeed: 250 \n" # include "xlockmore.h" /* from the xscreensaver distribution */ #else /* !STANDALONE */ @@ -122,21 +128,28 @@ static const char sccsid[] = "@(#)atlantis.c 1.3 98/06/18 xlockmore"; #include +#define DEF_TEXTURE "True" + #define DEF_WHALESPEED "250" static int whalespeed; +static int do_texture; static XrmOptionDescRec opts[] = { - {"-whalespeed", ".atlantis.whalespeed", XrmoptionSepArg, (caddr_t) NULL} + {"-whalespeed", ".atlantis.whalespeed", XrmoptionSepArg, (caddr_t) NULL}, + {"-texture", ".atlantis.texture", XrmoptionNoArg, (caddr_t)"true"}, + {"+texture", ".atlantis.texture", XrmoptionNoArg, (caddr_t)"false"}, }; static argtype vars[] = { -{(caddr_t *) & whalespeed, "whalespeed", "WhaleSpeed", DEF_WHALESPEED, t_Int} + {(caddr_t *) & whalespeed, "whalespeed", "WhaleSpeed", DEF_WHALESPEED, t_Int}, + {(caddr_t *) &do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, }; static OptionStruct desc[] = { - {"-whalespeed num", "speed of whales and the dolphin"} + {"-whalespeed num", "speed of whales and the dolphin"}, + {"-texture num", "whether to introduce water-like distortion"} }; ModeSpecOpt atlantis_opts = @@ -153,6 +166,19 @@ ModStruct atlantis_description = static atlantisstruct *atlantis = NULL; +#include "xpm-ximage.h" +#include "../images/sea-texture.xpm" + +static void +parse_image_data(ModeInfo *mi) +{ + atlantisstruct *ap = &atlantis[MI_SCREEN(mi)]; + ap->texture = xpm_to_ximage (mi->dpy, + mi->xgwa.visual, + mi->xgwa.colormap, + sea_texture); +} + static void InitFishs(atlantisstruct * ap) { @@ -192,8 +218,10 @@ InitFishs(atlantisstruct * ap) } static void -Init(atlantisstruct * ap) +Init(ModeInfo *mi) { + atlantisstruct *ap = &atlantis[MI_SCREEN(mi)]; + static float ambient[] = {0.1, 0.1, 0.1, 1.0}; static float diffuse[] = @@ -214,23 +242,78 @@ Init(atlantisstruct * ap) {0.0}; float fblue = 0.0, fgreen; - glFrontFace(GL_CW); - - glDepthFunc(GL_LEQUAL); - glEnable(GL_DEPTH_TEST); - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, position); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, lmodel_localviewer); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mat_ambient); + glFrontFace(GL_CCW); + + if (ap->wire) + { + glDisable(GL_DEPTH_TEST); + glDisable(GL_CULL_FACE); + glDisable(GL_LIGHTING); + glDisable(GL_NORMALIZE); + } + else + { + glDepthFunc(GL_LEQUAL); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + glEnable(GL_NORMALIZE); + glShadeModel(GL_SMOOTH); + + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_POSITION, position); + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); + glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, lmodel_localviewer); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mat_diffuse); + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mat_ambient); + } + + if (ap->wire || !do_texture) + { + glDisable(GL_TEXTURE_2D); + } + else + { + GLfloat s_plane[] = { 1, 0, 0, 0 }; + GLfloat t_plane[] = { 0, 0, 1, 0 }; + GLfloat scale = 0.0005; + + if (!ap->texture) + parse_image_data (mi); + + clear_gl_error(); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + ap->texture->width, ap->texture->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, + ap->texture->data); + check_gl_error("texture"); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + + glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); + glTexGeni (GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); + glTexGenfv(GL_S, GL_EYE_PLANE, s_plane); + glTexGenfv(GL_T, GL_EYE_PLANE, t_plane); + + glEnable(GL_TEXTURE_GEN_S); + glEnable(GL_TEXTURE_GEN_T); + glEnable(GL_TEXTURE_2D); + + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + glScalef(scale, scale, 1); + glMatrixMode(GL_MODELVIEW); + } InitFishs(ap); @@ -361,7 +444,7 @@ init_atlantis(ModeInfo * mi) reshape_atlantis(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); glDrawBuffer(GL_BACK); - Init(ap); + Init(mi); AllDisplay(ap); glXSwapBuffers(display, window); @@ -392,12 +475,8 @@ draw_atlantis(ModeInfo * mi) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix(); - - AllDisplay(ap); - Animate(ap); - - glPopMatrix(); + AllDisplay(ap); + Animate(ap); if (mi->fps_p) do_fps (mi); glXSwapBuffers(display, window); @@ -444,7 +523,7 @@ change_atlantis(ModeInfo * mi) return; glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ap->glx_context)); - Init(ap); + Init(mi); } #endif /* USE_GL */ diff --git a/hacks/glx/atlantis.h b/hacks/glx/atlantis.h index 413b48b8..be07c963 100644 --- a/hacks/glx/atlantis.h +++ b/hacks/glx/atlantis.h @@ -98,6 +98,8 @@ typedef struct { fishRec momWhale; fishRec babyWhale; fishRec dolph; + + XImage *texture; /* water distortion overlay bits */ } atlantisstruct; extern void FishTransform(fishRec *); diff --git a/hacks/glx/dangerball.c b/hacks/glx/dangerball.c index 8aa2f9cf..d189602a 100644 --- a/hacks/glx/dangerball.c +++ b/hacks/glx/dangerball.c @@ -49,16 +49,7 @@ extern XtAppContext app; #ifdef USE_GL /* whole file */ -#ifdef HAVE_UNAME -# include -#endif /* HAVE_UNAME */ - - #include -#include "glutstroke.h" -#include "glut_roman.h" -#define GLUT_FONT (&glutStrokeRoman) - typedef struct { GLXContext *glx_context; diff --git a/hacks/glx/molecule.c b/hacks/glx/molecule.c index 447605c6..954b9810 100644 --- a/hacks/glx/molecule.c +++ b/hacks/glx/molecule.c @@ -622,6 +622,19 @@ build_molecule (ModeInfo *mi) glEnable(GL_CULL_FACE); } + if (do_labels && !wire) + { + /* This is so all polygons are drawn slightly farther back in the depth + buffer, so that when we render text directly on top of the spheres, + it still shows up. */ + glEnable (GL_POLYGON_OFFSET_FILL); + glPolygonOffset (1.0, (do_bonds ? 10.0 : 35.0)); + } + else + { + glDisable (GL_POLYGON_OFFSET_FILL); + } + if (!wire) set_atom_color (mi, 0, False); @@ -659,55 +672,44 @@ build_molecule (ModeInfo *mi) } } - for (i = 0; i < m->natoms; i++) - { - molecule_atom *a = &m->atoms[i]; - int i; + if (!wire && do_atoms) + for (i = 0; i < m->natoms; i++) + { + molecule_atom *a = &m->atoms[i]; + GLfloat size = atom_size (a); + set_atom_color (mi, a, False); + sphere (a->x, a->y, a->z, size, wire); + } - if (!wire && do_atoms) - { - GLfloat size = atom_size (a); - set_atom_color (mi, a, False); - sphere (a->x, a->y, a->z, size, wire); - } + /* Second pass to draw labels, after all atoms and bonds are in place + */ + if (do_labels) + for (i = 0; i < m->natoms; i++) + { + molecule_atom *a = &m->atoms[i]; + int j; - if (do_labels) - { - glPushAttrib (GL_LIGHTING | GL_DEPTH_TEST); - glDisable (GL_LIGHTING); - glDisable (GL_DEPTH_TEST); + glPushAttrib (GL_LIGHTING | GL_DEPTH_TEST); + glDisable (GL_LIGHTING); +/* glDisable (GL_DEPTH_TEST);*/ - if (!wire) - set_atom_color (mi, a, True); + if (!wire) + set_atom_color (mi, a, True); - glRasterPos3f (a->x, a->y, a->z); + glRasterPos3f (a->x, a->y, a->z); - { - GLdouble mm[17], pm[17]; - GLint vp[5]; - GLdouble wx=-1, wy=-1, wz=-1; - glGetDoublev (GL_MODELVIEW_MATRIX, mm); - glGetDoublev (GL_PROJECTION_MATRIX, pm); - glGetIntegerv (GL_VIEWPORT, vp); - - /* Convert 3D coordinates to window coordinates */ - gluProject (a->x, a->y, a->z, mm, pm, vp, &wx, &wy, &wz); - - /* Fudge the window coordinates to center the string */ - wx -= string_width (mc->xfont1, a->label) / 2; - wy -= mc->xfont1->descent; - - /* Convert new window coordinates back to 3D coordinates */ - gluUnProject (wx, wy, wz, mm, pm, vp, &wx, &wy, &wz); - glRasterPos3f (wx, wy, wz); - } + /* Before drawing the string, shift the origin to center + the text over the origin of the sphere. */ + glBitmap (0, 0, 0, 0, + -string_width (mc->xfont1, a->label) / 2, + -mc->xfont1->descent, + NULL); - for (i = 0; i < strlen(a->label); i++) - glCallList (mc->font1_dlist + (int)(a->label[i])); + for (j = 0; j < strlen(a->label); j++) + glCallList (mc->font1_dlist + (int)(a->label[j])); - glPopAttrib(); - } - } + glPopAttrib(); + } if (do_bbox) draw_bounding_box (mi); @@ -1100,6 +1102,7 @@ reshape_molecule (ModeInfo *mi, int width, int height) gluLookAt( 0.0, 0.0, 15.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); + glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.0, 0.0, -15.0); diff --git a/hacks/images/sea-texture.xpm b/hacks/images/sea-texture.xpm new file mode 100644 index 00000000..2f7206cc --- /dev/null +++ b/hacks/images/sea-texture.xpm @@ -0,0 +1,199 @@ +/* XPM */ +static char *sea_texture[] = { +/* width height num_colors chars_per_pixel */ +" 128 128 64 1", +/* colors */ +". c #b1b1b1", +"# c #afafaf", +"a c #adadad", +"b c #ababab", +"c c #a7a7a7", +"d c #a5a5a5", +"e c #a3a3a3", +"f c #f0f0f0", +"g c #e0e0e0", +"h c #dedede", +"i c #dadada", +"j c #d8d8d8", +"k c #d6d6d6", +"l c #d4d4d4", +"m c #d2d2d2", +"n c #d0d0d0", +"o c #cecece", +"p c #cccccc", +"q c #cacaca", +"r c #c8c8c8", +"s c #c6c6c6", +"t c #c4c4c4", +"u c #c2c2c2", +"v c #c0c0c0", +"w c #bebebe", +"x c #bcbcbc", +"y c #bababa", +"z c #b8b8b8", +"A c #b6b6b6", +"B c #b4b4b4", +"C c #b2b2b2", +"D c #b0b0b0", +"E c #aeaeae", +"F c #acacac", +"G c #aaaaaa", +"H c #a8a8a8", +"I c #a0a0a0", +"J c #9c9c9c", +"K c #929292", +"L c #e9e9e9", +"M c #e5e5e5", +"N c #e3e3e3", +"O c #dddddd", +"P c #dbdbdb", +"Q c #d9d9d9", +"R c #d7d7d7", +"S c #d5d5d5", +"T c #d3d3d3", +"U c #d1d1d1", +"V c #cfcfcf", +"W c #cdcdcd", +"X c #cbcbcb", +"Y c #c9c9c9", +"Z c #c7c7c7", +"0 c #c5c5c5", +"1 c #c3c3c3", +"2 c #c1c1c1", +"3 c #bfbfbf", +"4 c #bdbdbd", +"5 c #bbbbbb", +"6 c #b9b9b9", +"7 c #b7b7b7", +"8 c #b5b5b5", +"9 c #b3b3b3", +/* pixels */ +"PPilW0w65w2tZYpoUTlkRQQQjRRjPhNMLMMNNOTY38B7y42sWlPgPUZ4B.#abGGGbbFaE#D.A5v0qVljOhQTWZsoSONLMMNghOPQRkkkkkkjQPPPPiQQjRRkSWt5.HHH", +"PPilW0w65w2tZYpoUTlkRQQQjRRjPhNMLMMNNOTY38B7y42sWlPgPUZ4B.#abGGGbbFaE#D.A5v0qVljOhQTWZsoSONLMMNghOPQRkkkkkkjQPPPPiQQjRRkSWt5.HHH", +"PPQTp0w6y4v1srXWnmTSkjjjRkkRihgMMMNNNPmrwB97y42sWlihinsx9DEabGGGbbFaE#D.A5v0YoTRPhjmps0WlPNLMNNghPijkSSSSlSRjiPPiQQQjRRkSWt5.HHH", +"iijmp0w6yxwvutZYponTlRkSmnooUSjPhhhggPUZ499z4uZXnljPkW1yC#EaFbaED.9BB88Ay420YWmkPOkVYuvZoSPhhOPiQklmnooWpppVUlkRjjQiQQQjRVsxCGHH", +"jjRUX0w6yy5x4vu0rqpVmSlUWY00rpVTSRiPhQV05.9y2rVmTSkRUYvzDEEaaaD9A6xxxxx5wv10rpnlQPTp0452ZWTkkSllmnWqrs0t1u1sqWUTSRQPPPPPPmrwBbGG", +"RRSnX03y66z665wv1sYpVTmWZu45wu0YpnlRPRW1yDCxtokjRklmWt48EaaEE#97xvtt11u2u1t0ZqVTjQnYv685v0qWWoWopYs123456z6wusXomSQOOOhhhSXvAFbb", +"SSlVq03y67A8B76x3u0YpUnYu5B.Bz531roTjkpuzEC4rlhhiRmorv6CaFaE#.7xurWpXYrZsss0sYWUkRo0xBDB64ut0ssZsuvx67BCDaD8yv0qVlQhhggggjou7aFF", +"TTmWYt3y6A9CD98z5wusqVo04BFHb#CA52YVklqv7aC3XQNNORnY1xADbba#D9yvrVlTUVopqrZt0rpnSSXuzDbECAyxww32vx68C#aGcdca96vspTjhgNNNNPnt6Eaa", +"YYr01v4y678B9A6xv10ZYpqu59bHbE.86vZWlmr3Aa.wYkghQmq1w6B#bF#.9Ax2rWmnWqZ0t1uv2tZXVVZ3AEGECA54w3v2vxzB.EFGHdH#8y20qVlQPOhgNin0yDDD", +"xx5555y6y6zzzxvtZqYYYYsvyBabaD9AyvspmnZwAE.xsUijUXt468C#aE.B7yw2sYpY024yy55543u0YYu58EbD86w2uuu12468.#EaaF#B6w1sYpoUlkiPhjo0x9CC", +"###D9876yy54wusXVUoprs246BDED98z5vsXVWs4AE.6uXTUqt47BC.#EDB7y43210su4z9#DCBAzy4vu14z9EF.7xu000001wy8.DDD..B642sZZrrYpnljPSW04888", +"eeedbDBz5xw21rWmRQTor14yz8C.9876xv0YWXt4A#.7wspY147.#####CAy422222v58EHdcGaDBAzyx468CEa963srrrZZtvyA.DC9A7yw2trZstu2tYVTjTp0w777", +"KKKJeG.z5wu0YoTQhgjnrv6778BBA7654v0rXY1x8#D85v0uxA.bGFa#DB64vt1v34yBadIJIecbD.9B8ABCDEE8xuYpXqqYs25A..BAy4v10ZXrt2x641YVSUX03yyy", +"KKKJebBxvtrXVlQhNNPTqu5y67887765xwutst3z9aEC75347CEHHbFEDB6xvt2w57BEHeIJJedGE#DDD.D##E#AxurXYrs0uw68..9A6xw2u1s1v4y752ZWmVY14zzz", +"KKKJdD61ZXVmkQOgNMhkVZ2wx6A877zyyxw3vw6B#GbE97568DaHHbFED9z5w2wyA.aGcdIIedHbEEEaFFFaEEDA5v0stuvw5z8C#DCBAzy55x4x5y6zx2ZpnWs2y888", +"KKKJHB3qomkQOhNNLLgQTps135zA777zz66yyzB#GdcGECA8CEbHHbFE#CA6x358DbcddddddHGaEFbHccHba#CA642u3x67B9.#EED.9B888BBBA7zy4usqoqtw7CCC", +"KKKIbz0UkQOgNMLLLLNORUpZ146A7777AA88BCEGdeecGEC.#FGHHbFE#C8zyx7.bdIIedcHGFFEEbHdeedHFD9Az54wy79#aaaFFaE#D..DEFFa.Bz5wu0Ypr25B#EE", +"KKKIE4XjOgNLLLLLLLMgPkUpsvyAA7AAB9.DEFHdeIIedHaaFGHHHbFE#.BAzyBadIJJIdGE####EGceIJIdbDBA7zy68.FHdHHGbFFaaaFGcdedF.7x3u0rq03z.Fbb", +"KKJdC3WQhNMLLLLLLLNgPjlWswz99999.DEaFGcdeIIecGEEaFbbFaED.9876y8#HeIIdFDB9CD#aGHdeIdHECAA77z7CEGddcGFE#EEaFbHdIIeHD74v10rqt48EHHH", +"IIebA2pkPhNLLLLMNghPijlp159EEEEEaaFFFGHddIedGEC9.D##D.C9BAzy5x68.Eba.B7y78.#FbbbbbaD9Az7777ACEGcdGE.8ABCDEbHdIJIHD7w2tsrqtxBFddd", +"GGbCy1qmRPgMLMNghPiQjRlq27EHHHHHHGGbFbHcdddGEC77A8B9B8A7zy54w34xy676543vx7CEGa#.B8A7z6y6z7AB.EbHHaC7xx6AC#FHeIJIHDzv10ZYq1yCHeII", +"BBB6wtYVlihNLNgPjSkkRRlYw9HedddddcHGFFGHcdHaCA5xy6z77z65x4w3v22u1ttt0ss0vy9aHE9z4v3w4x5yz789DEbHGDAxu1w68DFHeIJIHD62tsZYqu6DcIII", +"44wvusrpURONMgPRTVUmSRlrx#dJIIIIedcHFFbGHHbDAy3vw4x55x43v22uu10rpVUnVVoXtxBaH#7wsqr01v45z7BCDEbHF9yuYY147CFHeIJIHD6u0ZrYquzEdJJJ", +"222uuttZpmQhNOjToqWVmSmZyEeJJJIIedHF#D#EEF#9z42uv3w443vu1t1tt0rpmkijkSmVZwAEH.y1XnWY02w5zA9.D#EaD7wsWp03zCaHeIJIH.y1srrYY27EdJJJ", +"333wwww30pmQOjTVqZqpoUV06EdIIIedcb#97z78B9B7y4vvww4x43utsss0t0YoSihOiRlUY2z.FBx0omoY0vx6AB.D.9BA6w1rWp03zCaHdIJIb9xtZrrrZv7EdJJJ", +"xxxy6z77w0pljlVqs1srXop16#dIeddHFD8y3vwx5665x4ww4x554v1ZqYrZ00qnjhNgOikmX15BD73ZnlVY035z8C#D97yw2tZqWX03zCaHdeIda8wsZrZZ03AEdIJJ", +"yy67BCD#A3somVXs1v10ZqY2zDcedHGFDA52Zrstuv3www4x55y6x20YWpqrs0XmPNLMgOjlW0w79yuqmknqtw6A9Da#ByvZqXXWoqtwzCaGHdecD7vZrrs0148EdIII", +"77A9DFHH#zvrWqsu34vutZs37DHdHbE.8x2roVWXYstuvw55y6zzx2spnVpqs0plhMfLNgiSoZ2yA40plRUqt4z8C#FEAwZVmUnVoqtwzCabHcdGC62YYrstux8EcIII", +"88B.aGdda84sXZtv45wvu0t3zCFGa#C8yvspmTUopYs13xz7777z52ZpUVWqs0WkgLfLMgiSorux63ZokQmXt47BC#F#72XSjkTUVqtw69#abHcFB51qqrstu4ADHddd", +"99C.#abbCy2YWqsuwx321ss2xzC.98zy4usXnnopqZ1w68##.B8z5v0YWpXYZsoRgLfLNhknX02xy2YnjPlWs367BC#Cy1pSjRlTUpZ2xAC#EbHa8xtXXqrZ0vy8#GGG", +"......DCz3sWnprtv4vu0rrt246z654w2tZqWWXYZt369acHFD9z53usYYrrZZVjNLfLNPmXZ1vxx1XmiOkVr2x678984sokQRSlTVYt368CDab#A4tXpXXYrt3yBDDD", +"DD#.CB8zwtqnTVq02w21sYqZ0u3w3vu10sZYqYrst2xBadIIdFCz5wv10ssZZrnQNLfLgjos12344tplPhjUq1wxyzA6vrVkQjkklUXZu468C#FD7w0pWWWpXZ13yAAA", +"EEE.Bz5wtYolkmpZuvu0ZqpqYZ00ssZrYrrrrs0123z#cIKJIHDz5xwvu1t0ZYUiNffLhSqv3ww4wsokhgiTp0v345yxuqnRiQjRkToY0vxz8.E.6vsWVoVVoXZt3xxx", +"###C7xv0YWmRQloYtutZqWVWWpXqqqXXXYrZst123w7adJKKIH.y4w3v21tsrqmiNLfLOms444wwvrnjgNPlp0v3w4xwtXUkQjRRkToXZuwyA9D9y2ZonnUUnWqZ1vvv", +"777ywu0qomkPPRmWrsrXoUTUnopXXXXXXYrZstt1u25CGIJJdD6u0sZrYqXppolPNLfNQn04w32utXmQgNiUrvyyyyyxurWmSlTmUVXr0uw579D9y2ZonnUUUWqs2444", +"33320rXVmkihhiSUpqpVTkjSTnWXXXXqqYrZs0000037DHIdEz2qWVnUmmmmUmkPhNLhkWt43v10roSPNNjotyB8A7z530qoUVoWXqZ012w579.B5urVUUUUUWYt3555", +"ZZZYpVUlRiOgNhQlnonljPOjSmopXXqqYrZss0sZZrtxA#HaAvYmkRQiPiQjkSjPOggimX14vusYpmRONNRpv8EDC9A642sqpqYrs0t12vw57B.B5urVUUmmUWru4zzz", +"VVVUmSkQPhgMMgPjlmSjPggPjlVpXXqYrrZsssZYqprux8D8wrUihgNNNNghPQiPPPPkVYu42trpnSQhNNkYx#HbED975w1srstuvvvv33w57BC8x1YnmmmmUWZ25AAA", +"kkkRjiPOhNNLLNhPRSjPgNMhikUWpXXqYYrZZrYXWVps25Ax0VjgMLLLLLMNhPiijRkUpZ2wusXnljPhNNls6becbECA6xv1tuv455x443w5z8B74tqnmTTTmWZvyBBB", +"QQQQQiiPOgNMMNhiRSjPhNNhPRTnnUUUUUnVVoVVVUWr1w6wZnjgNMLLLLNhQkSlTTmVqs23troTRQPhghUt7bdHFDBz5wut02wy7765xw34x5yx2ZXUmTTlTVYuxAAA", +"PPPiiiQQPhgNNgOQklRiOgNhPjSTSkRjQQjRRklTmmoYtv5vrnjhNNMLLMhilVVVVVVpYsu2sXUkiPPPhiouAbdHEC75wvtss2xz99A65wvvvvv1sqWUmTlSSUXtw666", +"hhOPiQjRQPhgNhPjSTkQPhghPQRkQPOgggghhOiRlToqsuwuYnRhgNMMLNPkVYYqqXXqZ011rWlQOPPPikXv8bdG#B64v1srZ258##97yw2ut0ZYqWoUmlSkRTWZ2555", +"gghOPQRSRiOhghPRlmSjiOhOPiQQOgNLLLLLLNgPRlVXZtvtqnROggNMMgjUY11t0ZZZs0t0qnRPghPQRmrwBbcb.Axv10rqr26CbbD86wu0rXoVVnnUmlkRQSVY1www", +"gggOPjSTSjPhgOikTUlRQPOPPPPPgMLffffffLNhQlVpr0u0qnkPhhgNNhSW0wwv21t0000ZpmQhNhPjlo04BbHa963u0ZqpY26.HHEBy3trpUlSTTmUmSRQPRUps222", +"iiQklUoWnljPhPjSmnTSRiPPPQQQOgNLLLLLLMgPRTVprt21sXVmkjPhgPSoZ2v22uu1t0sYVlPgMgOikUYuyC#9z4u0rqpopsvy9B6wtrpnTRiijkSTlRQPOikmWYYY", +"mmUopYZsqnSQPiRlUVmlkQiQQRkkQPhgNNggghPjlmoXZ1vvu0ZYWUkihiSnqst1u2vutsrXUkONMNhPQlWZv67y420rXponVprtv2sqVlRQPhggPijkRiPhghPjSUmm", +"YYrstuv30XURPjSmnoUTSjQjRSlTSkRQiiQQQRSlmnWqsu3www3vtYVkPQSmoXr01vw2tZqWTjhNLNghPRUps2wv1srXWonmmUnoWVTRPhgNNMMMghPQiOhgNNghPiPP", +"vv3wxy6z3ZoSQRlUVWnmlRjkSTUnnUUUmmUUUnnnVVpY02w5yz7AxuYURRSTUnprt34vtrXnSigMLMNghPkUprsZrqpWnUTSkRjQiPgNMLLLLLLLMNhPPhgNMMMNNNNN", +"zz7A89CCy1qTjkTnopVUTkRSTUVWWpXqqqqqqqXpWoprtv46A9Da95tplkSSllVqtw531rWmRPgMLLMNgOQkmVWWWVVnmTSRjPgNMLLfffffffffLMghhNNMLLLLLLLL", +"666z7A88xtqmkSTUnVmlkQijklmnWXr00ssZrYXoVUVq024z8.EbD62qmTTmUnX0vy7xuroljOgMLMNhPikTVpqpWVnUmUmmlQhNLLfffffffffLMNhPPhhNNNMMMMLL", +"44xxx5y5vsXUlllTTTkjiOhOPQRlVXs2vutsrqWnTSTWZu4zBDaG#zvYUUVWXYtvy8CzvZoSQOgNMNhPRlnWqZ0rXoUmUoWXWlPgLLfffffffLLNgOQkkjQPPOhhhhgg", +"vvvvv3vvtrpnmllSkRiPhgNghOPjUXt4x3u0rXVTkQRnY147BDFHE73rnVpY01wy8.E8wsVkiOgNNgPRTVXrt220YomTnpY0ZnRhLfffffffLLNhPRlUUmTSSkRRjjQQ", +"111ttt0srXWVUTSRQPhgNMMMNNgPTXu67x3trpnSQOPTXt479#bHaAwZopYtvxzB#FGCx0VjPOgNNhQToY0u3xxuZWTlVYt32XlhLfffffffLNOjSmVppWWooVnnUUmm", +"ZZZZrYqXpWWoVTSQPhgNMLLLLMNhSqv89z4uZWmRPghkW0479#bcF84sWq0vy8.EGcdEy0VQPOgggPSVYtv4y77w0WTlosvzysUPLffffffLMhRmnWqZZZZZZZrrYYqq", +"XXqXppWWWpXqXVmkQPhgNMMNghOjotyDF.8ywtqnkPPlWZvyACEGEAxtqs2yB#bHddeFztVQiPOhhjmXt3x67BBxuqnUXtw7ysUPLffffffLNPknWY02vvvv3v2utt00", +"VVoooooopqrssqWUSRQiPhOPRlnX1yCHdHbE.A40pllnprt357CE.7xusux8EHddeIIb7uoRQiPPiloZv5zABCC63spWr1w6xZmhLfffffLMgPknXsv5y6zz765x3v22", +"TTmmUnVoXr0u20rpnTllSkSUWYt3z.GeIIIedH.yuXWpXqrtv579Bz5vu47DHeIIIIIGA2WkRjjjRnq1x789CD.7xurY0uwy4YThLfLLLLMghiknqux89C.D#.BAyx44", +"RRkSlmUVXs1wxv1ZpooVVVWr1wz9aceJJJKKKJd#zuZrqXWY0v577y5436CGeJJJJJIHBvpSkSSSTWs3z9..#E#By3101vw53qSgLfLLMNghPQknr37#FGHHcGa.87zz", +"PPijklmVqtvy7ywuZYYYrZ03z9FceIJKKKKKKKJdEyvtYWUVq0vxy5555BadJKKKJJJc93XllTTmnYu5B#EEFFa.7532v3wx2pkgLfLMNhPiQjknsxCHdeIIIedbD9BB", +"PPiRSUVXs2x78z42srZs01v58#HdIJJKKKKKKKKea6v0XnklVq0u3wx5y9FdIJJJJJIHB3qmmnVWXtw7.FbbGbFDAy3233wx2pSgLLLgORSlSlTWty.HdeIIJIdGD8AA", +"jjRTnprtvx68Bz4uZqZs1v468.FHdIJJKKKKKKJd.4tYVSiQSnpr0u34y8#HeIIIeedE7vYnopqr0369aHHHHHbDA5212vwxvqlhLLNORUoooooY2yCbcdIIJecEB655", +"SSlnXZuw5zA9C741rXr02w5z8C#FHdIJJKKKKKIG8vrolihhikmoqsu35ACaHddcHGF9yurWXr0u3y8#GcccccH#741012w53YmPMMhjUqrrrrr036BEGceIIeG.zwvv", +"TTUpZ2x789C..741Yprtv5z789.#FHdIJJJKKJeE6tpmjhNNgPjSnq0v57B.EFaE#.9741rXrt246BDbcdddddH#7w0Zt2w5wrniNNPTX122uu12xz8.aHdeIdFBx100", +"nnoruxAD####D74tqortw6A888B9DFHdIIJJJJcC4rnkPNLLMNhPkoru5678B9B8A76xvtZY0vx79#Fcdeeeedc#73ZYsuw54sojghRo04y5xx44yzABDbceIdE7vrqq", +"ppX0369aE#D.963sXor1xA9B8A77BDaHddIIJeb83qUjhMLLLMghjnYuxy6666y5x43v10ssu47CEGHdeIeeddG.6vZqs1vxwsokhPmYvz8Az6556z7ACaHdIH.y1XWW", +"rrZu469#.987y31rpWZ2y9D98z55zB.aGHdeIdE7vqURPNLLMNghjnYux55x4w3vu1tt000t369aHddeIIedHFD85v0rstuvuroliRo0xBCBA6556z7A9#bHdbBx0WVV", +"tt1vxzB.B75w2tZqpWs3zDEC8y3vxz8.EFHHdG.62qnkPgMLNNgOjnYux54321tsZYqrZst2x8#HeeIIIIdHaCA64vtss00tsqomkmq2zD#C8z55y6z7B.EbH#73Zonn", +"vv34y7897xvtrqqpWpt48abDAxut2468CDEFGEB5uqVlihNMNghPRnYuxx3u0rYXWoVpYZ136CGeIJIIIIdbC7xwv21t0sZrYponmo04BFF#B75x5y6zA9DEFCy2YVUU", +"xx5yz7885v0qVVoooX159GH#AwsY0246ABC.#Cz41qVTjhNNghhPRnYux420YponmllnXZux8EdIJJJJJIcEA4uuu2210ZqpWWoooY26DHHaC75x5y6z7B9CD84tXUTT", +"66z6z77zwtqVlTnVWY26.Hc#A3rXr02w5yz78zxv0qomRPhghhhPRUq1431sXonmlkkUpr14A#cIJJJJIIHDz3t1122u0ZXoVoWWpZvz#cHEB6w3w4x5yz7A8yvZWmll", +"zzz666652ZpmkTVpY0w7DHH#73ZXYrs01u22v21srXoUljPPPOhhilWZuutsrqXWVUUVpqZ1wzCbddddedGDA53vvv2u0ZqpWWWWWYu5Cba9630s0t1u23w4xv0Xnlkk", +"zz76y5xwtYVSjTVqsv58#HH#7wsqqqXXXqqqqqqXXXWVUlkQiPhgPkUXs000ssZrqpppppXqsvx7CDEFHHFDBzyxw3210ZYqXpWoVX04A#.z3spopXqYrs01u0qoTkRR", +"7776543uZpmRQlorux79EHHD7w0qXWnmTTlllTUnopWoVUmSjPhghQlVXrs0tuutsZrqpWVnWYsuwy79#aEDCBA6xwu10srYqXWonWZv69A40pTSTmUnVWpqYXomSRQQ", +"AAA6x320qVliPlW0wzB.aHGD741YWnSQPPOOhPjSUWpWpWoUSihNgPjTVXrt2ww32u1ZpVTRSmnoX0vyB.DDDD.864ut0ssZrqWVUVq147y1qTiPiQjRSlmUnUTkjQii", +"zzzywu0YWUkiPTptxA9.EFaCz41roTQhgNNMMNhQlopXqqqomjhNgPQSUpr1v5x432urWmjPPQjRlWZ2y89CD##B6wtsZZZrrXWVmVqtw6x0WSOhOPPiQjklTlkjQiPP", +"www2tZqWVmlkknXtwyz78997531roligNNMMLNhQlopXqYrXVTRPQkmVpYs1v43u0rqVljOghPijSnX0vx6z8BBz4uZqXpWooVVVnpZ258zvZVkjRkSlTmUnnUlkQPPP", +"000rqWVUmmmmUWY02w4x5yy4321ZoSPNMMLLLMgiSVpXYrZrXonTUVpYZ0tu2v1ZXVTRPhNNNhPiRmoqs1vw5664usXonmTSSTUVWY147.952rVUnVooWWpXpoUSjPPP", +"ppponmlSlmnoXYZ01u2u2u2u111ZokONLLLLLMgPSVpqrZ0sZrqXqrs1u2uuuuZpURPhgNMLMghPjSmVpYstvw4usqVmSRQPPRTVXs369a#85urYYrrrZZZZrXVTRPPP", +"TTTSkjQikmoYssss0ssrrYrrs01soRhLLLLLLLNPknpqZs111111u23w4w321tqURhNMLLLLLNgPQRSTUnpYs1usXVTRQOhNgPSVYuxA#HGDA52uu22222uutZWUkPPP", +"QQQiPPOOQTWZ1tsZrqqpWoWXr0utWkOMLLLLLLgPSoqZtu3ww4xx55yyyx3u0rokONLLffffLLNhPiQjRkmVqZsqoTRPhgNLMhkos3zCbdcF.A5555555x4wvtqVSiPP", +"PPPPOOhOQSUXrYqXpWppXXYs13x40WlPggNNNhjmp0246A999BB87654v1sYpoligLLffffffLLNghhOPiSUprsXnlQOgNMLMOlXu58#HddG#9z66zz77z6yxvZWTjii", +"hhOOhOhOiRlnooVnnnWpYrt2468A4tXmkRjQiRnYux7CEGdcHGF#9z4uZqWnTSihNLffffffffLLMNNNghjTWrsXUkPgNNMLMPUZ4A.aHedHaCAAA8BBB88A741qURjj", +"gghhhhhOPQjSlllllTVXZtv579##852ZXWonUoZv6CaceIJJIIdH#AwsWUlRiPhNLLfffffffffLLLLMMNPSor0XmRONNMLLMiVt6CEGdeeHFDBBBC.DD..C96vrVSRR", +"NNggghhOPPPPiQQjjknX0v5A.aHHaC742u0ZYsw7DHeJKKKKKJJeb8vqljPhgNMLLfffffffffffffLLLMhRVr0XTQhNMMLLNjW28EbcdIecGECC.#EaaaaE#840WTSS", +"NNNNghOPPPOOOPPiQknYuxA.Fceedb#Bzy4vu37DHIJKKKKKKKKJcB2oihgNLLLLffffffffffffffffLLhRVs1qmQgMMMLLNkqw.GHdeIedHaDD#abGGGbbF95tpmll", +"MMMNghPijRSlTmnVopsvyBDFHdeecFD86x310uyCHIJKKKKKKKKJcBuVPgNMLLLffffffffffffLLMNNhPSWs3xuYVkiOhgNhmZ5DHcdeIedGECC.#abFa#DC6vYnRQQ", +"LLLMNhiRTnpYs01u23yA.FHccdddG#97531ZqZw8FeJKKKKKKKKJcBuVPgNMLLfffffffffffLMgOiRlUWruxAB63tqomSjPjW16#HcdeIecbD88B.#a#.BA6vZVkOhh", +"LLLLNOQloY1wyz7A8C#bHdeeddcHa.8ywuZXVpu6#dJKKKKKKKKJH8uVPgNMLLfffffffffLLNPkUWqZtv5ACaFD86w1ZXnlmYv7EHdeIIecaCzzAB.#.86xvZoSPNNN", +"fffLNORUquy9abGHHdeIIJJIedHFDBzxv0qVlnsx.cIKKKKKKKKJH8uVPgNLLfffffffffLLNiTp0246ACEbHddcb#C7xurWptx8aHdeIIeHEByy6A9.B6w1rolPNLLL", +"fffLNPSW05CHeIIJJJJJKKKJIdG#9AywuroTjlq3BHIJKKKKKKKJH82oigNLLffffffffLLNPTXuy8.aHdeIIJJIIdcbC6vZZv69FHdeIIeH#A445zA9741YoligLfff", +"fffLgjVswAEdIIJJJJJKKKJJeHaCA6420YWUkmr38FeJKKKKKKKIGA2WQhgNMLLffffffLNhRoswA.FceIJJJJJJIIdH#7wssv6CbcdeIIeHD7w3wx56xuZpUkPgMLLL", +"fffMPmrwz.GdIIJJJJJJJJJIdb#BzxvtZqpVUoswAEdJKKKKKKJIbA2pRPPOhgNLLfffLNhjUqu59EHeIJJJJKKJJIIdEAwsZv6CbcdeIIeG.z3222vvuZXomkihNLLL", +"fffNjW2A.FceIIJJJJJJJJIdHaCA5w1ZYqXpWqt47.GIJKKKKKJeFAvXSRRjjQONLffLMhQTp0w7.bdIJKKKKKKJJJIda8wZZv6CGddeIIebC6v1t0sZYpoUTkQOgNNN", +"fffglZ6EGcdIIIJJJJJIIIdHFDB642sqpXqqYs2xz9adJKKKKJJeaAvqTlTmmmRONLfLgilWZvyBEHeJKKKKKKKKJJJebBwZrv6CGddeIIdF9y2tZYpoVUmTSkjPOhgg", +"ffLhnuCdeeIIIIJJJJIIedHFD975vtYWoXYZ0u3x6ADcIKKKKJIdEAvYUUoWXqnjhMLMOkVZuxA.bdIJKKKKKKKKKJJIGBwZrv6CGddeIIdF9y2sqWUSSSkkkkjQiPPP", +"LLLQX4EeIIIIIIeeddcHHbaD9A6xvtrpWqrstv4y79adJKKKKJId#Aw0pXr0uvZVkhNhjUXt3y8DbdIJKKKKKKKJJIIdE7vYq26CGddeeIdF96v0qoTRRkkSSSRjQiPP", +"NNhT0zGIIIIeedHFED...C987zy4v1ZqXYZ0tvxzB#GeJKKKKJeH#B52Z0246Ax0pSPRmpru4zB#bdeJJKJJJJIeddHaBxtpX1yCGddeeedFCzw1rWTjjkSlTTSRQiPP", +"iiRpv9cJIIeedb#B6x55yy6y55x4vusrYZs0t35ADbdIJKKKKJeH#9z4u36B#FC51XmVpZtvx79EbcdIIJIIedcGFEDBy2ZoWt5CGdddeedb.AxuZWTQjklmUmlkjiPP", +"mmn0y#eJJIedH#A41Zstu2333w4wvutsss0tt369aceJJKKKJIdG#CA64zCFdIH.6uYrs12wyACEbHddeIdcHFE.9875v0Xno05CGddddedbD8yvspTQQklUonTkjiPP", +"qqr3BGIJJIecFB40omnWXr0tu23wv21tttttt3z.GeIJKKKKJIdb#.987CbeJKIcD6vvvwwxz8.abHHcccGaD9A6543usqoTnsx9Gddddddb#9zw0pTiQkTVpomSjiPP", +"tt15CHIJJedG#72qmRlUVprs1v4x4321tt00026CHeJJJKKKJeH#CBA769beJKJd#62uuuu2468.EaFGHHa#C87yxwv1Zqomnrv7DbGHHHHbE.ByuYUjjlmopWnTSRjj", +"vvwz.HeJIdHaCy1XTjSTnWqs2467yxvut0sZrt59GeIJJKKJIdaB76x43z#dIKIHBwZYYYqY02x7B.#abHa#.9Azyx4vtrpnVqtwy89.#FFFaED840WSSTUopWVnUmTT", +"55y8#GdIdHFD840WSQRlmVXsvy89Ayw2tsrqXZw8FeIJJJKJeG.64321049HIJIaztWVnUmUWr1wyA9#FGaEDCBA7654u0qoopYstvxz8.#EFFb.62qmTUnoWpWWWWWW", +"AA8CEGddcFDB6vZokijkTUWsw7DE97x2tZYpoqv7adIIJJJId#AwutZYquzaeJdDxYTkRjiiSnqt35ACEbaa#DCB87zy31rpoooWWq0v5AC#FHdF84sonVVoWpXqrrrr", +"CC.#aGHcb#97xuqnRPQRSTos48FG#8yvtrXoUWu6EdIIIIJeG9y1ZYpVnZxDdJdB2oiPhgNNORUX03yB#baaE#D.98Az420YWnmlRlWZ2y8DbcecD6uXoWooWpYZt111", +"EEaFbHHHFDBz4urWlRSlmnp1y.HdF9y2sqomSmZx.ceeIIIdEAwsqWnTSp28beb71ViPhhggOjToY14zCE#E#DDC98Az42sqoUlkQSVr2yBEHeJebB40rrYYYrstu222", +"bbGGHccdG#9753trpVoWXqsw8adeG9y1YomRPRpu7FHHccdbC6vZXVmkQUZxCG.y1WSkRRjRkTUoXs2x7B9CCCCBAzyx20qonUmmTVYux8#GdIJJdE84vv22uuuuu111", +"HHHccdddHECAy4vu0Zss0t26DHIIHC5tpUkPgOmZx.aaFFFD852ZpnSQPkp1yC74tXnnnVVoVVVoWY0vx67A8BBAz54v0YWUTmUVoqt47DbdIJKJIcE87z66yxwvut00", +"ddddddedHFD86y5xw333ww5BbdJJc.xsVSPgMNjp2ACCCCC86w1rWmROgPmq25420rXqYZs0rqponpY02wxyzAAz5w2tYWUSSTnpYtwzCbdIJKKKJIcF##D.9Aywu0ZZ", +"eeeeeeeedb#B7777777z7zAEdIJJd.xrmjhMLLOUsxz7777y420YoligNgjUY11t0sstu34x20qomVpYs1v45z7yw2tZpnljjTortw69FdIJKKKKKJIddcHHbDAxuZrr", +"eeeeeIIedb#B77AA88A77zA#cIJJdC4qTQgMLLhTYw5555542trXnkPgMgPlors0t1u3x6A8yvsXnopqZs1vw5542trqoUlRknXt368#HdIJKKKKKKJIedddHaByvsZZ", +"ddddddedHa.Ayy555x4w3vwzDGeea7vqmRPgMNinZw5xxx4v1ZXVmRPhNhQTorstuv4yz8C.Ay31rZs0001u2vvu0ZqXWooVWYt3yACEHdIJKKKKKJIeddHHb#Bz42uu", +"HHHHcdddG#9zxw3vu1tsZrZv69Fb95uqnlQPgOkWsw5x4wwusqVmSjiOhPRmoYs13x6AB.#E.Bzx3322u111tt0ZYXWppqYZ024yACDFHdIJJKKKKJIdcHba#.B76x44", +"aaFbGHcHF.8y321srqXoVUVYuxABy30qVmSRiRUqtwx4w3vtrWmkjQQPPjSUoqs24z8C#abGFE.B7z543u10ZYqpWoVoqs13x67BC#abHdeIJKKKJIecGbEDC9B8A7zz", +"DD#EabHHaC7x2trXoUmSRQjmX034vtZqWVUmlmWr1wxw322sXVSiPiQQjkTnoqsvy8DabHcdcHGFE.8zxv1sYWVnUUmVY1479CD#aFbHHcdIJJKJJIdHFED988BB9999", +"AA89.#FFDB64usYWnTSQPOPknqt2utsZYqXXXqs13x5w3u1rWURPPijRSTmnoXsv69abHcddddcHGECA5vtZXnUTTTTVr2yCEaFbGHHHHHdeIJJJIecbE#CBA89.#EEE", +"vv3x6AC.97y4v10rXWnlRiiTWsvxxx44wwwwwwxyzA75w1sqWnljjRkSlTmnVWZv6CabGHHcHHGba.8642tZqWVnUUmVr2y9#abGHHHHHGHcdeeedHGE##D..DEFGHHH", +"qqYs24zA76543vu10sqVTkRnYu5AA89CCCC.....DD96wtrponmllllllTmUnor26CFbGGGGbFE#.Bz53utsrXpoVnUVr2y9#abHccHHGFbbbGGbFaED#EEaFGHcdddd", +"SSTVqtw555x444ww3vtqoTlW0w7.#aGHdddddddHHG#A40XooVnnUUmmTTmUUnY26CFbbFFaE#.CB754210sZrYXWonor25BDabHddHGbaEDD.CCCCCCDEbHcdeeIIII", +"hhOjmX0vww44x5yyz6w0qVUYuyCFHdIJJJJJKJJIedbBxsWnVoWWWVnUmTmmmUqu6CbbFa#D.98Azy4v1000sssYXWVor258.abcddHGa#.BAzy6z788.aHdeIIJJJJJ", +"LLMhjnruvwx56zA8996vspos37DHdIJKKKKKKKKJJIHCxZVUVWXYqponmTTTTTXt59FFEDCB876yxw210ss0011sYXWpsvyBDaGcddHF#C8z54v34yzA.aHeIJJJJKKK", +"LLMhkW0wxyzAB9..#DA41YXsvyBEHeJKKKKKKKKJIda8wZVnWXr0ZqonlSSkkkVrv6998765432100ZZYrZ0t1ut0sYZ258#FGHcdHaDBzyxw3v3xy78.aHdIIIJJJJJ", +"LLMOlX2y78C.#EaaFa9630Y02469adIJKKKKKKJIdb.6vrVVpr0u0YWUSRjjQQTW036yxw210ZqpWWWppXYstuv2uu12xADGHHHHHF.Ay3vvvvvw56AB.EbHdeeIIIII", +"LLMPmrw89DaFGHHHHGDAxustuvw6CGeJKKKKKJIdGDAxuYVoqsuwuZWmRQiPPPRUX0v210rqpVmlklTUnWqZt23wwww5ADbdedcHb#85vss01234yz89.EFGHcddeeee", +"LLMPn0y.EbHdddddddF96311111wAadJJJJJJJeH#8y3tqVWrt3530pTQPPhhgPknpZYXWnmlRPOhPQkTVprtv4x5y6A.bdIIedGa96vsppYsu3x67BC.#EFbGHHcddd", +"LLMPV17aGcdeIIIIedGDAx2110Z1yDcJJJJJJIda96wusqVWZu4z4tpTiOhggNhiSUWVUTkjPhNMMNhikUWrtvxyzA8.FdIJJIdG#A4tXmUpr13x67BC.##EEaFbGHHH", +"LLMPV17aGcdeIIIIedGDAx21tsrt5.HIJJJJJIcEBy31ZXVWZu4z4tplPhhgNNhPkmonmlRQPhNMLNhPRmoYtvxyzA8.FdIJJIdbD7w0pTmWYt3x67BC.DD##EaFbGGG", +"LLMPV17aGcdeIIIIedGDAx21tsrt5.HIJJJJJIcEBy31ZXVWZu4z4tplPhhgNNhPkmonmlRQPhNMLNhPRmoYtvxyzA8.FdIJJIdbD7w0pTmWYt3x67BC.DD##EaFbGGG" +}; diff --git a/hacks/jigsaw.c b/hacks/jigsaw.c index 246c9da7..afeefc86 100644 --- a/hacks/jigsaw.c +++ b/hacks/jigsaw.c @@ -537,6 +537,9 @@ char *defaults [] = { ".foreground: Gray40", "*delay: 70000", "*delay2: 5", +#ifdef __sgi /* really, HAVE_READ_DISPLAY_EXTENSION */ + "*visualID: Best", +#endif 0 }; diff --git a/hacks/jigsaw.man b/hacks/jigsaw.man index ae9f7a0e..36b28e41 100644 --- a/hacks/jigsaw.man +++ b/hacks/jigsaw.man @@ -3,10 +3,20 @@ jigsaw - permute the screen image like a jigsaw puzzle .SH SYNOPSIS .B jigsaw -[\-display \fIhost:display.screen\fP] [\-background \fIcolor\fP] [\-delay \fIusecs\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP] +[\-display \fIhost:display.screen\fP] [\-background \fIcolor\fP] +[\-delay \fIusecs\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP] .SH DESCRIPTION -The \fIjigsaw\fP program takes an image of the screen, carves it up into +The \fIjigsaw\fP program takes an image, carves it up into a jigsaw puzzle, shuffles it, and then solves it. + +The image that it manipulates will be grabbed from the portion of +the screen underlying the window, or from the system's video input, +or from a random file on disk, as indicated by +the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, +and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP +file; see +.BR xscreensaver-demo (1) +for more details. .SH OPTIONS .I jigsaw accepts the following options: @@ -26,30 +36,6 @@ or the id number (decimal or hex) of a specific visual. .TP 8 .B \-delay \fImicroseconds\fP How long to wait between shuffling pieces; default 700000, or 0.7 seconds. -.SH RESOURCES -On some systems (currently, only SGIs), this program can, instead of grabbing -a desktop image, grab a frame of video from an external camera and manipulate -that instead. The following resources control that. -.PP -.TP 8 -.B grabVideoProbability \fR(Float)\fP -What portion of the time to grab video rather than a screen image, -between 0.0 and 1.0. Defaults to 0.5, or half the time. -.TP 8 -.B videoDevice \fR(Integer)\fP -The number of the default video input device to check first. If unspecified, -the default camera (from videopanel(1)) will be checked first. After that, all -other available video input devices will be checked in order. - -The first one which produces a non-black image will be used. If all images -are black, the others will be re-checked a few times before giving up and -falling back to simply grabbing a desktop image (but note that this takes a -few seconds, so if you don't actually have any video sources hooked up, you -should consider turning off video grabbing by setting -\fBgrabVideoProbability\fP to 0.0.) -.TP 8 -.B videoGain \fR(Float)\fP -The amount by which to brighten the grabbed image. This defaults to 2.2. .SH ENVIRONMENT .PP .TP 8 @@ -61,7 +47,9 @@ to get the name of a resource file that overrides the global resources stored in the RESOURCE_MANAGER property. .SH SEE ALSO .BR X (1), -.BR xscreensaver (1) +.BR xscreensaver (1), +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) .SH COPYRIGHT Copyright \(co 1997 by Jamie Zawinski. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is diff --git a/hacks/maze.c b/hacks/maze.c index 10a46f73..7c692204 100644 --- a/hacks/maze.c +++ b/hacks/maze.c @@ -1695,7 +1695,7 @@ screenhack(Display *display, Window window) unsigned long *pixels; /* ignored - unfreed */ int npixels; logo_map = xscreensaver_logo (dpy, win, xgwa.colormap, bg, - &pixels, &npixels, + &pixels, &npixels, 0, logo_width > 150); } #else diff --git a/hacks/rotzoomer.man b/hacks/rotzoomer.man index 03a02453..27dde18c 100644 --- a/hacks/rotzoomer.man +++ b/hacks/rotzoomer.man @@ -10,9 +10,18 @@ rotzoomer - animated rotations and scalings of portions of the screen [\-shm | \-no\-shm] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP] .SH DESCRIPTION -The \fIrotzoomer\fP program grabs an image of the screen, then picks -rectangles and draws scaled and rotated animations of that part of -the screen. +The \fIrotzoomer\fP program grabs an image, then picks +rectangles and draws scaled and rotated animations of that +section. + +The image that it manipulates will be grabbed from the portion of +the screen underlying the window, or from the system's video input, +or from a random file on disk, as indicated by +the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, +and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP +file; see +.BR xscreensaver-demo (1) +for more details. .SH OPTIONS .I rotzoomer accepts the following options: @@ -56,7 +65,9 @@ to get the name of a resource file that overrides the global resources stored in the RESOURCE_MANAGER property. .SH SEE ALSO .BR X (1), -.BR xscreensaver (1) +.BR xscreensaver (1), +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) .SH COPYRIGHT Copyright \(co 2001 by Claudio Matsuoka. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is diff --git a/hacks/screenhack.c b/hacks/screenhack.c index be5c19be..e2becbe4 100644 --- a/hacks/screenhack.c +++ b/hacks/screenhack.c @@ -86,6 +86,7 @@ static char *default_defaults[] = { "*mono: false", "*installColormap: false", "*visualID: default", + "*desktopGrabber: xscreensaver-getimage %s", 0 }; diff --git a/hacks/slidescreen.c b/hacks/slidescreen.c index c2fc0332..69f67df6 100644 --- a/hacks/slidescreen.c +++ b/hacks/slidescreen.c @@ -37,8 +37,6 @@ init_slide (Display *dpy, Window window) XGetWindowAttributes (dpy, window, &xgwa); grab_screen_image (xgwa.screen, window); - - XGetWindowAttributes (dpy, window, &xgwa); /* re-retrieve colormap */ cmap = xgwa.colormap; visual = xgwa.visual; max_width = xgwa.width; diff --git a/hacks/slidescreen.man b/hacks/slidescreen.man index a3e9d902..67520d2f 100644 --- a/hacks/slidescreen.man +++ b/hacks/slidescreen.man @@ -3,11 +3,23 @@ slidescreen - permute the screen image like an 8-puzzle .SH SYNOPSIS .B slidescreen -[\-display \fIhost:display.screen\fP] [\-background \fIcolor\fP] [\-grid-size \fIpixels\fP] [\-ibw \fIpixels\fP] [\-increment \fIpixels\fP] [\-delay \fIusecs\fP] [\-delay2 \fIusecs\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP] +[\-display \fIhost:display.screen\fP] [\-background \fIcolor\fP] +[\-grid-size \fIpixels\fP] [\-ibw \fIpixels\fP] [\-increment \fIpixels\fP] +[\-delay \fIusecs\fP] [\-delay2 \fIusecs\fP] +[\-window] [\-root] [\-install] [\-visual \fIvisual\fP] .SH DESCRIPTION -The \fIslidescreen\fP program takes an image of the screen, divides it into +The \fIslidescreen\fP program takes an image, divides it into a grid, deletes a random square of that grid, and then randomly slides one of the neighbors of this "hole" into the hole (and repeat.) + +The image that it manipulates will be grabbed from the portion of +the screen underlying the window, or from the system's video input, +or from a random file on disk, as indicated by +the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, +and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP +file; see +.BR xscreensaver-demo (1) +for more details. .SH OPTIONS .I slidescreen accepts the following options: @@ -44,30 +56,6 @@ is closely related to the \fI\-increment\fP parameter. How much of a delay should be introduced between the end of the motion of one segment and the beginning of the motion of another. Default 1000000, which is one second. -.SH RESOURCES -On some systems (currently, only SGIs), this program can, instead of grabbing -a desktop image, grab a frame of video from an external camera and manipulate -that instead. The following resources control that. -.PP -.TP 8 -.B grabVideoProbability \fR(Float)\fP -What portion of the time to grab video rather than a screen image, -between 0.0 and 1.0. Defaults to 0.5, or half the time. -.TP 8 -.B videoDevice \fR(Integer)\fP -The number of the default video input device to check first. If unspecified, -the default camera (from videopanel(1)) will be checked first. After that, all -other available video input devices will be checked in order. - -The first one which produces a non-black image will be used. If all images -are black, the others will be re-checked a few times before giving up and -falling back to simply grabbing a desktop image (but note that this takes a -few seconds, so if you don't actually have any video sources hooked up, you -should consider turning off video grabbing by setting -\fBgrabVideoProbability\fP to 0.0.) -.TP 8 -.B videoGain \fR(Float)\fP -The amount by which to brighten the grabbed image. This defaults to 2.2. .SH ENVIRONMENT .PP .TP 8 @@ -79,7 +67,9 @@ to get the name of a resource file that overrides the global resources stored in the RESOURCE_MANAGER property. .SH SEE ALSO .BR X (1), -.BR xscreensaver (1) +.BR xscreensaver (1), +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) .SH COPYRIGHT Copyright \(co 1992 by Jamie Zawinski. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is diff --git a/hacks/slip.man b/hacks/slip.man index d513654c..25a55257 100644 --- a/hacks/slip.man +++ b/hacks/slip.man @@ -3,9 +3,22 @@ slip - sucks your screen into a jet engine .SH SYNOPSIS .B slip -[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-iterations \fIinteger\fP] [\-points \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-delay2 \fImicroseconds\fP] +[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] +[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] +[\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] +[\-iterations \fIinteger\fP] [\-points \fIinteger\fP] +[\-delay \fImicroseconds\fP] [\-delay2 \fImicroseconds\fP] .SH DESCRIPTION -The \fIslip\fP program does lots of blits and chews up your screen image. +The \fIslip\fP program does lots of blits and chews up an image. + +The image that it manipulates will be grabbed from the portion of +the screen underlying the window, or from the system's video input, +or from a random file on disk, as indicated by +the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, +and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP +file; see +.BR xscreensaver-demo (1) +for more details. .SH OPTIONS .I slip accepts the following options: @@ -40,31 +53,6 @@ How long to frobnicate. Default 50. .B \-delay \fImicroseconds\fP How long we should wait between drawing each step. Default 50000, or about 1/20th second. - -.SH RESOURCES -On some systems (currently, only SGIs), this program can, instead of grabbing -a desktop image, grab a frame of video from an external camera and manipulate -that instead. The following resources control that. -.PP -.TP 8 -.B grabVideoProbability \fR(Float)\fP -What portion of the time to grab video rather than a screen image, -between 0.0 and 1.0. Defaults to 0.5, or half the time. -.TP 8 -.B videoDevice \fR(Integer)\fP -The number of the default video input device to check first. If unspecified, -the default camera (from videopanel(1)) will be checked first. After that, all -other available video input devices will be checked in order. - -The first one which produces a non-black image will be used. If all images -are black, the others will be re-checked a few times before giving up and -falling back to simply grabbing a desktop image (but note that this takes a -few seconds, so if you don't actually have any video sources hooked up, you -should consider turning off video grabbing by setting -\fBgrabVideoProbability\fP to 0.0.) -.TP 8 -.B videoGain \fR(Float)\fP -The amount by which to brighten the grabbed image. This defaults to 2.2. .SH ENVIRONMENT .PP .TP 8 @@ -77,7 +65,8 @@ stored in the RESOURCE_MANAGER property. .SH SEE ALSO .BR X (1), .BR xscreensaver (1), -.BR xlock (1) +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) .SH COPYRIGHT Copyright \(co 1992 by Scott Draves. diff --git a/hacks/spotlight.man b/hacks/spotlight.man index 31e9f71b..0af60b7b 100644 --- a/hacks/spotlight.man +++ b/hacks/spotlight.man @@ -3,9 +3,21 @@ spotlight - move spotlight around desktop .SH SYNOPSIS .B spotlight -[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-radius \fIpixels\fP] +[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] +[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] +[\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-radius \fIpixels\fP] .SH DESCRIPTION -The \fIspotlight\fP program draws random rectangles. +The \fIspotlight\fP program takes an image and exposes small sections +of it as if through a wandering spotlight beam. + +The image that it manipulates will be grabbed from the portion of +the screen underlying the window, or from the system's video input, +or from a random file on disk, as indicated by +the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, +and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP +file; see +.BR xscreensaver-demo (1) +for more details. .SH OPTIONS .I spotlight accepts the following options: @@ -42,7 +54,9 @@ to get the name of a resource file that overrides the global resources stored in the RESOURCE_MANAGER property. .SH SEE ALSO .BR X (1), -.BR xscreensaver (1) +.BR xscreensaver (1), +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) .SH COPYRIGHT Copyright \(co 1999 by Rick Schultz. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is @@ -54,4 +68,3 @@ express or implied warranty. .SH CREDITS Hacked together by Rick Schultz , based on StefView for BackSpace by Darcy Brockbank and on several other xscreensaver hacks. - diff --git a/hacks/vidwhacker b/hacks/vidwhacker index 5d9fe9cd..5dc85b67 100755 --- a/hacks/vidwhacker +++ b/hacks/vidwhacker @@ -1,6 +1,5 @@ -#!/bin/sh -# -# vidwhacker, for xscreensaver. Copyright (c) 1998, 1999 Jamie Zawinski. +#!/usr/bin/perl -w +# vidwhacker, for xscreensaver. Copyright (c) 1998-2001 Jamie Zawinski. # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that @@ -10,436 +9,446 @@ # software for any purpose. It is provided "as is" without express or # implied warranty. # -# -# This script grabs a frame of video, then uses various pbm filters to +# This program grabs a frame of video, then uses various pbm filters to # munge the image in random nefarious ways, then uses xloadimage, xli, or xv # to put it on the root window. This works out really nicely if you just # feed some random TV station into it... # -# The video grabbing part is SGI-specific -- if you want to use this on -# another system, add a new clause to the grab() procedure. - - -# need perl to generate random numbers -- I don't know another way to do -# that from a shell script. -perl=perl - - -onroot=false -verbose=false -delay=3 -use_stdin=false -use_stdout=false - -pid="" -tmp=${TMPDIR:-/tmp}/vidwhacker.$$ -tmp_rgb=$tmp-00000.rgb -tmp_ppm0=$tmp-0.ppm -tmp_ppm1=$tmp-1.ppm -tmp_ppm2=$tmp-2.ppm -tmp_ppm3=$tmp-3.ppm -tmp_ppm4=$tmp-4.ppm -tmp_ppmS=$tmp-S.ppm - - -# Figure out whether to use xloadimage, xli, or xv. -pick_displayer() { - displayer= - for prog in xloadimage xli xv ; do - IFS=: - for p in $PATH; do - IFS= - if [ "$p" = "" ]; then p=. ; fi - if [ -x $p/$prog ]; then - displayer=$prog - break 2 - fi - done - done - - if [ "$displayer" = "xloadimage" ]; then - displayer_args="-quiet" - displayer_win_args="" - displayer_root_args="-onroot" - elif [ "$displayer" = "xli" ]; then - displayer_args="-quiet" - displayer_win_args="" - displayer_root_args="-onroot -center -border black" - elif [ "$displayer" = "xv" ]; then - displayer_args="-quick24" - displayer_win_args="-geom +0+0" - displayer_root_args="-root -rmode 5 -noresetroot -rfg black -rbg black -viewonly" - else - echo "$0: neither xli nor xv found on \$PATH" - exit -1 - fi -} +# Created: 14-Apr-01. -# Process command-line args -getargs() { - - while [ $# != 0 ]; do - case "$1" in - -display | -disp | -dis | -dpy | -d ) - shift - DISPLAY="$1" - export DISPLAY - ;; - -root ) - onroot=true - ;; - -window ) - onroot=false - ;; - -verbose ) - verbose=true - ;; - -stdin ) - use_stdin=true - ;; - -stdout ) - use_stdout=true - ;; - -delay) - shift - delay="$1" - ;; - * ) - echo "VidWhacker, Copyright (c) 1999 Jamie Zawinski " >&2 - echo " http://www.jwz.org/xscreensaver/" >&2 - echo "" >&2 - echo "usage: $0 [-display dpy] [-verbose] [-root | -window]" >&2 - echo " [-stdin] [-stdout] [-delay secs]" >&2 - exit 1 - ;; - esac - shift - done - - pick_displayer - - if [ "$onroot" = true ]; then - displayer_args="$displayer_args $displayer_root_args" - else - displayer_args="$displayer_args $displayer_win_args" - fi - - - screen_width='' - if [ "$use_stdout" = false ]; then - screen_width=`xdpyinfo 2>/dev/null | - sed -n 's/.* dimensions: *\([0-9]*\).*/\1/p'` - if [ "$screen_width" = "" ]; then - screen_width=800 - fi - fi -} +require 5; +use diagnostics; +use strict; +my $progname = $0; $progname =~ s@.*/@@g; +my $version = q{ $Revision: 1.17 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/; -clean() { - rm -f $tmp_rgb $tmp_ppm1 $tmp_ppm2 $tmp_ppm3 $tmp_ppm4 -} +my $verbose = 0; +my $use_stdin = 0; +my $use_stdout = 0; +my $video_p = 0; +my $file_p = 1; +my $delay = 5; +my $imagedir; -clean2() { - clean - rm -f $tmp_ppm0 $tmp_ppmS -} +my $screen_width = -1; -# Grab a frame of video. leaves it in $tmp_ppm1. + +# #### This list was lifted from driver/xscreensaver-getimage-file # -grab() { - uname=`uname` - if [ $uname = IRIX ]; then - # - # SGI's "vidtomem" returns an SGI RGB image of the default video input, - # and has stupid non-overridable ouput-file-naming conventions. So, let - # it write its file; and then convert it to a pgm. - # - - vidtomem -f $tmp - sgitopnm $tmp_rgb > $tmp_ppm1 - - # Cut off the close-captioning blips in the NTSC overscan region. YMMV. - # | pnmcut 12 7 695 477 - - elif [ $uname = Linux ]; then - - # Marcus Herbert says the following works with his Connectix Qcam. - # Don't have qcam? Well, do something else then... and send me a patch. - - qcam > $tmp_ppm1 - - # Friedrich Delgado Friedrichs says the following works if you have - # XawTV installed: - # - # streamer -o $tmp_ppm1 - # - - # James Isaacs says this works for the ATI video capture card: - # - # atitv snap $tmp_ppm1 - # - - else - echo "$0: don't know how to grab video on this OS." >&2 - clean2 - exit 1 - fi -} +# These are programs that can be used to put an image file on the root +# window (including virtual root windows.) The first one of these programs +# that exists on $PATH will be used (with the file name as the last arg.) +# +# If you add other programs to this list, please let me know! +# +my @displayer_programs = ( + "xv -root -quit -viewonly -maxpect -noresetroot -quick24 -rmode 5" . + " -rfg black -rbg black", + "xli -quiet -fullscreen -onroot -center -border black", + "xloadimage -quiet -fullscreen -onroot -center -border black", + "chbg -once -xscreensaver -max_grow 4", + +# this lame program wasn't built with vroot.h: +# "xsri -scale -keep-aspect -center-horizontal -center-vertical", +); -# Use perl to pick a random foreground/background color in pbm's syntax. +# List of interesting PPM filter pipelines. +# In this list, the following magic words may be used: # -randcolor() { - $perl -e 'srand(time ^ $$); - printf("#%02x%02x%02x-#%02x%02x%02x", - int(rand()*60), - int(rand()*60), - int(rand()*60), - 120+int(rand()*135), - 120+int(rand()*135), - 120+int(rand()*135))' -} +# COLORS a randomly-selected pair of RGB foreground/background colors. +# FILE1 the (already-existing) input PPM file (ok to overwrite it). +# FILE2-FILE4 names of other tmp files you can use. +# +# These commands should read from FILE1, and write to stdout. +# All tmp files will be deleted afterward. +# +my @filters = ( + "ppmtopgm FILE1 | pgmedge | pgmtoppm COLORS | ppmnorm", + "ppmtopgm FILE1 | pgmenhance | pgmtoppm COLORS", + "ppmtopgm FILE1 | pgmoil | pgmtoppm COLORS", + "ppmtopgm FILE1 | pgmbentley | pgmtoppm COLORS", -rand() { - $perl -e "srand(time ^ $$); print int(rand() * $1)" -} + "ppmrelief FILE1 | ppmtopgm | pgmedge | ppmrelief | ppmtopgm |" . + " pgmedge | pnminvert | pgmtoppm COLORS", + "ppmspread 71 FILE1 > FILE2 ; " . + " pnmarith -add FILE1 FILE2 ; ", + "pnmflip -lr < FILE1 > FILE2 ; " . + " pnmarith -multiply FILE1 FILE2 > FILE3 ; " . + " pnmflip -tb FILE3 | ppmnorm > FILE2 ; " . + " pnmarith -multiply FILE1 FILE2", -# Frobnicate the image in some random way. + "pnmflip -lr FILE1 > FILE2 ; " . + " pnmarith -difference FILE1 FILE2", + + "pnmflip -tb FILE1 > FILE2 ; " . + " pnmarith -difference FILE1 FILE2", + + "pnmflip -lr FILE1 | pnmflip -tb > FILE2 ; " . + " pnmarith -difference FILE1 FILE2", + + "ppmtopgm < FILE1 | pgmedge > FILE2 ; " . + " pnmarith -difference FILE1 FILE2 > FILE3 ; " . + " cp FILE3 FILE1 ; " . + " ppmtopgm < FILE1 | pgmedge > FILE2 ; " . + " pnmarith -difference FILE1 FILE2 > FILE3 ; " . + " ppmnorm < FILE1", + + "pnmflip -lr < FILE1 > FILE2 ; " . + " pnmarith -multiply FILE1 FILE2 | ppmrelief | ppmnorm | pnminvert", + + "pnmflip -lr FILE1 > FILE2 ; " . + " pnmarith -subtract FILE1 FILE2 | ppmrelief | ppmtopgm | pgmedge", + + "pgmcrater -number 20000 -width WIDTH -height HEIGHT FILE1 | " . + " pgmtoppm COLORS > FILE2 ; " . + " pnmarith -difference FILE1 FILE2 > FILE3 ; " . + " pnmflip -tb FILE3 | ppmnorm > FILE2 ; " . + " pnmarith -multiply FILE1 FILE2", + + "ppmshift 30 FILE1 | ppmtopgm | pgmoil | pgmedge | " . + " pgmtoppm COLORS > FILE2 ; " . + " pnmarith -difference FILE1 FILE2", + + "ppmpat -madras WIDTH HEIGHT | pnmdepth 255 > FILE2 ; " . + " pnmarith -difference FILE1 FILE2", + + "ppmpat -tartan WIDTH HEIGHT | pnmdepth 255 > FILE2 ; " . + " pnmarith -difference FILE1 FILE2", + + "ppmpat -camo WIDTH HEIGHT | pnmdepth 255 | ppmshift 50 > FILE2 ; " . + " pnmarith -multiply FILE1 FILE2", + + "pgmnoise WIDTH HEIGHT | pgmedge | pgmtoppm COLORS > FILE2 ; " . + " pnmarith -difference FILE1 FILE2 | pnmdepth 255 | pnmsmooth", +); + + +sub error { + ($_) = @_; + print STDERR "$progname: $_\n"; + exit 1; +} + +# #### Lifted from driver/xscreensaver-getimage-file # -frob() { - - w_h=`head -2 $tmp_ppm1 | tail -1` - width=`echo $w_h | awk '{print $1}'` - height=`echo $w_h | awk '{print $2}'` - - N=`rand 17` - - if [ "$verbose" = true ]; then - echo "mode $N..." >&2 - fi - - if [ $N = 0 ]; then - ppmtopgm $tmp_ppm1 | pgmedge | pgmtoppm `randcolor` | ppmnorm - - elif [ $N = 1 ]; then - ppmtopgm $tmp_ppm1 | - pgmenhance | - pgmtoppm `randcolor` - - elif [ $N = 2 ]; then - ppmtopgm $tmp_ppm1 | pgmoil | pgmtoppm `randcolor` - - elif [ $N = 3 ]; then - ppmrelief $tmp_ppm1 | ppmtopgm | pgmedge | ppmrelief | ppmtopgm | - pgmedge | pnminvert | pgmtoppm `randcolor` - - elif [ $N = 4 ]; then - ppmspread 71 $tmp_ppm1 > $tmp_ppm2 - pnmarith -add $tmp_ppm1 $tmp_ppm2 - - elif [ $N = 5 ]; then - pnmflip -lr $tmp_ppm1 > $tmp_ppm2 - pnmarith -multiply $tmp_ppm1 $tmp_ppm2 > $tmp_ppm3 - pnmflip -tb $tmp_ppm3 | ppmnorm > $tmp_ppm2 - pnmarith -multiply $tmp_ppm1 $tmp_ppm2 - - elif [ $N = 6 ]; then - N2=`rand 3` - if [ $N2 = 0 ]; then - pnmflip -lr $tmp_ppm1 > $tmp_ppm2 - elif [ $N2 = 1 ]; then - pnmflip -tb $tmp_ppm1 > $tmp_ppm2 - else - pnmflip -lr $tmp_ppm1 > $tmp_ppm2 - pnmflip -tb $tmp_ppm2 > $tmp_ppm3 - cp $tmp_ppm3 $tmp_ppm2 - fi - - pnmarith -difference $tmp_ppm1 $tmp_ppm2 - - elif [ $N = 7 ]; then - - for i in 1 2 3 ; do - ppmtopgm $tmp_ppm1 | pgmedge > $tmp_ppm2 - pnmarith -difference $tmp_ppm1 $tmp_ppm2 > $tmp_ppm3 - cp $tmp_ppm3 $tmp_ppm1 - done - ppmnorm < $tmp_ppm1 - - elif [ $N = 8 ]; then - pnmflip -lr $tmp_ppm1 > $tmp_ppm2 - pnmarith -multiply $tmp_ppm1 $tmp_ppm2 | ppmrelief | ppmnorm | pnminvert - - elif [ $N = 9 ]; then - pnmflip -lr $tmp_ppm1 > $tmp_ppm2 - pnmarith -subtract $tmp_ppm1 $tmp_ppm2 | ppmrelief | ppmtopgm | pgmedge - - elif [ $N = 10 ]; then - ppmtopgm $tmp_ppm1 | pgmbentley | pgmtoppm `randcolor` - - elif [ $N = 11 ]; then - pgmcrater -number 20000 -height $height -width $width | pgmtoppm `randcolor` > $tmp_ppm2 - pnmarith -difference $tmp_ppm1 $tmp_ppm2 > $tmp_ppm3 - pnmflip -tb $tmp_ppm3 | ppmnorm > $tmp_ppm2 - pnmarith -multiply $tmp_ppm1 $tmp_ppm2 - - elif [ $N = 12 ]; then - ppmshift 30 $tmp_ppm1 | ppmtopgm | pgmoil | pgmedge | pgmtoppm `randcolor` > $tmp_ppm2 - pnmarith -difference $tmp_ppm1 $tmp_ppm2 - - elif [ $N = 13 ]; then - ppmpat -madras $width $height | pnmdepth 255 > $tmp_ppm2 - pnmarith -difference $tmp_ppm1 $tmp_ppm2 - - elif [ $N = 14 ]; then - ppmpat -tartan $width $height | pnmdepth 255 > $tmp_ppm2 - pnmarith -difference $tmp_ppm1 $tmp_ppm2 - - elif [ $N = 15 ]; then - ppmpat -camo $width $height | pnmdepth 255 | ppmshift 50 > $tmp_ppm2 - pnmarith -multiply $tmp_ppm1 $tmp_ppm2 - - elif [ $N = 16 ]; then - pgmnoise $width $height | pgmedge | pgmtoppm `randcolor` > $tmp_ppm2 - pnmarith -difference $tmp_ppm1 $tmp_ppm2 | pnmdepth 255 | pnmsmooth - - else cat $tmp_ppm1 - fi +sub pick_displayer { + my @names = (); + + foreach my $cmd (@displayer_programs) { + $_ = $cmd; + my ($name) = m/^([^ ]+)/; + push @names, "\"$name\""; + print STDERR "$progname: looking for $name...\n" if ($verbose > 2); + foreach my $dir (split (/:/, $ENV{PATH})) { + print STDERR "$progname: checking $dir/$name\n" if ($verbose > 3); + return $cmd if (-x "$dir/$name"); + } + } + + $names[$#names] = "or " . $names[$#names]; + printf STDERR "$progname: none of: " . join (", ", @names) . + " were found on \$PATH.\n"; + exit 1; } -# Grab a frame and frob it. leave it in $tmp_ppm3. +# Choose random foreground and background colors # -whack() { - clean - - while [ ! -f $tmp_ppm1 ]; do - if [ "$use_stdin" != true ]; then - grab - else - cp $tmp_ppmS $tmp_ppm0 - cp $tmp_ppm0 $tmp_ppm1 - fi - done - - rm -f $tmp_rgb - - if [ "$screen_width" != "" ]; then - frob | pnmscale -width $screen_width > $tmp_ppm3 - else - frob > $tmp_ppm3 - fi - - rm -f $tmp_ppm1 $tmp_ppm2 +sub randcolors { + return sprintf ("#%02x%02x%02x-#%02x%02x%02x", + int(rand()*60), + int(rand()*60), + int(rand()*60), + 120+int(rand()*135), + 120+int(rand()*135), + 120+int(rand()*135)); } -# Kill off the xli or xv subprocess, if it's running +sub filter_subst { + my ($filter, $width, $height, @tmpfiles) = @_; + my $colors = randcolors(); + $filter =~ s/\bWIDTH\b/$width/g; + $filter =~ s/\bHEIGHT\b/$height/g; + $filter =~ s/\bCOLORS\b/'$colors'/g; + my $i = 1; + foreach my $t (@tmpfiles) { + $filter =~ s/\bFILE$i\b/$t/g; + $i++; + } + if ($filter =~ m/([A-Z]+)/) { + error "internal error: what is \"$1\"?"; + } + $filter =~ s/ +/ /g; + return $filter; +} + +# Frobnicate the image in some random way. # -kill_pid() { - if [ "$pid" != "" ]; then +sub frob_ppm { + my ($ppm_data) = @_; + $_ = $ppm_data; + + error "0-length data" if (!defined($ppm_data) || $ppm_data eq ""); + error "not a PPM file" unless (m/^P\d\n/s); + my ($width, $height) = m/^P\d\n(\d+) (\d+)\n/s; + error "got a bogus PPM" unless ($width && $height); + + my $tmpdir = $ENV{TMPDIR}; + $tmpdir = "/tmp" unless $tmpdir; + my $fn = sprintf("$tmpdir/vw.%04x", $$); + my @files = ( "$fn", "$fn.1", "$fn.2", "$fn.3" ); + + my $n = int(rand($#filters+1)); + my $filter = $filters[$n]; + + if ($verbose == 1) { + printf STDERR "$progname: running filter $n\n"; + } elsif ($verbose > 1) { + my $f = $filter; + $f =~ s/ +/ /g; + $f =~ s/^ */\t/; + $f =~ s/ *\|/\n\t|/g; + $f =~ s/ *\; */ ;\n\t/g; + print STDERR "$progname: filter $n:\n\n$f\n\n" if $verbose; + } + + $filter = filter_subst ($filter, $width, $height, @files); + + unlink @files; + + local *OUT; + open (OUT, ">$files[0]") || error ("writing $files[0]: $!"); + print OUT $ppm_data; + close OUT; + + $filter = "( $filter )"; + $filter .= "2>/dev/null" unless ($verbose > 1); + + local *IN; + open (IN, "$filter |") || error ("opening pipe: $!"); + $ppm_data = ""; + while () { $ppm_data .= $_; } + close IN; + + unlink @files; + return $ppm_data; +} - if [ "$verbose" = true ]; then - echo "killing pid $pid..." >&2 - fi - # need to do this to avoid "6898 Terminated" messages! - # apparently one can't redirect the output of the builtin `kill' command. -# ( sh -c "kill $pid" ) >/dev/null 2>/dev/null /dev/null 2>&1 + my $had_dir = defined($imagedir); - pid="" - fi -} + local *IN; + open (IN, "<$conf") || error "reading $conf: $!"; + while () { + if (!$imagedir && m/^imageDirectory:\s+([^\s]+)\s*$/i) { $imagedir = $1; } + elsif (m/^grabVideoFrames:\s+true\s*$/i) { $video_p = 1; } + elsif (m/^grabVideoFrames:\s+false\s*$/i) { $video_p = 0; } + elsif (m/^chooseRandomImages:\s+true\s*$/i) { $file_p = 1; } + elsif (m/^chooseRandomImages:\s+false\s*$/i) { $file_p = 0; } + } + close IN; -# called when this process is signalled (for cleanup) -# -my_trap() { - if [ "$verbose" = true ]; then - echo "trapped signal!" >&2 - fi - kill_pid - clean2 - exit 1 -} + $file_p = 1 if $had_dir; -main() { - getargs $@ + if (!$file_p && !$video_p) { +# error "neither grabVideoFrames nor chooseRandomImages are set\n\t" . +# "in $conf; $progname requires one or both." + $file_p = 1; + } - trap my_trap 1 2 3 6 9 13 15 + if ($file_p) { + error "no imageDirectory set in $conf" unless $imagedir; + error "imageDirectory $imagedir doesn't exist" unless (-d $imagedir); + } - if [ "$use_stdin" = true ]; then - cat > $tmp_ppmS - fi + if ($verbose > 1) { + printf STDERR "$progname: grab video: $video_p\n"; + printf STDERR "$progname: grab images: $file_p\n"; + printf STDERR "$progname: directory: $imagedir\n"; + } - while true; do +} - # Loop grabbing and frobbing images. - # - # If we're running on the root, run xv or xli in the foreground - # (with -exit, if xv) and then wait. - # - # If we're running in a window, spawn xv or xli in the background; then - # when it's time to put up the new image, kill off the currently-running - # xv or xli. - if [ "$verbose" = true ]; then - whack - else - whack >/dev/null 2>&1 - fi +sub get_ppm { + if ($use_stdin) { + print STDERR "$progname: reading from stdin\n" if ($verbose > 1); + my $ppm = ""; + while () { $ppm .= $_; } + return $ppm; + + } else { + + my $do_file_p; + + if ($file_p && $video_p) { + $do_file_p = (int(rand(2)) == 0); + print STDERR "$progname: doing " . ($do_file_p ? "files" : "video") ."\n" + if ($verbose); + } + elsif ($file_p) { $do_file_p = 1; } + elsif ($video_p) { $do_file_p = 0; } + else { + error "internal error: not grabbing files or video?"; + } + + my $v = ($verbose <= 1 ? "" : "-" . ("v" x ($verbose-1))); + my $cmd; + if ($do_file_p) { + $cmd = "xscreensaver-getimage-file $v --name $imagedir"; + } else { + $cmd = "xscreensaver-getimage-video $v --stdout"; + } + + my $ppm; + + if ($do_file_p) { + + print STDERR "$progname: running \"$cmd\"\n" if ($verbose > 1); + my $fn = `$cmd`; + $fn =~ s/\n$//s; + error "didn't get a file?" if ($fn eq ""); + + print STDERR "$progname: selected file $fn\n" if ($verbose > 1); + + if ($fn =~ m/\.gif/i) { $cmd = "giftopnm < $fn"; } + elsif ($fn =~ m/\.jpe?g/i) { $cmd = "djpeg < $fn"; } + else { + error "unrecognized file extension on $fn"; + } + + print STDERR "$progname: converting with \"$cmd\"\n" if ($verbose > 1); + $cmd .= " 2>/dev/null" unless ($verbose > 1); + $ppm = `$cmd`; + + } else { + + print STDERR "$progname: running \"$cmd\"\n" if ($verbose > 1); + $ppm = `$cmd`; + error "no data?" if ($ppm eq ""); + error "not a PPM file" unless ($ppm =~ m/^P\d\n/s); + + $_ = $ppm; + my ($width, $height) = m/^P\d\n(\d+) (\d+)\n/s; + error "got a bogus PPM" unless ($width && $height); + print STDERR "$progname: grabbed ${width}x$height PPM\n" + if ($verbose > 1); + $_ = 0; + } + + return $ppm; + } +} - kill_pid +sub dispose_ppm { + my ($ppm) = @_; - if [ ! -s $tmp_ppm3 ]; then - echo "$0: no image grabbed" >&2 + error "0-length data" if (!defined($ppm) || $ppm eq ""); + error "not a PPM file" unless ($ppm =~ m/^P\d\n/s); - elif [ "$use_stdout" = true ]; then + if ($use_stdout) { + print STDERR "$progname: writing to stdout\n" if ($verbose > 1); + print $ppm; - cat $tmp_ppm3 - clean2 - exit 0 + } else { + my $displayer = pick_displayer(); - else + my $tmpdir = $ENV{TMPDIR}; + $tmpdir = "/tmp" unless $tmpdir; + my $fn = sprintf("$tmpdir/vw.%04x", $$); + local *OUT; + unlink $fn; + open (OUT, ">$fn") || error "writing $fn: $!"; + print OUT $ppm; + close OUT; -# pnmtosgi < $tmp_ppm3 > $tmp_ppm2 -# rm -f $tmp_ppm3 - mv $tmp_ppm3 $tmp_ppm2 + my @cmd = split (/ +/, $displayer); + push @cmd, $fn; + print STDERR "$progname: executing \"" . join(" ", @cmd) . "\"\n" + if ($verbose); + system (@cmd); - if [ -s $tmp_ppm2 ]; then - if [ "$verbose" = true ]; then - echo "launching $displayer $displayer_args $tmp_ppm2" >&2 - ls -lF $tmp_ppm2 - fi + unlink $fn; + } +} - mv $tmp_ppm2 $tmp_ppm0 - eval "$displayer $displayer_args $tmp_ppm0 &" -# this doesn't work -- leaves xv processes around, instead of stray xset -# data. Sigh. -# -# # cat the file so that we can nuke it without racing against xv. -# cat $tmp_ppm2 | $displayer $displayer_args - & +my $stdin_ppm = undef; - pid=$! - fi - fi +sub vidwhack { + my $ppm; + if ($use_stdin) { + if (!defined($stdin_ppm)) { + $stdin_ppm = get_ppm(); + } + $ppm = $stdin_ppm; + } else { + $ppm = get_ppm(); + } - clean - sleep $delay + $ppm = frob_ppm ($ppm); + dispose_ppm ($ppm); + $ppm = undef; +} - done - exit 1 + +sub usage { + print STDERR "VidWhacker, Copyright (c) 2001 Jamie Zawinski \n"; + print STDERR " http://www.jwz.org/xscreensaver/"; + print STDERR "\n"; + print STDERR "usage: $0 [-display dpy] [-verbose] [-root | -window]\n"; + print STDERR " [-stdin] [-stdout] [-delay secs]\n"; + print STDERR " [-directory image_directory]\n"; + exit 1; } -main $@ +sub main { + while ($_ = $ARGV[0]) { + shift @ARGV; + if ($_ eq "--verbose") { $verbose++; } + elsif (m/^-v+$/) { $verbose += length($_)-1; } + elsif (m/^(-display|-disp|-dis|-dpy|-d)$/) { $ENV{DISPLAY} = shift @ARGV; } + elsif (m/^--?stdin$/) { $use_stdin = 1; } + elsif (m/^--?stdout$/) { $use_stdout = 1; } + elsif (m/^--?delay$/) { $delay = shift @ARGV; } + elsif (m/^--?dir(ectory)?$/) { $imagedir = shift @ARGV; } + elsif (m/^--?root$/) { } + elsif (m/^--?window$/) { + print STDERR "$progname: sorry, \"-window\" is unimplemented.\n"; + print STDERR "$progname: use \"-stdout\" and pipe to a displayer.\n"; + exit 1; + } + elsif (m/^-./) { usage; } + else { usage; } + } + + read_config; + + if (!$use_stdout) { + $_ = `xdpyinfo 2>-`; + ($screen_width) =~ m/ dimensions: +(\d+)x(\d+) pixels/; + $screen_width = 800 unless $screen_width > 0; + } + + if ($use_stdout) { + vidwhack(); + } else { + while (1) { + vidwhack(); + sleep $delay; + } + } +} -# to find stray xv data: -# xwininfo -root -children|grep 'xv image comments' | awk '{print "xkill -id ", $1}' +main; +exit 0; diff --git a/hacks/webcollage b/hacks/webcollage index b1f1c96b..5461ac31 100755 --- a/hacks/webcollage +++ b/hacks/webcollage @@ -28,7 +28,7 @@ use Fcntl ':flock'; # import LOCK_* constants use POSIX qw(strftime); -my $version = q{ $Revision: 1.63 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/; +my $version = q{ $Revision: 1.65 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/; my $copyright = "WebCollage $version, Copyright (c) 1999" . " Jamie Zawinski \n" . " http://www.jwz.org/xscreensaver/\n"; diff --git a/hacks/xteevee.c b/hacks/xteevee.c index 4d838bfd..df4ce24a 100644 --- a/hacks/xteevee.c +++ b/hacks/xteevee.c @@ -24,6 +24,7 @@ /* Includes ******************************************************************/ #include "screenhack.h" +#include "colorbars.h" #include @@ -41,8 +42,6 @@ #define XTEEVEE_ARG_DELAY_BETWEEN "delayBetween" #define XTEEVEE_STATIC_COLOR_COUNT 6 #define XTEEVEE_STATIC_TILE_COUNT 16 -#define XTEEVEE_BARS_COLOR_TOP_COUNT 7 -#define XTEEVEE_BARS_COLOR_BOTTOM_COUNT 5 /* Globals *******************************************************************/ @@ -119,7 +118,8 @@ void xteevee_Static(Display* x_Disp,Window x_Win,XWindowAttributes* x_WinAttr, { color_Color.red = color_Color.green = color_Color.blue = (((double)color_Index+1)/XTEEVEE_STATIC_COLOR_COUNT)*65535; - if (XAllocColor(x_Disp,x_WinAttr->colormap,&color_Color) == 0) + if (!x_WinAttr->colormap || + !XAllocColor(x_Disp,x_WinAttr->colormap,&color_Color)) { /* NOTE: I have no idea what to do here. Why would this fail? */ @@ -301,7 +301,7 @@ void xteevee_Roll(Display* x_Disp,Window x_Win,XWindowAttributes* x_WinAttr, } XSync(x_Disp,0); - sleep(0); + usleep(50000); screenhack_handle_events(x_Disp); } @@ -313,115 +313,21 @@ void xteevee_Roll(Display* x_Disp,Window x_Win,XWindowAttributes* x_WinAttr, void xteevee_Bars(Display* x_Disp,Window x_Win,XWindowAttributes* x_WinAttr, time_t hack_Time,Pixmap hack_Pm) { - GC x_GcTop[XTEEVEE_BARS_COLOR_TOP_COUNT]; - GC x_GcBottom[XTEEVEE_BARS_COLOR_BOTTOM_COUNT]; - XGCValues x_GcVal; - int color_Index; - XColor color_Color; - char* color_ColorTop[] = - { - "grey", - "yellow", - "light blue", - "green", - "orange", - "red", - "purple" - }; - char* color_ColorBottom[] = - { - "black", - "white", - "black", - "black", - "black" - }; - - /* Build the GCs */ - for (color_Index = 0;color_Index < XTEEVEE_BARS_COLOR_TOP_COUNT; - color_Index++) - { - if (XParseColor(x_Disp,x_WinAttr->colormap, - color_ColorTop[color_Index],&color_Color) == 0) - { - /* NOTE: Um, badness? */ - } - if (XAllocColor(x_Disp,x_WinAttr->colormap,&color_Color) == 0) - { - /* NOTE: More badness? */ - } - x_GcVal.foreground = color_Color.pixel; - x_GcTop[color_Index] = - XCreateGC(x_Disp,x_Win,GCForeground,&x_GcVal); - } - for (color_Index = 0;color_Index < XTEEVEE_BARS_COLOR_BOTTOM_COUNT; - color_Index++) - { - if (XParseColor(x_Disp,x_WinAttr->colormap, - color_ColorBottom[color_Index],&color_Color) == 0) - { - /* NOTE: Um, badness? */ - } - if (XAllocColor(x_Disp,x_WinAttr->colormap,&color_Color) == 0) - { - /* NOTE: More badness? */ - } - x_GcVal.foreground = color_Color.pixel; - x_GcBottom[color_Index] = - XCreateGC(x_Disp,x_Win,GCForeground,&x_GcVal); - } - - /* Draw color-bar test pattern */ - XClearWindow(x_Disp,x_Win); - for (color_Index = 0;color_Index < XTEEVEE_BARS_COLOR_TOP_COUNT; - color_Index++) - { - XFillRectangle(x_Disp,x_Win,x_GcTop[color_Index], - ((x_WinAttr->width/XTEEVEE_BARS_COLOR_TOP_COUNT)+1)* - color_Index, - 0, - (x_WinAttr->width/XTEEVEE_BARS_COLOR_TOP_COUNT)+1, - (x_WinAttr->height/5)*4); - } - for (color_Index = 0;color_Index < XTEEVEE_BARS_COLOR_BOTTOM_COUNT; - color_Index++) - { - XFillRectangle(x_Disp,x_Win,x_GcBottom[color_Index], - ((x_WinAttr->width/XTEEVEE_BARS_COLOR_BOTTOM_COUNT)+1)* - color_Index, - (x_WinAttr->height/5)*4, - (x_WinAttr->width/XTEEVEE_BARS_COLOR_BOTTOM_COUNT)+1, - x_WinAttr->height-(x_WinAttr->height/5)*4); - } - - /* Go! */ - if (hack_Time > 0) - { - hack_Time += time(NULL); - } - while ((time(NULL) < hack_Time) || (hack_Time == 0)) - { - screenhack_handle_events(x_Disp); - usleep(100000); - } - - /* Free everything */ - for (color_Index = 0;color_Index < XTEEVEE_BARS_COLOR_TOP_COUNT; - color_Index++) - { - xteevee_FreeColorForeground(x_Disp,x_WinAttr, - x_GcTop[color_Index]); - XFreeGC(x_Disp,x_GcTop[color_Index]); - } - for (color_Index = 0;color_Index < XTEEVEE_BARS_COLOR_BOTTOM_COUNT; - color_Index++) - { - xteevee_FreeColorForeground(x_Disp,x_WinAttr, - x_GcBottom[color_Index]); - XFreeGC(x_Disp,x_GcBottom[color_Index]); - } + draw_colorbars (x_Disp, x_Win, 0, 0, x_WinAttr->width, x_WinAttr->height); + + /* Go! */ + if (hack_Time > 0) + { + hack_Time += time(NULL); + } + while ((time(NULL) < hack_Time) || (hack_Time == 0)) + { + screenhack_handle_events(x_Disp); + usleep(100000); + } } + /* Standard XScreenSaver entry point ======================================= */ void screenhack(Display* x_Disp,Window x_Win) { @@ -455,6 +361,7 @@ void screenhack(Display* x_Disp,Window x_Win) /* Grab the screen to give us time to do whatever we want */ XGetWindowAttributes(x_Disp,x_Win,&x_WinAttr); grab_screen_image(x_WinAttr.screen,x_Win); + x_GcVal.subwindow_mode = IncludeInferiors; x_Gc = XCreateGC(x_Disp,x_Win,GCSubwindowMode,&x_GcVal); screen_Pm = XCreatePixmap(x_Disp,x_Win,x_WinAttr.width, diff --git a/hacks/xteevee.man b/hacks/xteevee.man index 11e01e76..39b50248 100644 --- a/hacks/xteevee.man +++ b/hacks/xteevee.man @@ -19,6 +19,15 @@ picks a mode to display from the available options. If modes are explicitly set on the command-line, they over-ride the implicit options and will be choosen among exclusively. If modes are explicitly excluded from the command-line, the they are simply removed from contention. + +The image that it manipulates will be grabbed from the portion of +the screen underlying the window, or from the system's video input, +or from a random file on disk, as indicated by +the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, +and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP +file; see +.BR xscreensaver-demo (1) +for more details. .PP .SH OPTIONS .I xteevee @@ -98,7 +107,9 @@ mode, as a percentage. should simulate more TV problems. .SH SEE ALSO .BR X (1), -.BR xscreensaver (1) +.BR xscreensaver (1), +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) .SH COPYRIGHT Copyright \(co 1999 by Greg Knauss. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is diff --git a/hacks/zoom.man b/hacks/zoom.man index ec21d3c2..791f61b6 100644 --- a/hacks/zoom.man +++ b/hacks/zoom.man @@ -3,9 +3,24 @@ zoom - wander around magified desktop .SH SYNOPSIS .B zoom -[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-lenses] [\-pixwidth \fIpixels\fP] [\-pixheight \fIpixels\fP] [\-pixspacex \fIpixels\fP] [\-pixspacey \fIpixels\fP] [\-lensoffsetx \fIpixels\fP] [\-lensoffsety \fIpixels\fP] +[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] +[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] +[\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-lenses] +[\-pixwidth \fIpixels\fP] [\-pixheight \fIpixels\fP] +[\-pixspacex \fIpixels\fP] [\-pixspacey \fIpixels\fP] +[\-lensoffsetx \fIpixels\fP] [\-lensoffsety \fIpixels\fP] .SH DESCRIPTION -The \fIzoom\fP program magnifies a portion of the desktop and moves around. +The \fIzoom\fP program takes an image, magnifies it, and scrolls around +it, fatbits-style. + +The image that it manipulates will be grabbed from the portion of +the screen underlying the window, or from the system's video input, +or from a random file on disk, as indicated by +the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, +and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP +file; see +.BR xscreensaver-demo (1) +for more details. .SH OPTIONS .I zoom accepts the following options: @@ -70,7 +85,9 @@ to get the name of a resource file that overrides the global resources stored in the RESOURCE_MANAGER property. .SH SEE ALSO .BR X (1), -.BR xscreensaver (1) +.BR xscreensaver (1), +.BR xscreensaver\-demo (1), +.BR xscreensaver\-getimage (1) .SH COPYRIGHT Copyright \(co 2000 by James Macnicol. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is diff --git a/utils/Makefile.in b/utils/Makefile.in index a8dae138..b711c56f 100644 --- a/utils/Makefile.in +++ b/utils/Makefile.in @@ -100,15 +100,17 @@ X_CFLAGS = @X_CFLAGS@ INCLUDES = -I$(srcdir) -I.. @INCLUDES@ -SRCS = alpha.c colors.c fade.c grabscreen.c hsv.c overlay.c \ - resources.c spline.c usleep.c visual.c visual-gl.c xmu.c \ - logo.c yarandom.c erase.c sgivideo.c xshm.c xdbe.c -OBJS = alpha.o colors.o fade.o grabscreen.o hsv.o overlay.o \ - resources.o spline.o usleep.o visual.o visual-gl.o xmu.o \ - logo.o yarandom.o erase.o sgivideo.o xshm.o xdbe.o +SRCS = alpha.c colors.c fade.c grabscreen.c grabclient.c hsv.c \ + overlay.c resources.c spline.c usleep.c visual.c \ + visual-gl.c xmu.c logo.c yarandom.c erase.c \ + xshm.c xdbe.c colorbars.c +OBJS = alpha.o colors.o fade.o grabscreen.o grabclient.o hsv.o \ + overlay.o resources.o spline.o usleep.o visual.o \ + visual-gl.o xmu.o logo.o yarandom.o erase.o \ + xshm.o xdbe.o colorbars.o HDRS = alpha.h colors.h fade.h grabscreen.h hsv.h resources.h \ spline.h usleep.h utils.h version.h visual.h vroot.h xmu.h \ - yarandom.h erase.h sgivideo.h xshm.h xdbe.h + yarandom.h erase.h xshm.h xdbe.h colorbars.h LOGOS = logo-180.gif logo-180.xpm logo-50.gif logo-50.xpm \ logo-big.gif logo.eps EXTRAS = README Makefile.in ad2c @@ -231,10 +233,14 @@ grabscreen.o: $(srcdir)/yarandom.h grabscreen.o: $(srcdir)/usleep.h grabscreen.o: $(srcdir)/colors.h grabscreen.o: $(srcdir)/grabscreen.h -grabscreen.o: $(srcdir)/sgivideo.h grabscreen.o: $(srcdir)/visual.h grabscreen.o: $(srcdir)/resources.h grabscreen.o: $(srcdir)/vroot.h +grabclient.o: $(srcdir)/utils.h +grabclient.o: ../config.h +grabclient.o: $(srcdir)/grabscreen.h +grabclient.o: $(srcdir)/resources.h +grabclient.o: $(srcdir)/vroot.h hsv.o: $(srcdir)/utils.h hsv.o: ../config.h hsv.o: $(srcdir)/hsv.h @@ -268,11 +274,6 @@ erase.o: ../config.h erase.o: $(srcdir)/yarandom.h erase.o: $(srcdir)/usleep.h erase.o: $(srcdir)/resources.h -sgivideo.o: $(srcdir)/utils.h -sgivideo.o: ../config.h -sgivideo.o: $(srcdir)/sgivideo.h -sgivideo.o: $(srcdir)/resources.h -sgivideo.o: $(srcdir)/visual.h xshm.o: $(srcdir)/utils.h xshm.o: ../config.h xshm.o: $(srcdir)/xshm.h @@ -281,4 +282,8 @@ xdbe.o: $(srcdir)/utils.h xdbe.o: ../config.h xdbe.o: $(srcdir)/xdbe.h xdbe.o: $(srcdir)/resources.h +colorbars.o: $(srcdir)/utils.h +colorbars.o: ../config.h +colorbars.o: $(srcdir)/resources.h +colorbars.o: $(srcdir)/colorbars.h diff --git a/utils/colorbars.c b/utils/colorbars.c new file mode 100644 index 00000000..fc295267 --- /dev/null +++ b/utils/colorbars.c @@ -0,0 +1,133 @@ +/* xscreensaver, Copyright (c) 2001 Jamie Zawinski + * + * 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. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +/* This file contains code for drawing NTSC colorbars. + A couple of things use this. + */ + +#include "utils.h" +#include "resources.h" +#include "colorbars.h" + +static const char * const colors[7][18] = { + { "#CCCCCC", "#FFFF00", "#00FFFF", "#00FF00", /* tall bars */ + "#FF00FF", "#FF0000", "#0000FF", "#000000", + 0 + }, { + "#000000", "#0000FF", "#FF0000", "#FF00FF", /* short rev bars */ + "#00FF00", "#00FFFF", "#FFFF00", "#CCCCCC", + 0 + }, { + "#000000", 0 /* blank */ + }, { + "#FFFFFF", "#EEEEEE", "#DDDDDD", "#CCCCCC", /* gray ramp */ + "#BBBBBB", "#AAAAAA", "#999999", "#888888", + "#777777", "#666666", "#555555", "#444444", + "#333333", "#222222", "#111111", "#000000" + }, { + "#000000", "#111111", "#222222", "#333333", /* gray rev ramp */ + "#444444", "#555555", "#666666", "#777777", + "#888888", "#999999", "#AAAAAA", "#BBBBBB", + "#CCCCCC", "#DDDDDD", "#EEEEEE", "#FFFFFF" + }, { + "#000000", 0 /* blank */ + }, { + "#FF00FF", "#FF00FF", "#FF00FF", /* blacklevel row */ + "#FFFFFF", "#FFFFFF", "#FFFFFF", + "#0000AD", "#0000AD", "#0000AD", + "#131313", "#131313", "#131313", + "#000000", "#000000", "#262626", + "#000000", "#000000", "#000000" + } +}; + +static const int heights[7] = { 63, 10, 1, 5, 5, 1, 15 }; /* percentages */ + + +void +draw_colorbars (Display *dpy, Window window, + int x, int y, int width, int height) +{ + int oy = y; + int ypct = 0; + int j; + XGCValues gcv; + GC gc = XCreateGC (dpy, window, 0, &gcv); + Colormap cmap; + XWindowAttributes xgwa; + XGetWindowAttributes (dpy, window, &xgwa); + cmap = xgwa.colormap; + + for (j = 0; j < sizeof(colors) / sizeof(*colors); j++) + { + int i, h, ncols; + int x1 = 0; + int y2; + for (ncols = 0; ncols < sizeof(*colors) / sizeof(**colors); ncols++) + if (!colors[j][ncols]) break; + ypct += heights[j]; + y2 = height * ypct / 100; + h = y2 - y; /* avoid roundoff fencepost */ + for (i = 0; i < ncols; i++) + { + XColor xcolor; + const char *color = colors[j][i]; + int x2 = x + (width * (i+1) / ncols); + int w = x2 - x1; /* avoid roundoff fencepost */ + if (! XParseColor (dpy, cmap, color, &xcolor)) + abort(); + xcolor.flags = DoRed|DoGreen|DoBlue; + if (!XAllocColor (dpy, cmap, &xcolor)) + continue; + XSetForeground (dpy, gc, xcolor.pixel); + XFillRectangle (dpy, window, gc, x1, y, w, h); + x1 = x2; + } + y = y2; + } + + y = oy; + + /* Add in the xscreensaver logo */ + { + unsigned long *pixels; /* ignored - unfreed */ + int npixels; + unsigned long bg = ~0; + Pixmap logo_mask = 0; + Pixmap logo_map = xscreensaver_logo (dpy, window, cmap, bg, + &pixels, &npixels, &logo_mask, + True); + if (logo_map) + { + Window root; + int logo_width, logo_height; + int w = width; + int h = height * heights[0] / 100; + int x1, y1, bw, d; + XGetGeometry (dpy, logo_map, &root, &x1, &y1, + &logo_width, &logo_height, &bw, &d); + x1 = x + (w - logo_width) / 2; + y1 = y + (h - logo_height) / 2; + if (logo_mask) + { + XSetClipMask (dpy, gc, logo_mask); + XSetClipOrigin (dpy, gc, x1, y1); + } + XCopyArea (dpy, logo_map, window, gc, + 0, 0, logo_width, logo_height, x1, y1); + XFreePixmap (dpy, logo_map); + if (logo_mask) + XFreePixmap (dpy, logo_mask); + } + } + + XFreeGC(dpy, gc); +} diff --git a/utils/sgivideo.h b/utils/colorbars.h similarity index 64% rename from utils/sgivideo.h rename to utils/colorbars.h index 794fde6c..93661a81 100644 --- a/utils/sgivideo.h +++ b/utils/colorbars.h @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1997 Jamie Zawinski +/* xscreensaver, Copyright (c) 2001 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -9,10 +9,10 @@ * implied warranty. */ -#ifndef __SGIVIDEO_H__ -# ifdef HAVE_SGI_VIDEO +#ifndef __COLORBARS_H__ +#define __COLORBARS_H__ -Bool grab_video_frame(Screen *screen, Visual *visual, Drawable dest); +extern void draw_colorbars (Display *dpy, Window window, + int x, int y, int width, int height); -# endif /* HAVE_SGI_VIDEO */ -#endif /* __SGIVIDEO_H__ */ +#endif /* __COLORBARS_H__ */ diff --git a/utils/compile_axp.com b/utils/compile_axp.com index dba6ccdf..1fadffd5 100644 --- a/utils/compile_axp.com +++ b/utils/compile_axp.com @@ -1,13 +1,14 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) ALPHA.C +$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) COLORBARS.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) COLORS.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) ERASE.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) FADE.C +$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) GRABCLIENT.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) GRABSCREEN.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) HSV.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) LOGO.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) OVERLAY.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) RESOURCES.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) SGIVIDEO.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) SPLINE.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) USLEEP.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VISUAL-GL.C diff --git a/utils/compile_decc.com b/utils/compile_decc.com index f12daa22..fe09afa1 100644 --- a/utils/compile_decc.com +++ b/utils/compile_decc.com @@ -1,13 +1,14 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) ALPHA.C +$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) COLORBARS.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) COLORS.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) ERASE.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) FADE.C +$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) GRABCLIENT.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) GRABSCREEN.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) HSV.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) LOGO.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) OVERLAY.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) RESOURCES.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) SGIVIDEO.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) SPLINE.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) USLEEP.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VISUAL-GL.C diff --git a/utils/fade.c b/utils/fade.c index 186bc89c..1b975f68 100644 --- a/utils/fade.c +++ b/utils/fade.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1992-1998 Jamie Zawinski +/* xscreensaver, Copyright (c) 1992-2001 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -21,7 +21,6 @@ #include "usleep.h" #include "fade.h" - Colormap copy_colormap (Screen *screen, Visual *visual, Colormap cmap, Colormap into_cmap) @@ -76,12 +75,18 @@ blacken_colormap (Screen *screen, Colormap cmap) static void fade_screens_1 (Display *dpy, Colormap *cmaps, Window *black_windows, int seconds, int ticks, Bool out_p, Bool clear_windows); + #ifdef HAVE_SGI_VC_EXTENSION static int sgi_gamma_fade (Display *dpy, Window *black_windows, int seconds, int ticks, Bool out_p, Bool clear_windows); #endif /* HAVE_SGI_VC_EXTENSION */ +#ifdef HAVE_XF86VMODE_GAMMA +static int xf86_gamma_fade (Display *dpy, + Window *black_windows, int seconds, int ticks, + Bool out_p, Bool clear_windows); +#endif /* HAVE_XF86VMODE_GAMMA */ void @@ -107,11 +112,24 @@ fade_screens (Display *dpy, Colormap *cmaps, Window *black_windows, AGAIN: +/* #### printf("\n\nfade_screens %d %d %d\n", seconds, ticks, out_p); */ + #ifdef HAVE_SGI_VC_EXTENSION /* First try to do it by fading the gamma in an SGI-specific way... */ - if (0 != sgi_gamma_fade(dpy, black_windows, seconds, ticks, out_p, + if (0 == sgi_gamma_fade(dpy, black_windows, seconds, ticks, out_p, clear_windows)) + ; + else #endif /* HAVE_SGI_VC_EXTENSION */ + +#ifdef HAVE_XF86VMODE_GAMMA + /* Then try to do it by fading the gamma in an XFree86-specific way... */ + if (0 == xf86_gamma_fade(dpy, black_windows, seconds, ticks, out_p, + clear_windows)) + ; + else +#endif /* HAVE_XF86VMODE_GAMMA */ + /* Else, do it the old-fashioned way, which (somewhat) loses if there are TrueColor windows visible. */ fade_screens_1 (dpy, cmaps, black_windows, seconds, ticks, @@ -359,11 +377,14 @@ fade_screens_1 (Display *dpy, Colormap *cmaps, Window *black_windows, } + +/* SGI Gamma fading */ + #ifdef HAVE_SGI_VC_EXTENSION # include -struct screen_gamma_info { +struct screen_sgi_gamma_info { int gamma_map; /* ??? always using 0 */ int nred, ngreen, nblue; unsigned short *red1, *green1, *blue1; @@ -374,8 +395,8 @@ struct screen_gamma_info { }; -static void whack_gamma(Display *dpy, int screen, - struct screen_gamma_info *info, float ratio); +static void sgi_whack_gamma(Display *dpy, int screen, + struct screen_sgi_gamma_info *info, float ratio); static int sgi_gamma_fade (Display *dpy, @@ -392,7 +413,7 @@ sgi_gamma_fade (Display *dpy, #endif int i, screen; int status = -1; - struct screen_gamma_info *info = (struct screen_gamma_info *) + struct screen_sgi_gamma_info *info = (struct screen_sgi_gamma_info *) calloc(nscreens, sizeof(*info)); /* Get the current gamma maps for all screens. @@ -453,7 +474,7 @@ sgi_gamma_fade (Display *dpy, if (!out_p) for (screen = 0; screen < nscreens; screen++) { - whack_gamma(dpy, screen, &info[screen], 0.0); + sgi_whack_gamma(dpy, screen, &info[screen], 0.0); if (black_windows && black_windows[screen]) { XUnmapWindow (dpy, black_windows[screen]); @@ -470,8 +491,8 @@ sgi_gamma_fade (Display *dpy, { for (screen = 0; screen < nscreens; screen++) { - whack_gamma(dpy, screen, &info[screen], - (((float)i) / ((float)steps))); + sgi_whack_gamma(dpy, screen, &info[screen], + (((float)i) / ((float)steps))); /* If there is user activity, bug out. (Bug out on keypresses or mouse presses, but not motion, and not release events. Bugging @@ -531,7 +552,7 @@ sgi_gamma_fade (Display *dpy, usleep(100000); /* 1/10th second */ for (screen = 0; screen < nscreens; screen++) - whack_gamma(dpy, screen, &info[screen], 1.0); + sgi_whack_gamma(dpy, screen, &info[screen], 1.0); XSync(dpy, False); status = 0; @@ -552,8 +573,8 @@ sgi_gamma_fade (Display *dpy, } static void -whack_gamma(Display *dpy, int screen, struct screen_gamma_info *info, - float ratio) +sgi_whack_gamma(Display *dpy, int screen, struct screen_sgi_gamma_info *info, + float ratio) { int k; @@ -578,44 +599,214 @@ whack_gamma(Display *dpy, int screen, struct screen_gamma_info *info, #endif /* HAVE_SGI_VC_EXTENSION */ - -#if 0 -#include "screenhack.h" +/* XFree86 4.x+ Gamma fading */ -char *progclass = "foo"; -char *defaults [] = { - 0 -}; +#ifdef HAVE_XF86VMODE_GAMMA -XrmOptionDescRec options [] = {0}; -int options_size = 0; +#include -void -screenhack (dpy, w) - Display *dpy; - Window w; +static Bool xf86_whack_gamma(Display *dpy, int screen, + XF86VidModeGamma *info, float ratio); +static Bool xf86_check_gamma_extension (Display *dpy); + +static int +xf86_gamma_fade (Display *dpy, + Window *black_windows, int seconds, int ticks, + Bool out_p, Bool clear_windows) { - int seconds = 3; - int ticks = 20; - int delay = 1; + int steps = seconds * ticks; + long usecs_per_step = (long)(seconds * 1000000) / (long)steps; + XEvent dummy_event; + int nscreens = ScreenCount(dpy); + struct timeval then, now; +#ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; +#endif + int i, screen; + int status = -1; + XF86VidModeGamma *info = 0; + + static int ext_ok = -1; + + /* Only probe the extension once: the answer isn't going to change. */ + if (ext_ok == -1) + ext_ok = (xf86_check_gamma_extension (dpy) ? 1 : 0); - while (1) + /* If this server doesn't have the gamma extension, bug out. */ + if (ext_ok == 0) + goto FAIL; + + info = (XF86VidModeGamma *) calloc(nscreens, sizeof(*info)); + + /* Get the current gamma maps for all screens. + Bug out and return -1 if we can't get them for some screen. + */ + for (screen = 0; screen < nscreens; screen++) { - XSync (dpy, False); + if (!XF86VidModeGetGamma(dpy, screen, &info[screen])) + goto FAIL; + } - fprintf(stderr,"out..."); fflush(stderr); - fade_screens (dpy, 0, seconds, ticks, True); - fprintf(stderr, "done.\n"); fflush(stderr); +#ifdef GETTIMEOFDAY_TWO_ARGS + gettimeofday(&then, &tzp); +#else + gettimeofday(&then); +#endif - if (delay) sleep (delay); + /* If we're fading in (from black), then first crank the gamma all the + way down to 0, then take the windows off the screen. + */ + if (!out_p) + for (screen = 0; screen < nscreens; screen++) + { + xf86_whack_gamma(dpy, screen, &info[screen], 0.0); + if (black_windows && black_windows[screen]) + { + XUnmapWindow (dpy, black_windows[screen]); + XClearWindow (dpy, black_windows[screen]); + XSync(dpy, False); + } + } - fprintf(stderr,"in..."); fflush(stderr); - fade_screens (dpy, 0, seconds, ticks, False); - fprintf(stderr, "done.\n"); fflush(stderr); - if (delay) sleep (delay); + /* Iterate by steps of the animation... */ + for (i = (out_p ? steps : 0); + (out_p ? i > 0 : i < steps); + (out_p ? i-- : i++)) + { + for (screen = 0; screen < nscreens; screen++) + { + xf86_whack_gamma(dpy, screen, &info[screen], + (((float)i) / ((float)steps))); + + /* If there is user activity, bug out. (Bug out on keypresses or + mouse presses, but not motion, and not release events. Bugging + out on motion made the unfade hack be totally useless, I think.) + + We put the event back so that the calling code can notice it too. + It would be better to not remove it at all, but that's harder + because Xlib has such a non-design for this kind of crap, and + in this application it doesn't matter if the events end up out + of order, so in the grand unix tradition we say "fuck it" and + do something that mostly works for the time being. + */ + if (XCheckMaskEvent (dpy, (KeyPressMask|ButtonPressMask), + &dummy_event)) + { + XPutBackEvent (dpy, &dummy_event); + goto DONE; + } + +#ifdef GETTIMEOFDAY_TWO_ARGS + gettimeofday(&now, &tzp); +#else + gettimeofday(&now); +#endif + + /* If we haven't already used up our alotted time, sleep to avoid + changing the colormap too fast. */ + { + long diff = (((now.tv_sec - then.tv_sec) * 1000000) + + now.tv_usec - then.tv_usec); + then.tv_sec = now.tv_sec; + then.tv_usec = now.tv_usec; + if (usecs_per_step > diff) + usleep (usecs_per_step - diff); + } + } } + + + DONE: + + if (out_p && black_windows) + { + for (screen = 0; screen < nscreens; screen++) + { + if (clear_windows) + XClearWindow (dpy, black_windows[screen]); + XMapRaised (dpy, black_windows[screen]); + } + XSync(dpy, False); + } + + /* I can't explain this; without this delay, we get a flicker. + I suppose there's some lossage with stale bits being in the + hardware frame buffer or something, and this delay gives it + time to flush out. This sucks! */ + usleep(100000); /* 1/10th second */ + + for (screen = 0; screen < nscreens; screen++) + xf86_whack_gamma(dpy, screen, &info[screen], 1.0); + XSync(dpy, False); + + status = 0; + + FAIL: + if (info) free(info); + + return status; } -#endif + +/* VidModeExtension version 2.0 or better is needed to do gamma. */ +# define XF86_VIDMODE_NAME "XFree86-VidModeExtension" +# define XF86_VIDMODE_MIN_MAJOR 2 +# define XF86_VIDMODE_MIN_MINOR 0 + +static Bool +xf86_check_gamma_extension (Display *dpy) +{ + int op, event, error, major, minor; + + if (!XQueryExtension (dpy, XF86_VIDMODE_NAME, &op, &event, &error)) + return False; /* display doesn't have the extension. */ + + if (!XF86VidModeQueryVersion (dpy, &major, &minor)) + return False; /* unable to get version number? */ + + if (major < XF86_VIDMODE_MIN_MAJOR || + (major == XF86_VIDMODE_MIN_MAJOR && + minor < XF86_VIDMODE_MIN_MINOR)) + return False; /* extension is too old. */ + + /* Copacetic */ + return True; +} + + +/* XFree doesn't let you set gamma to a value smaller than this. + Apparently they didn't anticipate the trick I'm doing here... + */ +#define XF86_MIN_GAMMA 0.1 + + +static Bool +xf86_whack_gamma(Display *dpy, int screen, XF86VidModeGamma *info, + float ratio) +{ + Bool status; + XF86VidModeGamma g2; + + if (ratio < 0) ratio = 0; + if (ratio > 1) ratio = 1; + + g2.red = info->red * ratio; + g2.green = info->green * ratio; + g2.blue = info->blue * ratio; + +# ifdef XF86_MIN_GAMMA + if (g2.red < XF86_MIN_GAMMA) g2.red = XF86_MIN_GAMMA; + if (g2.green < XF86_MIN_GAMMA) g2.green = XF86_MIN_GAMMA; + if (g2.blue < XF86_MIN_GAMMA) g2.blue = XF86_MIN_GAMMA; +# endif + +/* #### printf(" G %4.2f %4.2f\n", ratio, g2.red); */ + + status = XF86VidModeSetGamma (dpy, screen, &g2); + XSync(dpy, False); + return status; +} + +#endif /* HAVE_XF86VMODE_GAMMA */ diff --git a/utils/grabclient.c b/utils/grabclient.c new file mode 100644 index 00000000..0a1d2ac7 --- /dev/null +++ b/utils/grabclient.c @@ -0,0 +1,140 @@ +/* xscreensaver, Copyright (c) 1992, 1993, 1994, 1997, 1998, 2001 + * Jamie Zawinski + * + * 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. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +/* This file contains code for running an external program to grab an image + onto the given window. The external program in question must take a + window ID as its argument, e.g., the "xscreensaver-getimage" program + in the hacks/ directory. + + That program links against utils/grabimage.c, which happens to export the + same API as this program (utils/grabclient.c). + */ + +#include "utils.h" +#include "grabscreen.h" +#include "resources.h" + +#include "vroot.h" +#include + +extern char *progname; + + +static Bool +xscreensaver_window_p (Display *dpy, Window window) +{ + Atom type; + int format; + unsigned long nitems, bytesafter; + char *version; + if (XGetWindowProperty (dpy, window, + XInternAtom (dpy, "_SCREENSAVER_VERSION", False), + 0, 1, False, XA_STRING, + &type, &format, &nitems, &bytesafter, + (unsigned char **) &version) + == Success + && type != None) + return True; + return False; +} + + +/* XCopyArea seems not to work right on SGI O2s if you draw in SubwindowMode + on a window whose depth is not the maximal depth of the screen? Or + something. Anyway, things don't work unless we: use SubwindowMode for + the real root window (or a legitimate virtual root window); but do not + use SubwindowMode for the xscreensaver window. I make no attempt to + explain. + */ +Bool +use_subwindow_mode_p(Screen *screen, Window window) +{ + if (window != VirtualRootWindowOfScreen(screen)) + return False; + else if (xscreensaver_window_p(DisplayOfScreen(screen), window)) + return False; + else + return True; +} + + +static void +checkerboard (Screen *screen, Window window) +{ + Display *dpy = DisplayOfScreen (screen); + int x, y; + int size = 24; + XColor fg, bg; + XGCValues gcv; + GC gc = XCreateGC (dpy, window, 0, &gcv); + XWindowAttributes xgwa; + XGetWindowAttributes (dpy, window, &xgwa); + fg.flags = bg.flags = DoRed|DoGreen|DoBlue; + fg.red = fg.green = fg.blue = 0x0000; + bg.red = bg.green = bg.blue = 0x4444; + fg.pixel = 0; + bg.pixel = 1; + + /* Allocate black and gray, but don't hold them locked. */ + if (XAllocColor (dpy, xgwa.colormap, &fg)) + XFreeColors (dpy, xgwa.colormap, &fg.pixel, 1, 0); + if (XAllocColor (dpy, xgwa.colormap, &bg)) + XFreeColors (dpy, xgwa.colormap, &bg.pixel, 1, 0); + + XSetForeground (dpy, gc, bg.pixel); + XFillRectangle (dpy, window, gc, 0, 0, xgwa.width, xgwa.height); + XSetForeground (dpy, gc, fg.pixel); + for (y = 0; y < xgwa.height; y += size+size) + for (x = 0; x < xgwa.width; x += size+size) + { + XFillRectangle (dpy, window, gc, x, y, size, size); + XFillRectangle (dpy, window, gc, x+size, y+size, size, size); + } +} + +void +grab_screen_image (Screen *screen, Window window) +{ + Display *dpy = DisplayOfScreen (screen); + char *grabber = get_string_resource ("desktopGrabber", "DesktopGrabber"); + char *cmd; + char id[20]; + + if (!grabber || !*grabber) + { + fprintf (stderr, + "%s: resources installed incorrectly: \"desktopGrabber\" is unset!\n", + progname); + exit (1); + } + + sprintf (id, "0x%x", (unsigned long) window); + cmd = (char *) malloc (strlen(grabber) + strlen(id) + 1); + + /* Needn't worry about buffer overflows here, because the buffer is + longer than the length of the format string, and the length of what + we're putting into it. So the only way to crash would be if the + format string itself was corrupted, but that comes from the + resource database, and if hostile forces have access to that, + then the game is already over. + */ + sprintf (cmd, grabber, id); + + /* In case "cmd" fails, leave some random image on the screen, not just + black or white, so that it's more obvious what went wrong. */ + checkerboard (screen, window); + + XSync (dpy, True); + system (cmd); + free (cmd); + XSync (dpy, True); +} diff --git a/utils/grabscreen.c b/utils/grabscreen.c index 6f88e5a1..328029e3 100644 --- a/utils/grabscreen.c +++ b/utils/grabscreen.c @@ -34,7 +34,6 @@ #include "usleep.h" #include "colors.h" #include "grabscreen.h" -#include "sgivideo.h" #include "visual.h" #include "resources.h" @@ -52,8 +51,9 @@ static void copy_default_colormap_contents (Screen *, Colormap, Visual *); -#if defined(HAVE_READ_DISPLAY_EXTENSION) || defined(HAVE_SGI_VIDEO) -static void make_cubic_colormap (Screen *, Window, Visual *); +#ifdef HAVE_READ_DISPLAY_EXTENSION +static void allocate_cubic_colormap (Screen *, Window, Visual *); +void remap_image (Screen *, Window, Colormap, XImage *); #endif @@ -64,19 +64,23 @@ MapNotify_event_p (Display *dpy, XEvent *event, XPointer window) event->xvisibility.window == (Window) window); } -#ifdef DEBUG extern char *progname; -#endif /* DEBUG */ +Bool grab_verbose_p = False; + +void +grabscreen_verbose(void) +{ + grab_verbose_p = True; +} static void raise_window(Display *dpy, Window window, Bool dont_wait) { -#ifdef DEBUG - fprintf(stderr, "%s: raising window 0x%08lX (%s)\n", - progname, (unsigned long) window, - (dont_wait ? "not waiting" : "waiting")); -#endif /* DEBUG */ + if (grab_verbose_p) + fprintf(stderr, "%s: raising window 0x%08lX (%s)\n", + progname, (unsigned long) window, + (dont_wait ? "not waiting" : "waiting")); if (! dont_wait) { @@ -92,6 +96,8 @@ raise_window(Display *dpy, Window window, Bool dont_wait) hints.height = xgwa.height; hints.flags |= (PPosition|USPosition|PSize|USSize); XSetWMNormalHints(dpy, window, &hints); + + XSelectInput (dpy, window, (xgwa.your_event_mask | StructureNotifyMask)); } XMapRaised(dpy, window); @@ -203,8 +209,8 @@ install_screen_colormaps (Screen *screen) } -static void -grab_screen_image_1 (Screen *screen, Window window) +void +grab_screen_image (Screen *screen, Window window) { Display *dpy = DisplayOfScreen (screen); XWindowAttributes xgwa; @@ -239,19 +245,19 @@ grab_screen_image_1 (Screen *screen, Window window) unmap_time = unmap * 100000; } -#ifdef DEBUG - fprintf(stderr, - "\n%s: window 0x%08lX root: %d saver: %d grab: %d wait: %.1f\n", - progname, (unsigned long) window, - root_p, saver_p, grab_mouse_p, ((double)unmap_time)/1000000.0); - { - XWindowAttributes xgwa2; - XGetWindowAttributes (dpy, window, &xgwa2); - fprintf(stderr, "%s: ", progname); - describe_visual(stderr, screen, xgwa2.visual, ####); - fprintf (stderr, "\n"); - } -#endif /* DEBUG */ + if (grab_verbose_p) + { + XWindowAttributes xgwa2; + fprintf(stderr, + "\n%s: window 0x%08lX root: %d saver: %d grab: %d wait: %.1f\n", + progname, (unsigned long) window, + root_p, saver_p, grab_mouse_p, ((double)unmap_time)/1000000.0); + + XGetWindowAttributes (dpy, window, &xgwa2); + fprintf(stderr, "%s: ", progname); + describe_visual(stderr, screen, xgwa2.visual, False); + fprintf (stderr, "\n"); + } if (!root_p) XSetWindowBackgroundPixmap (dpy, window, None); @@ -283,9 +289,11 @@ grab_screen_image_1 (Screen *screen, Window window) if (! read_display(screen, window, 0, saver_p)) #endif /* HAVE_READ_DISPLAY_EXTENSION */ { -#if defined(HAVE_READ_DISPLAY_EXTENSION) && defined(DEBUG) - fprintf(stderr, "%s: read_display() failed\n", progname); -#endif /* DEBUG */ +#ifdef HAVE_READ_DISPLAY_EXTENSION + if (grab_verbose_p) + fprintf(stderr, "%s: read_display() failed\n", progname); +#endif /* HAVE_READ_DISPLAY_EXTENSION */ + copy_default_colormap_contents (screen, xgwa.colormap, xgwa.visual); raise_window(dpy, window, saver_p); @@ -312,9 +320,10 @@ grab_screen_image_1 (Screen *screen, Window window) XGCValues gcv; GC gc; -#if defined(HAVE_READ_DISPLAY_EXTENSION) && defined(DEBUG) - fprintf(stderr, "%s: read_display() failed\n", progname); -#endif /* DEBUG */ +#ifdef HAVE_READ_DISPLAY_EXTENSION + if (grab_verbose_p) + fprintf(stderr, "%s: read_display() failed\n", progname); +#endif /* HAVE_READ_DISPLAY_EXTENSION */ copy_default_colormap_contents (screen, xgwa.colormap, xgwa.visual); @@ -329,6 +338,11 @@ grab_screen_image_1 (Screen *screen, Window window) XFreePixmap (dpy, pixmap); } + if (grab_verbose_p) + fprintf (stderr, "%s: grabbed %d bit screen image to %swindow.\n", + progname, xgwa.depth, + (root_p ? "real root " : "")); + if (grab_mouse_p) { XUngrabPointer (dpy, CurrentTime); @@ -338,42 +352,6 @@ grab_screen_image_1 (Screen *screen, Window window) XSync (dpy, True); } -void -grab_screen_image (Screen *screen, Window window) -{ -#ifdef HAVE_SGI_VIDEO - char c, *s = get_string_resource("grabVideoProbability", "Float"); - double prob = -1; - if (!s || - (1 != sscanf (s, " %lf %c", &prob, &c)) || - prob < 0 || - prob > 1) - prob = 0.5; - - if ((random() % 100) < ((int) (100 * prob))) - { - XWindowAttributes xgwa; - Display *dpy = DisplayOfScreen (screen); - XGetWindowAttributes (dpy, window, &xgwa); -# ifdef DEBUG - fprintf(stderr, "%s: trying to grab from video...\n", progname); -# endif /* DEBUG */ - if (grab_video_frame (screen, xgwa.visual, window)) - { - if (xgwa.depth < 24) - { - int class = visual_class (screen, xgwa.visual); - if (class == PseudoColor || class == DirectColor) - make_cubic_colormap (screen, window, xgwa.visual); - } - return; - } - } -#endif /* HAVE_SGI_VIDEO */ - - grab_screen_image_1 (screen, window); -} - /* When we are grabbing and manipulating a screen image, it's important that we use the same colormap it originally had. So, if the screensaver was @@ -427,11 +405,9 @@ copy_default_colormap_contents (Screen *screen, got_cells = max_cells; allocate_writable_colors (dpy, to_cmap, pixels, &got_cells); -#ifdef DEBUG - if (got_cells != max_cells) + if (grab_verbose_p && got_cells != max_cells) fprintf(stderr, "%s: got only %d of %d cells\n", progname, got_cells, max_cells); -#endif /* DEBUG */ if (got_cells <= 0) /* we're screwed */ ; @@ -456,9 +432,8 @@ copy_default_colormap_contents (Screen *screen, } -#ifdef DEBUG - fprintf(stderr, "%s: installing copy of default colormap\n", progname); -#endif /* DEBUG */ + if (grab_verbose_p) + fprintf(stderr, "%s: installing copy of default colormap\n", progname); free (old_colors); free (new_colors); @@ -490,7 +465,7 @@ read_display (Screen *screen, Window window, Pixmap into_pixmap, XGCValues gcv; int class; GC gc; - Bool install_p = False; + Bool remap_p = False; /* Check to see if the server supports the extension, and bug out if not. */ @@ -514,9 +489,8 @@ read_display (Screen *screen, Window window, Pixmap into_pixmap, if (xgwa.depth != 8 && xgwa.depth != 12) return False; else - /* Install a colormap that makes this visual behave like - a TrueColor visual of the same depth. */ - install_p = True; + /* Allocate a TrueColor-like spread of colors for the image. */ + remap_p = True; } @@ -571,10 +545,9 @@ read_display (Screen *screen, Window window, Pixmap into_pixmap, if (!image2) return False; -#ifdef DEBUG - fprintf(stderr, "%s: converting from depth %d to depth %d\n", - progname, image->depth, xgwa.depth); -#endif /* DEBUG */ + if (grab_verbose_p) + fprintf(stderr, "%s: converting from depth %d to depth %d\n", + progname, image->depth, xgwa.depth); for (y = 0; y < image->height; y++) for (x = 0; x < image->width; x++) @@ -604,6 +577,11 @@ read_display (Screen *screen, Window window, Pixmap into_pixmap, image = image2; } + if (remap_p) + { + allocate_cubic_colormap (screen, window, xgwa.visual); + remap_image (screen, window, xgwa.colormap, image); + } /* Now actually put the bits into the window or pixmap -- note the design bogosity of this extension, where we've been forced to take 24 bit data @@ -644,31 +622,32 @@ read_display (Screen *screen, Window window, Pixmap into_pixmap, } XDestroyImage(image); - if (install_p) - make_cubic_colormap (screen, window, xgwa.visual); - return True; } #endif /* HAVE_READ_DISPLAY_EXTENSION */ -#if defined(HAVE_READ_DISPLAY_EXTENSION) || defined(HAVE_SGI_VIDEO) +#ifdef HAVE_READ_DISPLAY_EXTENSION /* Makes and installs a colormap that makes a PseudoColor or DirectColor visual behave like a TrueColor visual of the same depth. */ static void -make_cubic_colormap (Screen *screen, Window window, Visual *visual) +allocate_cubic_colormap (Screen *screen, Window window, Visual *visual) { Display *dpy = DisplayOfScreen (screen); - Colormap cmap = XCreateColormap(dpy, window, visual, AllocAll); + XWindowAttributes xgwa; + Colormap cmap; int nr, ng, nb, cells; int r, g, b; int depth; XColor colors[4097]; int i; + XGetWindowAttributes (dpy, window, &xgwa); + cmap = xgwa.colormap; depth = visual_depth(screen, visual); + switch (depth) { case 8: nr = 3; ng = 3; nb = 2; cells = 256; break; @@ -677,18 +656,13 @@ make_cubic_colormap (Screen *screen, Window window, Visual *visual) } memset(colors, 0, sizeof(colors)); - for (i = 0; i < cells; i++) - { - colors[i].flags = DoRed|DoGreen|DoBlue; - colors[i].red = colors[i].green = colors[i].blue = 0; - } - for (r = 0; r < (1 << nr); r++) for (g = 0; g < (1 << ng); g++) for (b = 0; b < (1 << nb); b++) { i = (r | (g << nr) | (b << (nr + ng))); colors[i].pixel = i; + colors[i].flags = DoRed|DoGreen|DoBlue; if (depth == 8) { colors[i].red = ((r << 13) | (r << 10) | (r << 7) | @@ -707,27 +681,132 @@ make_cubic_colormap (Screen *screen, Window window, Visual *visual) } } -#ifdef DEBUG - fprintf(stderr, "%s: installing cubic colormap\n", progname); -#endif /* DEBUG */ - - XStoreColors (dpy, cmap, colors, cells); - XSetWindowColormap (dpy, window, cmap); - - /* Gag, install the colormap. - This is definitely right in the `if xscreensaver_window_p' case, since - it will never get installed otherwise. But, if we don't do it - unconditionally, then the new colormap won't get installed until the - window (re-)gains focus. It's generally very antisocial to install - the colormap of a non-OverrideRedirect window (that task belongs to - the WM) and if we were being kosher, we would only install this cmap - if the old cmap was already installed (or perhaps, if the window had - focus.) But, since this extension only exists on SGIs, and since SGIs - can handle four colormaps at once, let's go ahead and install it all - the time, so that even if the window pops up and has never had focus, - it will still display in the proper colors. - */ - XInstallColormap (dpy, cmap); + { + int j; + int allocated = 0; + int interleave = cells / 8; /* skip around, rather than allocating in + order, so that we get better coverage if + we can't allocated all of them. */ + for (j = 0; j < interleave; j++) + for (i = 0; i < cells; i += interleave) + if (XAllocColor (dpy, cmap, &colors[i + j])) + allocated++; + + if (grab_verbose_p) + fprintf (stderr, "%s: allocated %d of %d colors for cubic map\n", + progname, allocated, cells); + } +} + +static unsigned long +find_closest_pixel (XColor *colors, int ncolors, + unsigned long r, unsigned long g, unsigned long b) +{ + unsigned long distance = ~0; + int i, found = 0; + + if (ncolors == 0) + abort(); + for (i = 0; i < ncolors; i++) + { + unsigned long d; + int rd, gd, bd; + + rd = r - colors[i].red; + gd = g - colors[i].green; + bd = b - colors[i].blue; + if (rd < 0) rd = -rd; + if (gd < 0) gd = -gd; + if (bd < 0) bd = -bd; + d = (rd << 1) + (gd << 2) + bd; + + if (d < distance) + { + distance = d; + found = i; + if (distance == 0) + break; + } + } + + return found; +} + + +void +remap_image (Screen *screen, Window window, Colormap cmap, XImage *image) +{ + Display *dpy = DisplayOfScreen (screen); + unsigned long map[4097]; + int x, y, i; + int cells; + XColor colors[4097]; + + if (image->depth == 8) + cells = 256; + else if (image->depth == 12) + cells = 4096; + else + abort(); + + memset(map, -1, sizeof(*map)); + memset(colors, -1, sizeof(*colors)); + + for (i = 0; i < cells; i++) + colors[i].pixel = i; + XQueryColors (dpy, cmap, colors, cells); + + if (grab_verbose_p) + fprintf(stderr, "%s: building table for %d bit image\n", + progname, image->depth); + + for (i = 0; i < cells; i++) + { + unsigned short r, g, b; + + if (cells == 256) + { + /* "RRR GGG BB" In an 8 bit map. Convert that to + "RRR RRR RR" "GGG GGG GG" "BB BB BB BB" to give + an even spread. */ + r = (i & 0x07); + g = (i & 0x38) >> 3; + b = (i & 0xC0) >> 6; + + r = ((r << 13) | (r << 10) | (r << 7) | (r << 4) | (r << 1)); + g = ((g << 13) | (g << 10) | (g << 7) | (g << 4) | (g << 1)); + b = ((b << 14) | (b << 12) | (b << 10) | (b << 8) | + (b << 6) | (b << 4) | (b << 2) | b); + } + else + { + /* "RRRR GGGG BBBB" In a 12 bit map. Convert that to + "RRRR RRRR" "GGGG GGGG" "BBBB BBBB" to give an even + spread. */ + r = (i & 0x00F); + g = (i & 0x0F0) >> 4; + b = (i & 0xF00) >> 8; + + r = (r << 12) | (r << 8) | (r << 4) | r; + g = (g << 12) | (g << 8) | (g << 4) | g; + b = (b << 12) | (b << 8) | (b << 4) | b; + } + + map[i] = find_closest_pixel (colors, cells, r, g, b); + } + + if (grab_verbose_p) + fprintf(stderr, "%s: remapping colors in %d bit image\n", + progname, image->depth); + + for (y = 0; y < image->height; y++) + for (x = 0; x < image->width; x++) + { + unsigned long pixel = XGetPixel(image, x, y); + if (pixel >= cells) abort(); + XPutPixel(image, x, y, map[pixel]); + } } -#endif /* HAVE_READ_DISPLAY_EXTENSION || HAVE_SGI_VIDEO */ + +#endif /* HAVE_READ_DISPLAY_EXTENSION */ diff --git a/utils/logo.c b/utils/logo.c index f8d8e5d8..befb349a 100644 --- a/utils/logo.c +++ b/utils/logo.c @@ -50,9 +50,10 @@ parse_xpm_data (Display *dpy, Visual *visual, Colormap colormap, int depth, unsigned long transparent_color, unsigned const char * const * data, int *width_ret, int *height_ret, - unsigned long **pixels_ret, int *npixels_ret) + unsigned long **pixels_ret, int *npixels_ret, + unsigned char **mask_ret) { - int w, h, ncolors, nbytes; + int w, w8, h, ncolors, nbytes; char c; int i; struct { @@ -72,6 +73,19 @@ parse_xpm_data (Display *dpy, Visual *visual, Colormap colormap, int depth, if (nbytes != 1) abort(); data++; + + w8 = (w + 8) / 8; + + if (mask_ret) + { + int s = (w8 * h) + 1; + *mask_ret = (char *) malloc (s); + if (!*mask_ret) + mask_ret = 0; + else + memset (*mask_ret, 255, s); + } + for (i = 0; i < ncolors; i++) { const unsigned char *line = *data; @@ -160,6 +174,9 @@ parse_xpm_data (Display *dpy, Visual *visual, Colormap colormap, int depth, int p = rmap[*line++]; XPutPixel (ximage, x, y, (p == 255 ? transparent_color : pixels[p])); + + if (p == 255 && mask_ret) + (*mask_ret)[(y * w8) + (x >> 3)] &= (~(1 << (x % 8))); } } } @@ -180,6 +197,7 @@ Pixmap xscreensaver_logo (Display *dpy, Window window, Colormap cmap, unsigned long background_color, unsigned long **pixels_ret, int *npixels_ret, + Pixmap *mask_ret, Bool big_p) { int npixels, iw, ih; @@ -187,12 +205,15 @@ xscreensaver_logo (Display *dpy, Window window, Colormap cmap, XImage *image; Pixmap p = 0; XWindowAttributes xgwa; + unsigned char *mask = 0; + XGetWindowAttributes (dpy, window, &xgwa); image = parse_xpm_data (dpy, xgwa.visual, xgwa.colormap, xgwa.depth, background_color, (big_p ? logo_180_xpm : logo_50_xpm), - &iw, &ih, &pixels, &npixels); + &iw, &ih, &pixels, &npixels, + (mask_ret ? &mask : 0)); if (image) { XGCValues gcv; @@ -202,6 +223,13 @@ xscreensaver_logo (Display *dpy, Window window, Colormap cmap, XPutImage (dpy, p, gc, image, 0, 0, 0, 0, iw, ih); XDestroyImage (image); XFreeGC (dpy, gc); + + if (mask_ret && mask) + { + *mask_ret = XCreatePixmapFromBitmapData (dpy, window, mask, + iw, ih, 1L, 0L, 1); + free (mask); + } } return p; } diff --git a/utils/resources.h b/utils/resources.h index 66147596..9e1f6ceb 100644 --- a/utils/resources.h +++ b/utils/resources.h @@ -25,6 +25,7 @@ extern Pixmap xscreensaver_logo (Display *dpy, Window window, Colormap cmap, unsigned long background_color, unsigned long **pixels_ret, int *npixels_ret, + Pixmap *mask_ret, Bool big_p); #endif /* __XSCREENSAVER_RESOURCES_H__ */ diff --git a/utils/sgivideo.c b/utils/sgivideo.c deleted file mode 100644 index 38b0c669..00000000 --- a/utils/sgivideo.c +++ /dev/null @@ -1,508 +0,0 @@ -/* xscreensaver, Copyright (c) 1997, 1998 Jamie Zawinski - * - * 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. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - */ - -/* This file contains code for grabbing a frame from one of the video inputs - on an SGI. It returns it on a Drawable where it can be hacked at will. - This code checks all available video devices for the first one with a - non-blank signal. - - It checks the deviced whose number comes from the `videoDevice' resource - first, then the default video device, then all the devices in order. - - The intensity of the video signal is increased by the value of the - `videoGain' resource (a float) defaulting to 2.2, since NTSC video tends - to appear kind of dim on computer screens. - - The video image is expanded to fit the window (while preserving the aspect - ratio.) This is done by simply replicating pixels, not dithering. That - turns out to look good enough most of the time. - - If the target window is not TrueColor, the grabbed image will be quantized - to fit. This also is done without dithering, but in this case, dithering - would help a lot, because it looks like crap. So use TrueColor if you care. - */ - -#include "utils.h" -#include "sgivideo.h" -#include "resources.h" -#include "visual.h" - -#ifdef HAVE_SGI_VIDEO /* whole file */ - -#include "usleep.h" - -#include - -#ifdef DEBUG -extern char *progname; -#endif /* DEBUG */ - - -# include - -static Bool dark_image_p(unsigned long *image, int width, int height); -static Bool install_video_frame(unsigned long *image, int width, int height, - Screen *screen, Visual *visual, Drawable dest); - -#ifdef DEBUG -static void -describe_input(const char *prefix, VLServer server, int camera) -{ - VLDevList dl; - int i, j; - - if (camera == VL_ANY) - { - printf("%s: %s VL_ANY\n", progname, prefix); - return; - } - - vlGetDeviceList(server, &dl); - for (i = 0; i < dl.numDevices; i++) - { - VLDevice *d = &dl.devices[i]; - for (j = 0; j < d->numNodes; j++) - if (d->nodes[j].number == camera) - { - printf("%s: %s %d, \"%s\"\n", progname, prefix, - d->nodes[j].number, - d->nodes[j].name); - return; - } - } - - /* else... */ - printf("%s: %s %d (???)\n", progname, prefix, camera); -} -#endif /* DEBUG */ - - -static Bool -grab_frame_1(Screen *screen, Visual *visual, Drawable dest, int camera) -{ - Bool status = False; - int width = 0; - int height = 0; - VLServer server = 0; - VLNode input = -1; - VLNode output = -1; - VLPath path = 0; - VLBuffer buffer = 0; - VLControlValue ctl; - VLInfoPtr info; - VLTransferDescriptor trans; - unsigned long *image = 0; - - server = vlOpenVideo (NULL); - if (!server) - { -#ifdef DEBUG - fprintf (stderr, "%s: unable to open video server\n", progname); -#endif /* DEBUG */ - goto DONE; - } - -#ifdef DEBUG - describe_input("trying device", server, camera); -#endif /* DEBUG */ - - input = vlGetNode (server, VL_SRC, VL_VIDEO, camera); - output = vlGetNode (server, VL_DRN, VL_MEM, VL_ANY); - - if (input == -1 || output == -1) - { -#ifdef DEBUG - fprintf (stderr, "%s: unable to get video I/O nodes: %d\n", - progname, vlErrno); -#endif /* DEBUG */ - goto DONE; - } - - path = vlCreatePath (server, VL_ANY, input, output); - if (path == -1) - { -#ifdef DEBUG - fprintf (stderr, "%s: unable to get video path: %d\n", - progname, vlErrno); -#endif /* DEBUG */ - goto DONE; - } - - if (vlSetupPaths (server, (VLPathList) &path, 1, VL_SHARE, VL_SHARE) == -1) - { -#ifdef DEBUG - fprintf (stderr, "%s: unable to set up video path: %d\n", - progname, vlErrno); -#endif /* DEBUG */ - goto DONE; - } - - ctl.intVal = VL_CAPTURE_INTERLEAVED; - if (vlSetControl (server, path, output, VL_CAP_TYPE, &ctl) == -1) - { -#ifdef DEBUG - fprintf (stderr, - "%s: unable to set video capture type to interleaved: %d\n", - progname, vlErrno); -#endif /* DEBUG */ - goto DONE; - } - - ctl.intVal = VL_PACKING_RGBA_8; - if (vlSetControl (server, path, output, VL_PACKING, &ctl) == -1) - { -#ifdef DEBUG - fprintf (stderr, "%s: unable to set video packing to RGB8: %d\n", - progname, vlErrno); -#endif /* DEBUG */ - goto DONE; - } - - buffer = vlCreateBuffer (server, path, output, 3); - if (!buffer) - { -#ifdef DEBUG - fprintf (stderr, "%s: unable to create video buffer: %d\n", - progname, vlErrno); -#endif /* DEBUG */ - goto DONE; - } - - vlRegisterBuffer (server, path, output, buffer); - - memset(&trans, 0, sizeof(trans)); - trans.trigger = VLTriggerImmediate; - trans.mode = VL_TRANSFER_MODE_DISCRETE; - trans.delay = 0; - trans.count = 1; - if (vlBeginTransfer (server, path, 1, &trans) == -1) - { -#ifdef DEBUG - fprintf (stderr, "%s: unable to begin video transfer: %d\n", - progname, vlErrno); -#endif /* DEBUG */ - goto DONE; - } - - - /* try to get a frame; don't try more than a zillion times. - I strongly suspect this isn't the best way to do this... - */ - { - int i; - for (i = 0; i < 1000; i++) - { - info = vlGetLatestValid (server, buffer); - if (info) break; - usleep(10000); /* 1/100th second (a bit more than half a field) */ - } - } - - if (!info) - { -#ifdef DEBUG - fprintf (stderr, "%s: unable to get video info: %d\n", - progname, vlErrno); -#endif /* DEBUG */ - goto DONE; - } - - image = vlGetActiveRegion (server, buffer, info); - if (!image) - { -#ifdef DEBUG - fprintf (stderr, "%s: unable to grab video frame: %d\n", - progname, vlErrno); -#endif /* DEBUG */ - goto DONE; - } - - if (vlGetControl (server, path, input, VL_SIZE, &ctl) != -1) - { - width = ctl.xyVal.x; - height = ctl.xyVal.y; - } - else - { -#ifdef DEBUG - fprintf (stderr, "%s: unable to get video image size: %d\n", - progname, vlErrno); -#endif /* DEBUG */ - goto DONE; - } - -#ifdef DEBUG - describe_input("read device", server, camera); -#endif /* DEBUG */ - - if (dark_image_p(image, width, height)) - goto DONE; - - status = install_video_frame(image, width, height, screen, visual, dest); - - DONE: - - /* I think `image' is freed as a result of destroying buffer. */ - - if (buffer) - vlDestroyBuffer(server, buffer); - if (path) - vlDestroyPath(server, path); - if (server) - vlCloseVideo (server); - - return status; -} - - -static Bool -dark_image_p(unsigned long *image, int width, int height) -{ - double max = 0.02; - double total = 0.0; - int i; - int pixels = (width * height); -#ifdef DEBUG - int mr = 0, mg = 0, mb = 0; -#endif /* DEBUG */ - for (i = pixels-1; i >= 0; i--) - { - unsigned long pixel = image[i]; - unsigned int r = (pixel & 0x0000FF); - unsigned int g = (pixel & 0x00FF00) >> 8; - unsigned int b = (pixel & 0xFF0000) >> 16; -#ifdef DEBUG - if (r > mr) mr = r; - if (g > mg) mg = g; - if (b > mb) mb = b; -#endif /* DEBUG */ - total += ((r * (0.3086 / 0xFF)) + /* gamma 1.0 intensity values */ - (g * (0.6094 / 0xFF)) + - (b * (0.0820 / 0xFF))); - } - total /= pixels; -#ifdef DEBUG - fprintf(stderr, "%s: %sdark %f (max rgb: %d %d %d)\n", progname, - (total < max ? "" : "not "), - total, mr, mg, mb); -#endif /* DEBUG */ - return (total < max); -} - - -Bool -grab_video_frame(Screen *screen, Visual *visual, Drawable dest) -{ - char *def_camera = get_string_resource("videoDevice", "Integer"); - if (def_camera && *def_camera) - { - int cam; - char c; - int ok = (1 == sscanf(def_camera, " %d %c", &cam, &c)); - free (def_camera); - if (ok && grab_frame_1(screen, visual, dest, cam)) - return True; - } - - if (grab_frame_1(screen, visual, dest, VL_ANY)) - return True; - else - { - int i; - VLServer server = vlOpenVideo (NULL); - - if (!server) return False; - - for (i = 0; i < 5; i++) /* if we get all black images, retry up to - five times. */ - { - VLDevList dl; - int j; - - j = vlGetDeviceList(server, &dl); - vlCloseVideo(server); - if (j < 0) return False; - - for (j = 0; j < dl.numDevices; j++) - { - VLDevice *d = &dl.devices[j]; - int k; - for (k = 0; k < d->numNodes; k++) - if (d->nodes[k].type == VL_SRC && - d->nodes[k].kind == VL_VIDEO) - if (grab_frame_1(screen, visual, dest, d->nodes[k].number)) - return True; - /* nothing yet? go around and try again... */ - } - } - } -#ifdef DEBUG - fprintf (stderr, "%s: images on all video feeds are too dark.\n", - progname); -#endif /* DEBUG */ - return False; -} - - -static Bool -install_video_frame(unsigned long *image, int width, int height, - Screen *screen, Visual *visual, Drawable dest) -{ - Display *dpy = DisplayOfScreen(screen); - int x, y; - unsigned int w, h, b, d; - Window root; - XGCValues gcv; - GC gc; - XImage *ximage = 0; - int image_depth; - Bool free_data = False; - int vblank_kludge = 3; /* lose the closed-captioning blips... */ - - double gain; - char c, *G = get_string_resource("videoGain", "Float"); - if (!G || (1 != sscanf (G, " %lf %c", &gain, &c))) - /* default to the usual NTSC gamma value. Is this the right thing to do? - (Yeah, "gain" isn't quite "gamma", but it's close enough...) */ - gain = 2.2; - if (G) free (G); - - XGetGeometry(dpy, dest, &root, &x, &y, &w, &h, &b, &d); - - gcv.function = GXcopy; - gcv.foreground = BlackPixelOfScreen(screen); - gc = XCreateGC (dpy, dest, GCFunction|GCForeground, &gcv); - - image_depth = visual_depth(screen, visual); - if (image_depth < 24) - image_depth = 24; /* We'll dither */ - - ximage = XCreateImage (dpy, visual, image_depth, ZPixmap, 0, (char *) image, - width, height, 8, 0); - XInitImage(ximage); - if (!ximage) - return False; - - if (gain > 0.0) /* Pump up the volume */ - { - unsigned char *end = (unsigned char *) (image + (width * height)); - unsigned char *s = (unsigned char *) image; - while (s < end) - { - unsigned int r = s[1] * gain; - unsigned int g = s[2] * gain; - unsigned int b = s[3] * gain; - s[1] = (r > 255 ? 255 : r); - s[2] = (g > 255 ? 255 : g); - s[3] = (b > 255 ? 255 : b); - s += 4; - } - } - - /* If the drawable is not of truecolor depth, we need to convert the - grabbed bits to match the depth by clipping off the less significant - bit-planes of each color component. - */ - if (d != 24 && d != 32) - { - int x, y; - /* We use the same ximage->data in both images -- that's ok, because - since we're reading from B and writing to A, and B uses more bytes - per pixel than A, the write pointer won't overrun the read pointer. - */ - XImage *ximage2 = XCreateImage (dpy, visual, d, ZPixmap, 0, - (char *) image, - width, height, 8, 0); - XInitImage(ximage2); - if (!ximage2) - { - XDestroyImage(ximage); - return False; - } - -#ifdef DEBUG - fprintf(stderr, "%s: converting from depth %d to depth %d\n", - progname, ximage->depth, ximage2->depth); -#endif /* DEBUG */ - - for (y = 0; y < ximage->height; y++) - for (x = 0; x < ximage->width; x++) - { - unsigned long pixel = XGetPixel(ximage, x, y); - unsigned int r = (pixel & 0x0000FF); - unsigned int g = (pixel & 0x00FF00) >> 8; - unsigned int b = (pixel & 0xFF0000) >> 16; - - if (d == 8) - pixel = ((r >> 5) | ((g >> 5) << 3) | ((b >> 6) << 6)); - else if (d == 12) - pixel = ((r >> 4) | ((g >> 4) << 4) | ((b >> 4) << 8)); - else if (d == 16) - pixel = ((r >> 3) | ((g >> 3) << 5) | ((b >> 3) << 10)); - else - abort(); - - XPutPixel(ximage2, x, y, pixel); - } - ximage->data = 0; - XDestroyImage(ximage); - ximage = ximage2; - } - - if (width < w && height < h) /* Stretch the image to fit the window. */ - { - double dw = (((double) w) / ((double) width)); - double dh = (((double) h) / ((double) height)); - double d = (dw > dh ? dh : dw); - int width2 = d * width; - int height2 = d * height; - int x, y; - XImage *ximage2 = XCreateImage (dpy, visual, ximage->depth, ZPixmap, - 0, NULL, - width2, height2, 8, 0); - if (!ximage2->data) - ximage2->data = (char *) malloc(width2 * height2 * 4); - free_data = True; - XInitImage(ximage2); -#ifdef DEBUG - fprintf(stderr, "%s: stretching video image by %f (%d %d -> %d %d)\n", - progname, d, width, height, width2, height2); -#endif /* DEBUG */ - for (y = 0; y < height2; y++) - { - int y2 = (int) (y / d); - for (x = 0; x < width2; x++) - XPutPixel(ximage2, x, y, XGetPixel(ximage, (int) (x / d), y2)); - } - ximage->data = 0; - XDestroyImage(ximage); - ximage = ximage2; - width = width2; - height = height2; - vblank_kludge *= d; - } - - XFillRectangle(dpy, dest, gc, 0, 0, w, h); - XPutImage(dpy, dest, gc, ximage, 0, vblank_kludge, - (w - width) / 2, - (h - height) / 2, - width, height - vblank_kludge); - XSync(dpy, False); - - if (free_data) - free(ximage->data); - ximage->data = 0; - XDestroyImage(ximage); - XFreeGC (dpy, gc); - return True; -} - -#endif /* HAVE_SGI_VIDEO */ diff --git a/utils/version.h b/utils/version.h index c51e6646..4de0984d 100644 --- a/utils/version.h +++ b/utils/version.h @@ -1,2 +1,2 @@ static const char screensaver_id[] = - "@(#)xscreensaver 3.31 (28-Mar-2001), by Jamie Zawinski (jwz@jwz.org)"; + "@(#)xscreensaver 3.32 (14-Apr-2001), by Jamie Zawinski (jwz@jwz.org)"; diff --git a/xscreensaver.lsm b/xscreensaver.lsm index b0bcfd3b..debc1bae 100644 --- a/xscreensaver.lsm +++ b/xscreensaver.lsm @@ -1,7 +1,7 @@ Begin3 Title: xscreensaver -Version: 3.31 -Entered-date: 29MAR01 +Version: 3.32 +Entered-date: 15APR01 Description: A modular screen saver and locker for the X Window System. Highly customizable: allows the use of any program that can draw on the root window as a display mode. @@ -10,16 +10,16 @@ Keywords: screen saver, screen lock, lock, xlock, X11 Author: jwz@jwz.org (Jamie Zawinski) Maintained-by: jwz@jwz.org (Jamie Zawinski) Primary-site: http://www.jwz.org/xscreensaver/ - 1581K xscreensaver-3.31.tar.gz - 46K xscreensaver.README + 1602K xscreensaver-3.32.tar.gz + 47K xscreensaver.README 1K xscreensaver.lsm Alternate-site: sunsite.unc.edu /pub/Linux/X11/screensavers/ - 1581K xscreensaver-3.31.tar.gz - 46K xscreensaver.README + 1602K xscreensaver-3.32.tar.gz + 47K xscreensaver.README 1K xscreensaver.lsm Alternate-site: ftp.x.org /contrib/applications/ - 1581K xscreensaver-3.31.tar.gz - 46K xscreensaver.README + 1602K xscreensaver-3.32.tar.gz + 47K xscreensaver.README 1K xscreensaver.lsm Platforms: Linux, Irix, SunOS, Solaris, HPUX, AIX, FreeBSD, NetBSD, BSDI, SCO, OSF1, Ultrix, VMS. diff --git a/xscreensaver.spec b/xscreensaver.spec index bc8a81b1..fd75dbe0 100644 --- a/xscreensaver.spec +++ b/xscreensaver.spec @@ -1,5 +1,5 @@ %define name xscreensaver -%define version 3.31 +%define version 3.32 %define release 1 %define serial 1 %define x11_prefix /usr/X11R6 -- 2.30.2