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 '' ; \
============
+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.
*/
#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
*/
#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.
*/
--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."
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
;;
*-dec-* )
- echo "$ac_t""DEC: adding -std1" 1>&6
+ echo "$ac_t""DEC: adding -std1 -ieee" 1>&6
CC="$CC -std1"
;;
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 <<EOF
-#line 1548 "configure"
+#line 1555 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
#include <float.h>
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*
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
-#line 1573 "configure"
+#line 1580 "configure"
#include "confdefs.h"
#include <string.h>
EOF
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
-#line 1591 "configure"
+#line 1598 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
:
else
cat > conftest.$ac_ext <<EOF
-#line 1612 "configure"
+#line 1619 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
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
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
-#line 1655 "configure"
+#line 1662 "configure"
#include "confdefs.h"
#include <$ac_hdr>
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*
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 <<EOF
-#line 1692 "configure"
+#line 1699 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
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 <<EOF
-#line 1725 "configure"
+#line 1732 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
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 <<EOF
-#line 1758 "configure"
+#line 1765 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
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 <<EOF
-#line 1791 "configure"
+#line 1798 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
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
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 <<EOF
-#line 1832 "configure"
+#line 1839 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
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
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 <<EOF
-#line 1867 "configure"
+#line 1874 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
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
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 <<EOF
-#line 1913 "configure"
+#line 1920 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
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
# 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
ac_save_LIBS="$LIBS"
LIBS="-ldir $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1954 "configure"
+#line 1961 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
opendir()
; return 0; }
EOF
-if { (eval echo configure:1965: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lx $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1995 "configure"
+#line 2002 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
opendir()
; return 0; }
EOF
-if { (eval echo configure:2006: \"$ac_link\") 1>&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
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 <<EOF
-#line 2034 "configure"
+#line 2041 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <sys/time.h>
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
cat conftest.$ac_ext >&5
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 2051 "configure"
+#line 2058 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <sys/time.h>
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
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 <<EOF
-#line 2103 "configure"
+#line 2110 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:2126: \"$ac_link\") 1>&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
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 <<EOF
-#line 2159 "configure"
+#line 2166 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:2182: \"$ac_link\") 1>&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
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 <<EOF
-#line 2212 "configure"
+#line 2219 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdio.h>
; 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
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 <<EOF
-#line 2277 "configure"
+#line 2284 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdio.h>
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
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
-#line 2340 "configure"
+#line 2347 "configure"
#include "confdefs.h"
#include <$ac_hdr>
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*
# 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
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
# 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
# First, try using that file with no special directory specified.
cat > conftest.$ac_ext <<EOF
-#line 2499 "configure"
+#line 2506 "configure"
#include "confdefs.h"
#include <$x_direct_test_include>
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*
ac_save_LIBS="$LIBS"
LIBS="-l$x_direct_test_library $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2573 "configure"
+#line 2580 "configure"
#include "confdefs.h"
int main() {
${x_direct_test_function}()
; return 0; }
EOF
-if { (eval echo configure:2580: \"$ac_link\") 1>&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.
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 <<EOF
-#line 2689 "configure"
+#line 2696 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:2696: \"$ac_link\") 1>&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
else
LIBS="$ac_xsave_LIBS -R $x_libraries"
cat > conftest.$ac_ext <<EOF
-#line 2712 "configure"
+#line 2719 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:2719: \"$ac_link\") 1>&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
# 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
ac_save_LIBS="$LIBS"
LIBS="-ldnet $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2759 "configure"
+#line 2766 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
dnet_ntoa()
; return 0; }
EOF
-if { (eval echo configure:2770: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-ldnet_stub $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2800 "configure"
+#line 2807 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
dnet_ntoa()
; return 0; }
EOF
-if { (eval echo configure:2811: \"$ac_link\") 1>&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
# 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 <<EOF
-#line 2845 "configure"
+#line 2852 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gethostbyname(); below. */
; return 0; }
EOF
-if { (eval echo configure:2868: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2897 "configure"
+#line 2904 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:2908: \"$ac_link\") 1>&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
# -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 <<EOF
-#line 2943 "configure"
+#line 2950 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char connect(); below. */
; return 0; }
EOF
-if { (eval echo configure:2966: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2995 "configure"
+#line 3002 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
connect()
; return 0; }
EOF
-if { (eval echo configure:3006: \"$ac_link\") 1>&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
# 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 <<EOF
-#line 3035 "configure"
+#line 3042 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char remove(); below. */
; return 0; }
EOF
-if { (eval echo configure:3058: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lposix $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3087 "configure"
+#line 3094 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
remove()
; return 0; }
EOF
-if { (eval echo configure:3098: \"$ac_link\") 1>&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
# 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 <<EOF
-#line 3127 "configure"
+#line 3134 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char shmat(); below. */
; return 0; }
EOF
-if { (eval echo configure:3150: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lipc $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3179 "configure"
+#line 3186 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
shmat()
; return 0; }
EOF
-if { (eval echo configure:3190: \"$ac_link\") 1>&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
# 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
ac_save_LIBS="$LIBS"
LIBS="-lICE $X_EXTRA_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3231 "configure"
+#line 3238 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
IceConnectionNumber()
; return 0; }
EOF
-if { (eval echo configure:3242: \"$ac_link\") 1>&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
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
# 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
ac_save_LIBS="$LIBS"
LIBS="-lgen $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3480 "configure"
+#line 3487 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
regcmp()
; return 0; }
EOF
-if { (eval echo configure:3491: \"$ac_link\") 1>&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
;;
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
fi
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
cat > conftest.$ac_ext <<EOF
-#line 3526 "configure"
+#line 3533 "configure"
#include "confdefs.h"
#include <X11/Xlib.h>
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
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
-#line 3576 "configure"
+#line 3583 "configure"
#include "confdefs.h"
#include <X11/Xmu/Error.h>
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*
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
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
# with X libraries because we know it's SunOS.
LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm"
cat > conftest.$ac_ext <<EOF
-#line 3645 "configure"
+#line 3650 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:3652: \"$ac_link\") 1>&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
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 <<EOF
-#line 3675 "configure"
+#line 3680 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:3682: \"$ac_link\") 1>&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
/*)
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"
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"
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
-#line 3813 "configure"
+#line 3818 "configure"
#include "confdefs.h"
#include <X11/extensions/XScreenSaver.h>
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*
/*)
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"
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"
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
-#line 3923 "configure"
+#line 3928 "configure"
#include "confdefs.h"
#include <X11/extensions/scrnsaver.h>
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*
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
ac_save_LIBS="$LIBS"
LIBS="-lXext -lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3981 "configure"
+#line 3986 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XScreenSaverRegister()
; return 0; }
EOF
-if { (eval echo configure:3992: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lXExExt -lX11 -lXext -lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4047 "configure"
+#line 4052 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XScreenSaverRegister()
; return 0; }
EOF
-if { (eval echo configure:4058: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lXss -lX11 -lXext -lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4116 "configure"
+#line 4121 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XScreenSaverRegister()
; return 0; }
EOF
-if { (eval echo configure:4127: \"$ac_link\") 1>&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
/*)
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"
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"
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
-#line 4241 "configure"
+#line 4246 "configure"
#include "confdefs.h"
#include <X11/extensions/xidle.h>
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*
/*)
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"
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"
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
-#line 4352 "configure"
+#line 4357 "configure"
#include "confdefs.h"
#include <X11/extensions/XSGIvc.h>
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*
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
ac_save_LIBS="$LIBS"
LIBS="-lXsgivc -lXext -lX11 $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4409 "configure"
+#line 4414 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XSGIvcQueryGammaMap()
; return 0; }
EOF
-if { (eval echo configure:4420: \"$ac_link\") 1>&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
/*)
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"
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"
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
-#line 4535 "configure"
+#line 4540 "configure"
#include "confdefs.h"
#include <X11/extensions/dpms.h>
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*
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
ac_save_LIBS="$LIBS"
LIBS="-lXext -lXext -lX11 $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4594 "configure"
+#line 4599 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
DPMSInfo()
; return 0; }
EOF
-if { (eval echo configure:4605: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lXdpms -lXext -lX11 $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4659 "configure"
+#line 4664 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
DPMSInfo()
; return 0; }
EOF
-if { (eval echo configure:4670: \"$ac_link\") 1>&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
###############################################################################
#
-# Check for the XF86VMODE server extension.
+# Check for the XF86VMODE server extension (for virtual screens.)
#
###############################################################################
/*)
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"
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"
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
-#line 4787 "configure"
+#line 4792 "configure"
#include "confdefs.h"
#include <X11/extensions/xf86vmode.h>
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*
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
ac_save_LIBS="$LIBS"
LIBS="-lXxf86vm -lXext -lX11 $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4844 "configure"
+#line 4849 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XF86VidModeGetViewPort()
; return 0; }
EOF
-if { (eval echo configure:4855: \"$ac_link\") 1>&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
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
+#line 4978 "configure"
+#include "confdefs.h"
+#include <X11/extensions/xf86vmode.h>
+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 <<EOF
+#line 5036 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char XF86VidModeSetGamma();
+
+int main() {
+XF86VidModeSetGamma()
+; return 0; }
+EOF
+if { (eval echo configure:5047: \"$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
+ 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.
fi
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
cat > conftest.$ac_ext <<EOF
-#line 4909 "configure"
+#line 5106 "configure"
#include "confdefs.h"
#include <X11/XHPlib.h>
EOF
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
/*)
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"
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"
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
fi
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
cat > conftest.$ac_ext <<EOF
-#line 5127 "configure"
+#line 5324 "configure"
#include "confdefs.h"
#include <security/pam_appl.h>
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
# 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
ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5167 "configure"
+#line 5364 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
dlopen()
; return 0; }
EOF
-if { (eval echo configure:5178: \"$ac_link\") 1>&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
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 <<EOF
-#line 5205 "configure"
+#line 5402 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <stdlib.h>
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
cat conftest.$ac_ext >&5
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 5223 "configure"
+#line 5420 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <stdlib.h>
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
/*)
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"
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"
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
fi
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
cat > conftest.$ac_ext <<EOF
-#line 5337 "configure"
+#line 5534 "configure"
#include "confdefs.h"
#include <krb.h>
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
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
fi
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
cat > conftest.$ac_ext <<EOF
-#line 5370 "configure"
+#line 5567 "configure"
#include "confdefs.h"
#include <kerberosIV/krb.h>
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
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 <<EOF
-#line 5429 "configure"
+#line 5626 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char res_search(); below. */
; return 0; }
EOF
-if { (eval echo configure:5452: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lresolv $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5478 "configure"
+#line 5675 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
res_search()
; return 0; }
EOF
-if { (eval echo configure:5489: \"$ac_link\") 1>&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
/*)
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"
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"
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
fi
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
cat > conftest.$ac_ext <<EOF
-#line 5603 "configure"
+#line 5800 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <unistd.h>
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
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
fi
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
cat > conftest.$ac_ext <<EOF
-#line 5657 "configure"
+#line 5854 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <unistd.h>
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
# 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
ac_save_LIBS="$LIBS"
LIBS="-lprot -lx $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5706 "configure"
+#line 5903 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
getprpwnam()
; return 0; }
EOF
-if { (eval echo configure:5717: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lsecurity $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5744 "configure"
+#line 5941 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
getprpwnam()
; return 0; }
EOF
-if { (eval echo configure:5755: \"$ac_link\") 1>&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
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
fi
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
cat > conftest.$ac_ext <<EOF
-#line 5799 "configure"
+#line 5996 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <unistd.h>
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
# 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
ac_save_LIBS="$LIBS"
LIBS="-lsec $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5841 "configure"
+#line 6038 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
bigcrypt()
; return 0; }
EOF
-if { (eval echo configure:5852: \"$ac_link\") 1>&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
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
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
fi
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
cat > conftest.$ac_ext <<EOF
-#line 5927 "configure"
+#line 6124 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <unistd.h>
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
# 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
ac_save_LIBS="$LIBS"
LIBS="-lc $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5968 "configure"
+#line 6165 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
getspnam()
; return 0; }
EOF
-if { (eval echo configure:5979: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lgen $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6009 "configure"
+#line 6206 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
getspnam()
; return 0; }
EOF
-if { (eval echo configure:6020: \"$ac_link\") 1>&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
# 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
ac_save_LIBS="$LIBS"
LIBS="-lc $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6064 "configure"
+#line 6261 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
crypt()
; return 0; }
EOF
-if { (eval echo configure:6075: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lcrypt $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6105 "configure"
+#line 6302 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
crypt()
; return 0; }
EOF
-if { (eval echo configure:6116: \"$ac_link\") 1>&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
/*)
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"
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"
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
-#line 6254 "configure"
+#line 6451 "configure"
#include "confdefs.h"
#include <Xm/Xm.h>
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*
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
-#line 6303 "configure"
+#line 6500 "configure"
#include "confdefs.h"
#include <Xm/ComboBox.h>
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*
/*)
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"
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"
/*)
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"
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"
# 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
# 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
# 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
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
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
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
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
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
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
fi
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
cat > conftest.$ac_ext <<EOF
-#line 6783 "configure"
+#line 6980 "configure"
#include "confdefs.h"
#include <Xm/Xm.h>
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
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
ac_cv_lesstif_version_string=unknown
else
cat > conftest.$ac_ext <<EOF
-#line 6830 "configure"
+#line 7027 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <Xm/Xm.h>
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/ .*//'`
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
ac_cv_motif_version_string=unknown
else
cat > conftest.$ac_ext <<EOF
-#line 6888 "configure"
+#line 7085 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <Xm/Xm.h>
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/ .*//'`
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
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
ac_save_LIBS="$LIBS"
LIBS="-lXp -lX11 -lXext -lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6995 "configure"
+#line 7192 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XpQueryExtension()
; return 0; }
EOF
-if { (eval echo configure:7006: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lXintl -lX11 -lXext -lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7068 "configure"
+#line 7265 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
_Xsetlocale()
; return 0; }
EOF
-if { (eval echo configure:7079: \"$ac_link\") 1>&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
/*)
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"
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"
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
-#line 7187 "configure"
+#line 7384 "configure"
#include "confdefs.h"
#include <GL/gl.h>
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*
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
-#line 7228 "configure"
+#line 7425 "configure"
#include "confdefs.h"
#include <GL/glx.h>
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*
# 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
fi
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
cat > conftest.$ac_ext <<EOF
-#line 7277 "configure"
+#line 7474 "configure"
#include "confdefs.h"
#include <GL/glx.h>
EOF
#
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
ac_save_LIBS="$LIBS"
LIBS="-lpthread $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7314 "configure"
+#line 7511 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
pthread_create()
; return 0; }
EOF
-if { (eval echo configure:7325: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lMesaGL -lMesaGLU $GL_LIBS -lX11 -lXext -lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7380 "configure"
+#line 7577 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
glXCreateContext()
; return 0; }
EOF
-if { (eval echo configure:7391: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lGL -lGLU $GL_LIBS -lX11 -lXext -lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7445 "configure"
+#line 7642 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
glXCreateContext()
; return 0; }
EOF
-if { (eval echo configure:7456: \"$ac_link\") 1>&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
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 <<EOF
-#line 7519 "configure"
+#line 7716 "configure"
#include "confdefs.h"
#include <GL/gl.h>
#ifndef MESA_MAJOR_VERSION
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
ac_save_LIBS="$LIBS"
LIBS="-l$gl_lib_1 $GL_LIBS -lX11 -lXext -lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7598 "configure"
+#line 7795 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
glBindTexture()
; return 0; }
EOF
-if { (eval echo configure:7609: \"$ac_link\") 1>&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
/*)
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"
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"
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
-#line 7721 "configure"
+#line 7918 "configure"
#include "confdefs.h"
#include <GL/gle.h>
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*
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
-#line 7764 "configure"
+#line 7961 "configure"
#include "confdefs.h"
#include <GL/gutil.h>
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*
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
-#line 7805 "configure"
+#line 8002 "configure"
#include "confdefs.h"
#include <GL/tube.h>
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*
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
ac_save_LIBS="$LIBS"
LIBS="-lgle $GL_LIBS -lX11 -lXext -lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7864 "configure"
+#line 8061 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
gleCreateGC()
; return 0; }
EOF
-if { (eval echo configure:7875: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lgle $GL_LIBS -lX11 -lXext -lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7943 "configure"
+#line 8140 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
uview_direction()
; return 0; }
EOF
-if { (eval echo configure:7954: \"$ac_link\") 1>&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
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
ac_save_LIBS="$LIBS"
LIBS="-lmatrix $GL_LIBS -lX11 -lXext -lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8007 "configure"
+#line 8204 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
uview_direction_d()
; return 0; }
EOF
-if { (eval echo configure:8018: \"$ac_link\") 1>&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
/*)
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"
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"
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
-#line 8139 "configure"
+#line 8336 "configure"
#include "confdefs.h"
#include <X11/xpm.h>
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*
/*)
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"
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"
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
-#line 8260 "configure"
+#line 8457 "configure"
#include "confdefs.h"
#include <X11/extensions/XShm.h>
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*
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
-#line 8304 "configure"
+#line 8501 "configure"
#include "confdefs.h"
#include <sys/ipc.h>
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*
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
-#line 8349 "configure"
+#line 8546 "configure"
#include "confdefs.h"
#include <sys/shm.h>
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*
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
ac_save_LIBS="$LIBS"
LIBS="-lXextSam -lX11 -lXext -lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8414 "configure"
+#line 8611 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
XShmQueryExtension()
; return 0; }
EOF
-if { (eval echo configure:8425: \"$ac_link\") 1>&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
/*)
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"
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"
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
-#line 8541 "configure"
+#line 8738 "configure"
#include "confdefs.h"
#include <X11/extensions/Xdbe.h>
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*
/*)
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"
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"
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
-#line 8657 "configure"
+#line 8854 "configure"
#include "confdefs.h"
#include <X11/extensions/readdisplay.h>
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*
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
-#line 8765 "configure"
-#include "confdefs.h"
-#include <dmedia/vl.h>
-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 <<EOF
-#line 8803 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char vlOpenVideo();
-
-int main() {
-vlOpenVideo()
-; return 0; }
-EOF
-if { (eval echo configure:8814: \"$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
- 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.
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
# 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
# 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
# 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
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.
#
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.
# 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
# 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
/*)
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"
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"
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
-
APPDEFAULTS=$ac_x_app_defaults
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
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,"
# 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
;;
*-dec-* )
- AC_MSG_RESULT(DEC: adding -std1)
+ AC_MSG_RESULT(DEC: adding -std1 -ieee)
CC="$CC -std1"
;;
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)
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
###############################################################################
#
-# Check for the XF86VMODE server extension.
+# Check for the XF86VMODE server extension (for virtual screens.)
#
###############################################################################
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.
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.
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
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)
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,"
# 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
DEFS = @DEFS@
DEFS2 = $(DEFS) -DDEFAULT_PATH_PREFIX='"@HACKDIR@"'
LIBS = @LIBS@
+PERL = @PERL@
DEPEND = @DEPEND@
DEPEND_FLAGS = @DEPEND_FLAGS@
X_LIBS = @X_LIBS@
X_PRE_LIBS = @X_PRE_LIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
+XMU_LIBS = @XMU_LIBS@
# Note:
#
#
# 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@
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@
$(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 \
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 \
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)
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 \
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 \
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
$(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
$(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) | \
( \
$(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) ; \
$(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) \
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) \
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
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
! 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/
*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
"*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",
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);
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;
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;
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");
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);
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);
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);
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);
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);
#endif /* HAVE_UNAME */
#include <stdio.h>
+#include <sys/stat.h>
#include <X11/Xproto.h> /* for CARD32 */
#include <X11/Xatom.h> /* for XA_INTEGER */
}
+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)
{
*(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))))
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");
# undef SECONDS
# undef MINUTES
# undef INTEGER
+# undef PATHNAME
# undef CHECKBOX
# define COPY(field) \
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);
}
}
+
+
+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));
+}
+
+
\f
/* Populating the various widgets
*/
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);
}
}
+#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;
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.
*/
}
}
+#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,
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
"dpmsStandby",
"dpmsSuspend",
"dpmsOff",
+ "grabDesktopImages",
+ "grabVideoFrames",
+ "chooseRandomImages",
+ "imageDirectory",
"",
"programs",
"",
fprintf(out, "%s:", key);
col = strlen(key) + 1;
+ if (strlen(key) > 14)
+ col = tab_to (out, col, 20);
+
while (1)
{
if (!programs_p)
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;
"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");
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");
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;
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);
--- /dev/null
+/* test-fade.c --- playing with colormap and/or gamma fading.
+ * xscreensaver, Copyright (c) 2001 Jamie Zawinski <jwz@jwz.org>
+ *
+ * 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 <stdlib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#include <stdio.h>
+
+#include <X11/Intrinsic.h>
+#include "xscreensaver.h"
+#include "fade.h"
+
+#ifdef HAVE_SGI_VC_EXTENSION
+# include <X11/extensions/XSGIvc.h>
+#endif
+#ifdef HAVE_XF86VMODE_GAMMA
+# include <X11/extensions/xf86vmode.h>
+#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);
+ }
+}
.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
<type>GTK_WINDOW_TOPLEVEL</type>
<position>GTK_WIN_POS_NONE</position>
<modal>False</modal>
- <default_width>600</default_width>
- <default_height>400</default_height>
<allow_shrink>True</allow_shrink>
<allow_grow>True</allow_grow>
<auto_shrink>False</auto_shrink>
<widget>
<class>GtkTable</class>
<name>options_table</name>
- <border_width>10</border_width>
- <rows>2</rows>
+ <rows>1</rows>
<columns>2</columns>
<homogeneous>True</homogeneous>
- <row_spacing>2</row_spacing>
+ <row_spacing>0</row_spacing>
<column_spacing>0</column_spacing>
<child>
<padding>0</padding>
</child>
<widget>
- <class>GtkFrame</class>
- <name>blanking_frame</name>
- <border_width>10</border_width>
- <label>Blanking and Locking:</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+ <class>GtkTable</class>
+ <name>options_table_2</name>
+ <rows>2</rows>
+ <columns>1</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>0</row_spacing>
+ <column_spacing>0</column_spacing>
<child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>0</xpad>
</child>
<widget>
- <class>GtkTable</class>
- <name>blanking_table</name>
+ <class>GtkFrame</class>
+ <name>dpms_frame</name>
<border_width>10</border_width>
- <rows>5</rows>
- <columns>3</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>2</row_spacing>
- <column_spacing>10</column_spacing>
+ <label>Display Power Management:</label>
+ <label_xalign>0</label_xalign>
+ <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
<widget>
- <class>GtkEntry</class>
- <name>lock_text</name>
- <tooltip>How long after the screen saver has activated until a password will be required (if `Require Password' is also set.)</tooltip>
- <can_focus>True</can_focus>
- <signal>
- <name>activate</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
- </signal>
- <signal>
- <name>focus_out_event</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
- </signal>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>8</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>4</top_attach>
- <bottom_attach>5</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
+ <class>GtkTable</class>
+ <name>dpms_table</name>
+ <border_width>10</border_width>
+ <rows>4</rows>
+ <columns>3</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>2</row_spacing>
+ <column_spacing>10</column_spacing>
- <widget>
- <class>GtkEntry</class>
- <name>cycle_text</name>
- <tooltip>How long each demo will be run before moving on to another.</tooltip>
- <can_focus>True</can_focus>
- <signal>
- <name>activate</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
- </signal>
- <signal>
- <name>focus_out_event</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
- </signal>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>8</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
+ <widget>
+ <class>GtkEntry</class>
+ <name>dpms_off_text</name>
+ <tooltip>How long until the monitor powers down (if Power Management is enabled).</tooltip>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>activate</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
+ </signal>
+ <signal>
+ <name>focus_out_event</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
+ </signal>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>8</text_max_length>
+ <text></text>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>3</top_attach>
+ <bottom_attach>4</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
- <widget>
- <class>GtkEntry</class>
- <name>timeout_text</name>
- <tooltip>How long until the screen saver activates and begins running demos.</tooltip>
- <can_focus>True</can_focus>
- <signal>
- <name>activate</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:28:10 GMT</last_modification_time>
- </signal>
- <signal>
- <name>focus_out_event</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:34:26 GMT</last_modification_time>
- </signal>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>8</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
+ <widget>
+ <class>GtkEntry</class>
+ <name>dpms_suspend_text</name>
+ <tooltip>How long until the monitor goes into power-saving mode (if Power Management is enabled).</tooltip>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>activate</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
+ </signal>
+ <signal>
+ <name>focus_out_event</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
+ </signal>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>8</text_max_length>
+ <text></text>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkEntry</class>
+ <name>dpms_standby_text</name>
+ <tooltip>How long before the monitor goes completely black (if Power Management is enabled).</tooltip>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>activate</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
+ </signal>
+ <signal>
+ <name>focus_out_event</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
+ </signal>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>8</text_max_length>
+ <text></text>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>dpms_standby_label</name>
+ <label>Standby After:</label>
+ <justify>GTK_JUSTIFY_RIGHT</justify>
+ <wrap>False</wrap>
+ <xalign>1</xalign>
+ <yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
- <widget>
- <class>GtkLabel</class>
- <name>timeout_label</name>
- <label>Blank After:</label>
- <justify>GTK_JUSTIFY_RIGHT</justify>
- <wrap>False</wrap>
- <xalign>1</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
+ <widget>
+ <class>GtkLabel</class>
+ <name>dpms_off_label</name>
+ <label>Off After:</label>
+ <justify>GTK_JUSTIFY_RIGHT</justify>
+ <wrap>False</wrap>
+ <xalign>1</xalign>
+ <yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>3</top_attach>
+ <bottom_attach>4</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
- <widget>
- <class>GtkLabel</class>
- <name>cycle_label</name>
- <label>Cycle After:</label>
- <justify>GTK_JUSTIFY_RIGHT</justify>
- <wrap>False</wrap>
- <xalign>1</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
+ <widget>
+ <class>GtkLabel</class>
+ <name>dpms_suspend_label</name>
+ <label>Suspend After:</label>
+ <justify>GTK_JUSTIFY_RIGHT</justify>
+ <wrap>False</wrap>
+ <xalign>1</xalign>
+ <yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
- <widget>
- <class>GtkLabel</class>
- <name>lock_label</name>
- <label>Lock After:</label>
- <justify>GTK_JUSTIFY_RIGHT</justify>
- <wrap>False</wrap>
- <xalign>1</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>4</top_attach>
- <bottom_attach>5</bottom_attach>
+ <widget>
+ <class>GtkLabel</class>
+ <name>dpms_dummy</name>
+ <label></label>
+ <justify>GTK_JUSTIFY_LEFT</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
+ <child>
+ <left_attach>2</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>3</top_attach>
+ <bottom_attach>4</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkEventBox</class>
+ <name>dpms_button_eventbox</name>
+ <tooltip>Whether the monitor should be powered down after a while.</tooltip>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>dpms_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>toggled</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:33:01 GMT</last_modification_time>
+ </signal>
+ <label>Power Management Enabled</label>
+ <active>True</active>
+ <draw_indicator>True</draw_indicator>
+ </widget>
+ </widget>
</widget>
+ </widget>
- <widget>
- <class>GtkLabel</class>
- <name>blanking_dummy</name>
- <label></label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
+ <widget>
+ <class>GtkFrame</class>
+ <name>cmap_frame</name>
+ <border_width>10</border_width>
+ <label>Colormaps:</label>
+ <label_xalign>0</label_xalign>
+ <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</right_attach>
- <top_attach>4</top_attach>
- <bottom_attach>5</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
<widget>
- <class>GtkHSeparator</class>
- <name>blanking_hr</name>
- <child>
- <left_attach>0</left_attach>
- <right_attach>3</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
+ <class>GtkTable</class>
+ <name>cmap_table</name>
+ <border_width>10</border_width>
+ <rows>5</rows>
+ <columns>3</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>2</row_spacing>
+ <column_spacing>10</column_spacing>
+
+ <widget>
+ <class>GtkEntry</class>
+ <name>fade_text</name>
+ <tooltip>How long it should take for the screen to fade in and out.</tooltip>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>activate</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
+ </signal>
+ <signal>
+ <name>focus_out_event</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
+ </signal>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>8</text_max_length>
+ <text></text>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>4</top_attach>
+ <bottom_attach>5</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>cmap_dummy</name>
+ <label></label>
+ <justify>GTK_JUSTIFY_LEFT</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
+ <child>
+ <left_attach>2</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>4</top_attach>
+ <bottom_attach>5</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
- <widget>
- <class>GtkEventBox</class>
- <name>lock_button_eventbox</name>
- <tooltip>Whether a password should be required to unblank the screen.</tooltip>
- <child>
- <left_attach>0</left_attach>
- <right_attach>3</right_attach>
- <top_attach>3</top_attach>
- <bottom_attach>4</bottom_attach>
+ <widget>
+ <class>GtkLabel</class>
+ <name>fade_label</name>
+ <label>Fade Duration:</label>
+ <justify>GTK_JUSTIFY_RIGHT</justify>
+ <wrap>False</wrap>
+ <xalign>1</xalign>
+ <yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>4</top_attach>
+ <bottom_attach>5</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
<widget>
- <class>GtkCheckButton</class>
- <name>lock_button</name>
- <can_focus>True</can_focus>
- <signal>
- <name>toggled</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:31:53 GMT</last_modification_time>
- </signal>
- <label>Require Password</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
+ <class>GtkEventBox</class>
+ <name>install_button_eventbox</name>
+ <tooltip>Whether to install a private colormap when running in 8-bit mode on the default Visual.</tooltip>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>install_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>toggled</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:32:25 GMT</last_modification_time>
+ </signal>
+ <label>Install Colormap</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkEventBox</class>
+ <name>fade_button_eventbox</name>
+ <tooltip>Whether the screen should slowly fade to black when the screen saver activates.</tooltip>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>fade_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>toggled</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:32:39 GMT</last_modification_time>
+ </signal>
+ <label>Fade To Black When Blanking</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkEventBox</class>
+ <name>unfade_button_eventbox</name>
+ <tooltip>Whether the screen should slowly fade in from black when the screen saver deactivates.</tooltip>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>3</top_attach>
+ <bottom_attach>4</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>unfade_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>toggled</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:32:51 GMT</last_modification_time>
+ </signal>
+ <label>Fade From Black When Unblanking</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkHSeparator</class>
+ <name>cmap_hr</name>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>2</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
</widget>
</widget>
</widget>
</widget>
<widget>
- <class>GtkFrame</class>
- <name>dpms_frame</name>
- <border_width>10</border_width>
- <label>Display Power Management:</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+ <class>GtkTable</class>
+ <name>options_table_1</name>
+ <rows>3</rows>
+ <columns>1</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>0</row_spacing>
+ <column_spacing>0</column_spacing>
<child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
</child>
<widget>
- <class>GtkTable</class>
- <name>dpms_table</name>
+ <class>GtkFrame</class>
+ <name>grab_frame</name>
<border_width>10</border_width>
- <rows>4</rows>
- <columns>3</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>2</row_spacing>
- <column_spacing>10</column_spacing>
-
- <widget>
- <class>GtkEntry</class>
- <name>dpms_off_text</name>
- <tooltip>How long until the monitor powers down (if Power Management is enabled).</tooltip>
- <can_focus>True</can_focus>
- <signal>
- <name>activate</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
- </signal>
- <signal>
- <name>focus_out_event</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
- </signal>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>8</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>3</top_attach>
- <bottom_attach>4</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>dpms_suspend_text</name>
- <tooltip>How long until the monitor goes into power-saving mode (if Power Management is enabled).</tooltip>
- <can_focus>True</can_focus>
- <signal>
- <name>activate</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
- </signal>
- <signal>
- <name>focus_out_event</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
- </signal>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>8</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>dpms_standby_text</name>
- <tooltip>How long before the monitor goes completely black (if Power Management is enabled).</tooltip>
- <can_focus>True</can_focus>
- <signal>
- <name>activate</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
- </signal>
- <signal>
- <name>focus_out_event</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
- </signal>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>8</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>dpms_standby_label</name>
- <label>Standby After:</label>
- <justify>GTK_JUSTIFY_RIGHT</justify>
- <wrap>False</wrap>
- <xalign>1</xalign>
- <yalign>0.5</yalign>
+ <label>Image Manipulation:</label>
+ <label_xalign>0</label_xalign>
+ <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
<widget>
- <class>GtkLabel</class>
- <name>dpms_off_label</name>
- <label>Off After:</label>
- <justify>GTK_JUSTIFY_RIGHT</justify>
- <wrap>False</wrap>
- <xalign>1</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>3</top_attach>
- <bottom_attach>4</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
+ <class>GtkTable</class>
+ <name>grab_table</name>
+ <border_width>10</border_width>
+ <rows>4</rows>
+ <columns>3</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>0</row_spacing>
+ <column_spacing>0</column_spacing>
- <widget>
- <class>GtkLabel</class>
- <name>dpms_suspend_label</name>
- <label>Suspend After:</label>
- <justify>GTK_JUSTIFY_RIGHT</justify>
- <wrap>False</wrap>
- <xalign>1</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
+ <widget>
+ <class>GtkEventBox</class>
+ <name>grab_image_eventbox</name>
+ <tooltip>Whether the image-manipulating modes should operate on random images loaded from disk.</tooltip>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>grab_image_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>toggled</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Thu, 12 Apr 2001 23:40:53 GMT</last_modification_time>
+ </signal>
+ <label>Choose Random Image:</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ </widget>
+ </widget>
- <widget>
- <class>GtkLabel</class>
- <name>dpms_dummy</name>
- <label></label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</right_attach>
- <top_attach>3</top_attach>
- <bottom_attach>4</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
+ <widget>
+ <class>GtkButton</class>
+ <name>image_browse_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>clicked</name>
+ <handler>browse_image_dir_cb</handler>
+ <last_modification_time>Thu, 12 Apr 2001 00:35:43 GMT</last_modification_time>
+ </signal>
+ <label>Browse</label>
+ <child>
+ <left_attach>2</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>3</top_attach>
+ <bottom_attach>4</bottom_attach>
+ <xpad>4</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
- <widget>
- <class>GtkEventBox</class>
- <name>dpms_button_eventbox</name>
- <tooltip>Whether the monitor should be powered down after a while.</tooltip>
- <child>
- <left_attach>0</left_attach>
- <right_attach>3</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
+ <widget>
+ <class>GtkEventBox</class>
+ <name>grab_video_eventbox</name>
+ <tooltip>Whether the image-manipulating modes should operate on images captured from the system's video input (if there is one).</tooltip>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>grab_video_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>toggled</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Thu, 12 Apr 2001 23:40:40 GMT</last_modification_time>
+ </signal>
+ <label>Grab Video Frames</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkEventBox</class>
+ <name>grab_desk_eventbox</name>
+ <tooltip>Whether the image-manipulating modes should be allowed to operate on an image of your desktop.</tooltip>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>grab_desk_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>toggled</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Thu, 12 Apr 2001 23:40:27 GMT</last_modification_time>
+ </signal>
+ <label>Grab Desktop Images</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ </widget>
+ </widget>
+
+ <widget>
+ <class>GtkLabel</class>
+ <name>grab_dummy</name>
+ <label></label>
+ <justify>GTK_JUSTIFY_LEFT</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
+ <xpad>8</xpad>
<ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>3</top_attach>
+ <bottom_attach>4</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>True</xshrink>
+ <yshrink>True</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
<widget>
- <class>GtkCheckButton</class>
- <name>dpms_button</name>
+ <class>GtkEntry</class>
+ <name>image_text</name>
+ <tooltip>The directory from which images will be randomly chosen.</tooltip>
<can_focus>True</can_focus>
<signal>
- <name>toggled</name>
+ <name>activate</name>
<handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:33:01 GMT</last_modification_time>
+ <last_modification_time>Thu, 12 Apr 2001 00:34:49 GMT</last_modification_time>
</signal>
- <label>Power Management Enabled</label>
- <active>True</active>
- <draw_indicator>True</draw_indicator>
+ <signal>
+ <name>focus_out_event</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Thu, 12 Apr 2001 00:35:17 GMT</last_modification_time>
+ </signal>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>0</text_max_length>
+ <text></text>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>3</top_attach>
+ <bottom_attach>4</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>True</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
</widget>
</widget>
</widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>diag_frame</name>
- <border_width>10</border_width>
- <label>Diagnostics:</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
<widget>
- <class>GtkTable</class>
- <name>diag_table</name>
+ <class>GtkFrame</class>
+ <name>blanking_frame</name>
<border_width>10</border_width>
- <rows>3</rows>
- <columns>1</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>2</row_spacing>
- <column_spacing>10</column_spacing>
+ <label>Blanking and Locking:</label>
+ <label_xalign>0</label_xalign>
+ <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
<widget>
- <class>GtkEventBox</class>
- <name>verbose_button_eventbox</name>
- <tooltip>Whether the daemon should print lots of debugging information.</tooltip>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
+ <class>GtkTable</class>
+ <name>blanking_table</name>
+ <border_width>10</border_width>
+ <rows>5</rows>
+ <columns>3</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>2</row_spacing>
+ <column_spacing>10</column_spacing>
<widget>
- <class>GtkCheckButton</class>
- <name>verbose_button</name>
+ <class>GtkEntry</class>
+ <name>lock_text</name>
+ <tooltip>How long after the screen saver has activated until a password will be required (if `Require Password' is also set.)</tooltip>
<can_focus>True</can_focus>
<signal>
- <name>toggled</name>
+ <name>activate</name>
<handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:32:25 GMT</last_modification_time>
+ <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
</signal>
- <label>Verbose Diagnostics</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
+ <signal>
+ <name>focus_out_event</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
+ </signal>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>8</text_max_length>
+ <text></text>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>4</top_attach>
+ <bottom_attach>5</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
</widget>
- </widget>
-
- <widget>
- <class>GtkEventBox</class>
- <name>capture_button_eventbox</name>
- <tooltip>Whether the stdout and stderr streams of graphics demos should be displayed on the xscreensaver window.</tooltip>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
<widget>
- <class>GtkCheckButton</class>
- <name>capture_button</name>
+ <class>GtkEntry</class>
+ <name>cycle_text</name>
+ <tooltip>How long each demo will be run before moving on to another.</tooltip>
<can_focus>True</can_focus>
<signal>
- <name>toggled</name>
+ <name>activate</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
+ </signal>
+ <signal>
+ <name>focus_out_event</name>
<handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:32:25 GMT</last_modification_time>
+ <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
</signal>
- <label>Display Subprocess Errors</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>8</text_max_length>
+ <text></text>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
</widget>
- </widget>
-
- <widget>
- <class>GtkEventBox</class>
- <name>splash_button_eventbox</name>
- <tooltip>Whether the splash screen (with the version number and `Help' button) should be momentarily displayed when the daemon first starts up.</tooltip>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
<widget>
- <class>GtkCheckButton</class>
- <name>splash_button</name>
+ <class>GtkEntry</class>
+ <name>timeout_text</name>
+ <tooltip>How long until the screen saver activates and begins running demos.</tooltip>
<can_focus>True</can_focus>
<signal>
- <name>toggled</name>
+ <name>activate</name>
<handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:32:39 GMT</last_modification_time>
+ <last_modification_time>Mon, 03 Apr 2000 02:28:10 GMT</last_modification_time>
</signal>
- <label>Display Splash Screen at Startup</label>
- <active>True</active>
- <draw_indicator>True</draw_indicator>
+ <signal>
+ <name>focus_out_event</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:34:26 GMT</last_modification_time>
+ </signal>
+ <editable>True</editable>
+ <text_visible>True</text_visible>
+ <text_max_length>8</text_max_length>
+ <text></text>
+ <child>
+ <left_attach>1</left_attach>
+ <right_attach>2</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>False</xfill>
+ <yfill>False</yfill>
+ </child>
</widget>
- </widget>
- </widget>
- </widget>
- <widget>
- <class>GtkFrame</class>
- <name>cmap_frame</name>
- <border_width>10</border_width>
- <label>Colormaps: (8-bit displays only)</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkTable</class>
- <name>cmap_table</name>
- <border_width>10</border_width>
- <rows>5</rows>
- <columns>3</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>2</row_spacing>
- <column_spacing>10</column_spacing>
-
- <widget>
- <class>GtkEntry</class>
- <name>fade_text</name>
- <tooltip>How long it should take for the screen to fade in and out.</tooltip>
- <can_focus>True</can_focus>
- <signal>
- <name>activate</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:28:29 GMT</last_modification_time>
- </signal>
- <signal>
- <name>focus_out_event</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:35:28 GMT</last_modification_time>
- </signal>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>8</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>4</top_attach>
- <bottom_attach>5</bottom_attach>
+ <widget>
+ <class>GtkLabel</class>
+ <name>timeout_label</name>
+ <label>Blank After:</label>
+ <justify>GTK_JUSTIFY_RIGHT</justify>
+ <wrap>False</wrap>
+ <xalign>1</xalign>
+ <yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
- <widget>
- <class>GtkLabel</class>
- <name>cmap_dummy</name>
- <label></label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</right_attach>
- <top_attach>4</top_attach>
- <bottom_attach>5</bottom_attach>
+ <widget>
+ <class>GtkLabel</class>
+ <name>cycle_label</name>
+ <label>Cycle After:</label>
+ <justify>GTK_JUSTIFY_RIGHT</justify>
+ <wrap>False</wrap>
+ <xalign>1</xalign>
+ <yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
- <widget>
- <class>GtkLabel</class>
- <name>fade_label</name>
- <label>Fade Duration:</label>
- <justify>GTK_JUSTIFY_RIGHT</justify>
- <wrap>False</wrap>
- <xalign>1</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>4</top_attach>
- <bottom_attach>5</bottom_attach>
+ <widget>
+ <class>GtkLabel</class>
+ <name>lock_label</name>
+ <label>Lock After:</label>
+ <justify>GTK_JUSTIFY_RIGHT</justify>
+ <wrap>False</wrap>
+ <xalign>1</xalign>
+ <yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>4</top_attach>
+ <bottom_attach>5</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
- <widget>
- <class>GtkHSeparator</class>
- <name>cmap_hr</name>
- <child>
- <left_attach>0</left_attach>
- <right_attach>3</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
+ <widget>
+ <class>GtkLabel</class>
+ <name>blanking_dummy</name>
+ <label></label>
+ <justify>GTK_JUSTIFY_LEFT</justify>
+ <wrap>False</wrap>
+ <xalign>0.5</xalign>
+ <yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
+ <child>
+ <left_attach>2</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>4</top_attach>
+ <bottom_attach>5</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+ </widget>
- <widget>
- <class>GtkEventBox</class>
- <name>install_button_eventbox</name>
- <tooltip>Whether to install a private colormap when running in 8-bit mode on the default Visual.</tooltip>
- <child>
- <left_attach>0</left_attach>
- <right_attach>3</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
+ <widget>
+ <class>GtkEventBox</class>
+ <name>lock_button_eventbox</name>
+ <tooltip>Whether a password should be required to unblank the screen.</tooltip>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>3</top_attach>
+ <bottom_attach>4</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>False</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>lock_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>toggled</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:31:53 GMT</last_modification_time>
+ </signal>
+ <label>Require Password</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ </widget>
+ </widget>
<widget>
- <class>GtkCheckButton</class>
- <name>install_button</name>
- <can_focus>True</can_focus>
- <signal>
- <name>toggled</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:32:25 GMT</last_modification_time>
- </signal>
- <label>Install Colormap</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
+ <class>GtkHSeparator</class>
+ <name>blanking_hr</name>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>3</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>2</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>True</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
</widget>
</widget>
+ </widget>
+
+ <widget>
+ <class>GtkFrame</class>
+ <name>diag_frame</name>
+ <border_width>10</border_width>
+ <label>Diagnostics:</label>
+ <label_xalign>0</label_xalign>
+ <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>True</yfill>
+ </child>
<widget>
- <class>GtkEventBox</class>
- <name>fade_button_eventbox</name>
- <tooltip>Whether the screen should slowly fade to black when the screen saver activates.</tooltip>
- <child>
- <left_attach>0</left_attach>
- <right_attach>3</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
+ <class>GtkTable</class>
+ <name>diag_table</name>
+ <border_width>10</border_width>
+ <rows>3</rows>
+ <columns>1</columns>
+ <homogeneous>False</homogeneous>
+ <row_spacing>2</row_spacing>
+ <column_spacing>10</column_spacing>
<widget>
- <class>GtkCheckButton</class>
- <name>fade_button</name>
- <can_focus>True</can_focus>
- <signal>
- <name>toggled</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:32:39 GMT</last_modification_time>
- </signal>
- <label>Fade To Black When Blanking</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
+ <class>GtkEventBox</class>
+ <name>splash_button_eventbox</name>
+ <tooltip>Whether the splash screen (with the version number and `Help' button) should be momentarily displayed when the daemon first starts up.</tooltip>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>2</top_attach>
+ <bottom_attach>3</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>splash_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>toggled</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:32:39 GMT</last_modification_time>
+ </signal>
+ <label>Display Splash Screen at Startup</label>
+ <active>True</active>
+ <draw_indicator>True</draw_indicator>
+ </widget>
</widget>
- </widget>
- <widget>
- <class>GtkEventBox</class>
- <name>unfade_button_eventbox</name>
- <tooltip>Whether the screen should slowly fade in from black when the screen saver deactivates.</tooltip>
- <child>
- <left_attach>0</left_attach>
- <right_attach>3</right_attach>
- <top_attach>3</top_attach>
- <bottom_attach>4</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
+ <widget>
+ <class>GtkEventBox</class>
+ <name>capture_button_eventbox</name>
+ <tooltip>Whether the stdout and stderr streams of graphics demos should be displayed on the xscreensaver window.</tooltip>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>1</top_attach>
+ <bottom_attach>2</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>capture_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>toggled</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:32:25 GMT</last_modification_time>
+ </signal>
+ <label>Display Subprocess Errors</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ </widget>
+ </widget>
<widget>
- <class>GtkCheckButton</class>
- <name>unfade_button</name>
- <can_focus>True</can_focus>
- <signal>
- <name>toggled</name>
- <handler>pref_changed_cb</handler>
- <last_modification_time>Mon, 03 Apr 2000 02:32:51 GMT</last_modification_time>
- </signal>
- <label>Fade From Black When Unblanking</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
+ <class>GtkEventBox</class>
+ <name>verbose_button_eventbox</name>
+ <tooltip>Whether the daemon should print lots of debugging information.</tooltip>
+ <child>
+ <left_attach>0</left_attach>
+ <right_attach>1</right_attach>
+ <top_attach>0</top_attach>
+ <bottom_attach>1</bottom_attach>
+ <xpad>0</xpad>
+ <ypad>0</ypad>
+ <xexpand>True</xexpand>
+ <yexpand>False</yexpand>
+ <xshrink>False</xshrink>
+ <yshrink>False</yshrink>
+ <xfill>True</xfill>
+ <yfill>False</yfill>
+ </child>
+
+ <widget>
+ <class>GtkCheckButton</class>
+ <name>verbose_button</name>
+ <can_focus>True</can_focus>
+ <signal>
+ <name>toggled</name>
+ <handler>pref_changed_cb</handler>
+ <last_modification_time>Mon, 03 Apr 2000 02:32:25 GMT</last_modification_time>
+ </signal>
+ <label>Verbose Diagnostics</label>
+ <active>False</active>
+ <draw_indicator>True</draw_indicator>
+ </widget>
</widget>
</widget>
</widget>
.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
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
.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
.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
--- /dev/null
+#!/usr/bin/perl -w
+# Copyright © 2001 Jamie Zawinski <jwz@jwz.org>, 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;
--- /dev/null
+.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 <jwz@jwz.org>, 14-Apr-01
--- /dev/null
+#!/usr/bin/perl -w
+# Copyright © 2001 Jamie Zawinski <jwz@jwz.org>, 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 (<IN>) { $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;
--- /dev/null
+.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 <jwz@jwz.org>, 14-Apr-01
--- /dev/null
+/* xscreensaver, Copyright (c) 2001 by Jamie Zawinski <jwz@jwz.org>
+ *
+ * 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 <X11/Intrinsic.h>
+#include <errno.h>
+
+#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);
+}
--- /dev/null
+.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 <jwz@jwz.org>, 14-Apr-01
}
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
}
.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
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 \
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
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 \
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 ; \
#
$(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
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.
$(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)
$(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)
$(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)
$(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)
$(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)
$(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)
$(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.
$(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)
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
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
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
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
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
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
.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
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
"*delay: 50000",
"*soften: 1",
"*invert: FALSE",
+#ifdef __sgi /* really, HAVE_READ_DISPLAY_EXTENSION */
+ "*visualID: Best",
+#endif
0
};
--- /dev/null
+.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 <blackend@inconnect.com>, 8-Oct-1999.
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:
\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
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
implied warranty.
.SH AUTHOR
Vivek Khera <khera@cs.duke.edu>, 05-Aug-93; based on code by David Wald, 1988.
-Modified by jwz, 28-Nov-97. Modified by Rick Schultz <rick@skapunx.net> 05-Apr-1999.
-
+Modified by jwz, 28-Nov-97.
+Modified by Rick Schultz <rick@skapunx.net> 05-Apr-1999.
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:
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
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)
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 \
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)
# 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
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
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
*
* 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
"*showFPS: False \n" \
"*cycles: 100 \n" \
"*size: 6000 \n" \
+ "*wireframe: False \n" \
"*whalespeed: 250 \n"
# include "xlockmore.h" /* from the xscreensaver distribution */
#else /* !STANDALONE */
#include <GL/glu.h>
+#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 =
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)
{
}
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[] =
{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);
reshape_atlantis(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
glDrawBuffer(GL_BACK);
- Init(ap);
+ Init(mi);
AllDisplay(ap);
glXSwapBuffers(display, window);
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);
return;
glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ap->glx_context));
- Init(ap);
+ Init(mi);
}
#endif /* USE_GL */
fishRec momWhale;
fishRec babyWhale;
fishRec dolph;
+
+ XImage *texture; /* water distortion overlay bits */
} atlantisstruct;
extern void FishTransform(fishRec *);
#ifdef USE_GL /* whole file */
-#ifdef HAVE_UNAME
-# include <sys/utsname.h>
-#endif /* HAVE_UNAME */
-
-
#include <GL/glu.h>
-#include "glutstroke.h"
-#include "glut_roman.h"
-#define GLUT_FONT (&glutStrokeRoman)
-
typedef struct {
GLXContext *glx_context;
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);
}
}
- 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);
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);
--- /dev/null
+/* 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"
+};
".foreground: Gray40",
"*delay: 70000",
"*delay2: 5",
+#ifdef __sgi /* really, HAVE_READ_DISPLAY_EXTENSION */
+ "*visualID: Best",
+#endif
0
};
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:
.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
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
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
[\-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:
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
"*mono: false",
"*installColormap: false",
"*visualID: default",
+ "*desktopGrabber: xscreensaver-getimage %s",
0
};
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;
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:
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
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
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:
.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
.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.
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:
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
.SH CREDITS
Hacked together by Rick Schultz <rick@skapunx.net>, based on StefView for
BackSpace by Darcy Brockbank and on several other xscreensaver hacks.
-
-#!/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
# 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 <jwz@jwz.org>" >&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 (<IN>) { $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
+sub read_config {
+ my $conf = "$ENV{HOME}/.xscreensaver";
- # wtf? that doesn't work either. Is it writing to /dev/tty??
- kill $pid >/dev/null 2>&1
+ my $had_dir = defined($imagedir);
- pid=""
- fi
-}
+ local *IN;
+ open (IN, "<$conf") || error "reading $conf: $!";
+ while (<IN>) {
+ 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 (<STDIN>) { $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 <jwz\@jwz.org>\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;
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 <jwz\@jwz.org>\n" .
" http://www.jwz.org/xscreensaver/\n";
/* Includes ******************************************************************/
#include "screenhack.h"
+#include "colorbars.h"
#include <X11/Xutil.h>
#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 *******************************************************************/
{
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? */
}
XSync(x_Disp,0);
- sleep(0);
+ usleep(50000);
screenhack_handle_events(x_Disp);
}
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)
{
/* 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,
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
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
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:
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
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
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
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
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
--- /dev/null
+/* xscreensaver, Copyright (c) 2001 Jamie Zawinski <jwz@jwz.org>
+ *
+ * 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);
+}
--- /dev/null
+/* xscreensaver, Copyright (c) 2001 Jamie Zawinski <jwz@jwz.org>
+ *
+ * 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.
+ */
+
+#ifndef __COLORBARS_H__
+#define __COLORBARS_H__
+
+extern void draw_colorbars (Display *dpy, Window window,
+ int x, int y, int width, int height);
+
+#endif /* __COLORBARS_H__ */
$ 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
$ 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
-/* xscreensaver, Copyright (c) 1992-1998 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-2001 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
#include "usleep.h"
#include "fade.h"
-
Colormap
copy_colormap (Screen *screen, Visual *visual,
Colormap cmap, Colormap into_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
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,
}
+\f
+/* SGI Gamma fading */
+
#ifdef HAVE_SGI_VC_EXTENSION
# include <X11/extensions/XSGIvc.h>
-struct screen_gamma_info {
+struct screen_sgi_gamma_info {
int gamma_map; /* ??? always using 0 */
int nred, ngreen, nblue;
unsigned short *red1, *green1, *blue1;
};
-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,
#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.
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]);
{
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
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;
}
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;
#endif /* HAVE_SGI_VC_EXTENSION */
-
\f
-#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 <X11/extensions/xf86vmode.h>
-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 */
--- /dev/null
+/* xscreensaver, Copyright (c) 1992, 1993, 1994, 1997, 1998, 2001
+ * Jamie Zawinski <jwz@jwz.org>
+ *
+ * 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 <X11/Xatom.h>
+
+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);
+}
#include "usleep.h"
#include "colors.h"
#include "grabscreen.h"
-#include "sgivideo.h"
#include "visual.h"
#include "resources.h"
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
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)
{
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);
}
-static void
-grab_screen_image_1 (Screen *screen, Window window)
+void
+grab_screen_image (Screen *screen, Window window)
{
Display *dpy = DisplayOfScreen (screen);
XWindowAttributes xgwa;
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);
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);
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);
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);
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
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 */
;
}
-#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);
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.
*/
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;
}
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++)
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
}
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;
}
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) |
}
}
-#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 */
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 {
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;
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)));
}
}
}
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;
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;
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;
}
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__ */
+++ /dev/null
-/* xscreensaver, Copyright (c) 1997, 1998 Jamie Zawinski <jwz@jwz.org>
- *
- * 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 <X11/Xutil.h>
-
-#ifdef DEBUG
-extern char *progname;
-#endif /* DEBUG */
-
-
-# include <dmedia/vl.h>
-
-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 */
+++ /dev/null
-/* xscreensaver, Copyright (c) 1997 Jamie Zawinski <jwz@jwz.org>
- *
- * 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.
- */
-
-#ifndef __SGIVIDEO_H__
-# ifdef HAVE_SGI_VIDEO
-
-Bool grab_video_frame(Screen *screen, Visual *visual, Drawable dest);
-
-# endif /* HAVE_SGI_VIDEO */
-#endif /* __SGIVIDEO_H__ */
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)";
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.
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.
%define name xscreensaver
-%define version 3.31
+%define version 3.32
%define release 1
%define serial 1
%define x11_prefix /usr/X11R6