From http://www.jwz.org/xscreensaver/xscreensaver-5.29.tar.gz
authorZygo Blaxell <zblaxell@faye.furryterror.org>
Thu, 11 Sep 2014 05:45:26 +0000 (01:45 -0400)
committerZygo Blaxell <zblaxell@faye.furryterror.org>
Thu, 11 Sep 2014 06:00:42 +0000 (02:00 -0400)
-rw-r--r-- 1 zblaxell zblaxell 8774562 Jun  8 18:04 xscreensaver-5.29.tar.gz
a27a10c6eed024c458e927ee0dc1e6cb306d3335  xscreensaver-5.29.tar.gz

56 files changed:
Makefile.in
OSX/Makefile
OSX/SaverRunner.plist
OSX/Updater.plist
OSX/XScreenSaver.plist
OSX/XScreenSaverView.m
OSX/bindist.rtf
OSX/enable_gc.c
OSX/iSaverRunner.plist
OSX/installer.sh
OSX/jwxyz.h
OSX/jwxyz.m
OSX/update-info-plist.pl
OSX/updates.xml
README
aclocal.m4
config.h.in
configure
configure.in
driver/Makefile.in
driver/XScreenSaver.ad.in
driver/XScreenSaver_ad.h
driver/demo-Gtk-stubs.h [deleted file]
driver/demo-Gtk-support.c [deleted file]
driver/demo-Gtk-support.h [deleted file]
driver/demo-Gtk-widgets.c [deleted file]
driver/demo-Gtk-widgets.h [deleted file]
driver/demo-Gtk.c
driver/splash.c
driver/subprocs.c
driver/test-passwd.c
driver/xscreensaver-getimage.c
hacks/Makefile.in
hacks/config/README
hacks/config/boxed.xml
hacks/config/projectiveplane.xml
hacks/delaunay.c
hacks/distort.c
hacks/glx/kaleidocycle.c
hacks/glx/lament.c
hacks/glx/quasicrystal.c
hacks/glx/starwars.c
hacks/glx/xpm-ximage.c
hacks/memscroller.c
hacks/rd-bomb.c
hacks/rotzoomer.c
hacks/tessellimage.c
hacks/webcollage
hacks/webcollage-helper.c
hacks/xlockmore.c
hacks/xpm-pixmap.c
po/Makefile.in.in
po/POTFILES.in
utils/version.h
xscreensaver.spec
xscreensaver.xcodeproj/project.pbxproj

index 63792cb599b2398b219fc14e2a1f27f2a898dbc2..1d29b54b009833b4e775f45557f2775b087cbf46 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in --- xscreensaver, Copyright (c) 1999-2010 Jamie Zawinski.
+# Makefile.in --- xscreensaver, Copyright (c) 1999-2014 Jamie Zawinski.
 # the `../configure' script generates `Makefile' from this file.
 
 @SET_MAKE@
 # the `../configure' script generates `Makefile' from this file.
 
 @SET_MAKE@
@@ -95,6 +95,7 @@ tar::
 # of autoconf other than the ones I've tried (2.12 and 2.13.)
 #
 configure::
 # of autoconf other than the ones I've tried (2.12 and 2.13.)
 #
 configure::
+       aclocal
        autoconf
        autoheader
        @TMP=configure.$$$$ ;                                                \
        autoconf
        autoheader
        @TMP=configure.$$$$ ;                                                \
@@ -372,8 +373,8 @@ www::
   fi ;                                                                     \
                                                                            \
   git commit -m "$$VERS" . ;                                               \
   fi ;                                                                     \
                                                                            \
   git commit -m "$$VERS" . ;                                               \
-  git tag -a "v$$VERS" -m "$$VERS" . ;                                     \
-  git push . ;                                                             \
+  git tag -a "v$$VERS" -m "$$VERS" ;                                       \
+  git push ;                                                               \
 
 
 count::
 
 
 count::
index 28588ee8f613c19584b80cc1a9349a7cd31d09bc..6d808354b0631af6fe986b28ae767098f6dc21b6 100644 (file)
@@ -1,21 +1,28 @@
-# XScreenSaver for MacOS X, Copyright (c) 2006-2013 by Jamie Zawinski.
+# XScreenSaver for MacOS X, Copyright (c) 2006-2014 by Jamie Zawinski.
 
 
-XCODEBUILD = /usr/bin/xcodebuild
-TARGETS    = -target "All Savers"
+# We have to use Xcode 5.0.2 in order to build savers that will run on
+# MacOS 10.6 and 10.7, because that's the latest version of Xcode that
+# ships with a version of clang that implements "-fobjc-gc".
+#
+XCODE_APP = /Applications/Xcode-5.0.2.app
+
+TARGETS    = All Savers
 ARCH       = -arch i386 -arch x86_64
 CERT       = 'Jamie Zawinski'
 CERT       = 'iPhone Developer: Jamie Zawinski (Y5M82TL69N)'
 ARCH       = -arch i386 -arch x86_64
 CERT       = 'Jamie Zawinski'
 CERT       = 'iPhone Developer: Jamie Zawinski (Y5M82TL69N)'
-THUMBDIR   = $(HOME)/www/xscreensaver/screenshots/
 PKGID     = org.jwz.xscreensaver
 PKGID     = org.jwz.xscreensaver
-SETFILE    = /Applications/Xcode.app/Contents/Developer/Tools/SetFile
+THUMBDIR   = $(HOME)/www/xscreensaver/screenshots/
+XCODEBUILD = $(XCODE_APP)/Contents/Developer/usr/bin/xcodebuild
+SETFILE    = $(XCODE_APP)/Contents/Developer/Tools/SetFile
 SETICON    = /usr/local/bin/seticon
 SETICON    = /usr/local/bin/seticon
+# seticon is from osxutils1.7.pkg
 
 default: release
 all: debug release
 
 clean:
        -rm -rf build
 
 default: release
 all: debug release
 
 clean:
        -rm -rf build
-#      cd ..; $(XCODEBUILD) $(TARGETS) clean
+#      cd ..; $(XCODEBUILD) -target "$(TARGETS)" clean
 
 distclean:
        -rm -f config.status config.cache config.log \
 
 distclean:
        -rm -f config.status config.cache config.log \
@@ -27,10 +34,10 @@ distdepend:: Sparkle.framework
 distdepend:: update_plist_version
 
 debug: distdepend
 distdepend:: update_plist_version
 
 debug: distdepend
-       cd ..; $(XCODEBUILD) $(ARCH) $(TARGETS) -configuration Debug   build
+       cd ..; $(XCODEBUILD) $(ARCH) -target "$(TARGETS)" -configuration Debug   build
 
 release:: distdepend
 
 release:: distdepend
-       cd ..; $(XCODEBUILD) $(ARCH) $(TARGETS) -configuration Release build
+       cd ..; $(XCODEBUILD) $(ARCH) -target "$(TARGETS)" -configuration Release build
 
 release:: check_versions
 release:: update_thumbs
 
 release:: check_versions
 release:: update_thumbs
@@ -66,6 +73,25 @@ check_versions:
   if [ "$$RESULT" = 0 ]; then echo "Versions match ($$V2)" ; fi ;      \
   exit $$RESULT
 
   if [ "$$RESULT" = 0 ]; then echo "Versions match ($$V2)" ; fi ;      \
   exit $$RESULT
 
+
+check_gc:
+       @\
+  DIR="build/Release" ;                                                        \
+  RESULT=0 ;                                                           \
+  for S in "$$DIR/"*.saver ; do                                                \
+   SS=`echo "$$S" | sed -e 's@^.*/@@' -e 's/.saver$$//'` ;             \
+   D="$$S/Contents/MacOS/$$SS" ;                                       \
+   V=`otool -s __DATA __objc_imageinfo "$$D"                           \
+      | grep ' 00 02 00 '` ;                                           \
+   if [ -z "$$V" ]; then                                               \
+     echo "$$S does not have GC enabled" ;                             \
+     RESULT=1 ;                                                                \
+   fi ;                                                                        \
+  done ;                                                               \
+  if [ "$$RESULT" = 0 ]; then echo "GC enabled" ; fi ;                 \
+  exit $$RESULT
+
+
 update_thumbs::
        ./update-thumbnail.pl $(THUMBDIR) build/Release/*.saver
 
 update_thumbs::
        ./update-thumbnail.pl $(THUMBDIR) build/Release/*.saver
 
@@ -167,7 +193,7 @@ build/Release/installer.pkg: installer.rtf installer.xml installer.sh installer.
 
 
 # -format UDBZ saves 4% (~1.2 MB) over UDZO.
 
 
 # -format UDBZ saves 4% (~1.2 MB) over UDZO.
-dmg:: distdepend check_versions build/Release/installer.pkg
+dmg:: distdepend check_versions check_gc build/Release/installer.pkg
        @                                                                     \
   set -e ;                                                                   \
   SRC=../utils/version.h ;                                                   \
        @                                                                     \
   set -e ;                                                                   \
   SRC=../utils/version.h ;                                                   \
index c3fe9c3b951bba14a6bfb676ce75d1c7567b73ec..c7664a16b5719fa22ddc1275626047a6c26ed26f 100644 (file)
@@ -7,7 +7,7 @@
        <key>CFBundleExecutable</key>
        <string>${EXECUTABLE_NAME}</string>
        <key>CFBundleGetInfoString</key>
        <key>CFBundleExecutable</key>
        <string>${EXECUTABLE_NAME}</string>
        <key>CFBundleGetInfoString</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>CFBundleIconFile</key>
        <string>SaverRunner</string>
        <key>CFBundleIdentifier</key>
        <key>CFBundleIconFile</key>
        <string>SaverRunner</string>
        <key>CFBundleIdentifier</key>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundleLongVersionString</key>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundleLongVersionString</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>CFBundleName</key>
        <string>${PRODUCT_NAME}</string>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
        <key>CFBundleName</key>
        <string>${PRODUCT_NAME}</string>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>LSMinimumSystemVersion</key>
        <string>${MACOSX_DEPLOYMENT_TARGET}</string>
        <key>NSHumanReadableCopyright</key>
        <key>LSMinimumSystemVersion</key>
        <string>${MACOSX_DEPLOYMENT_TARGET}</string>
        <key>NSHumanReadableCopyright</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>NSMainNibFile</key>
        <string>SaverRunner</string>
        <key>NSPrincipalClass</key>
        <key>NSMainNibFile</key>
        <string>SaverRunner</string>
        <key>NSPrincipalClass</key>
index f4ad229b0fe25e107f2e3f30aafb2baf8d9330b4..7ba47f26694a0a61ac9da4caf0b1ce6d502c0e6d 100644 (file)
@@ -7,7 +7,7 @@
        <key>CFBundleExecutable</key>
        <string>${EXECUTABLE_NAME}</string>
        <key>CFBundleGetInfoString</key>
        <key>CFBundleExecutable</key>
        <string>${EXECUTABLE_NAME}</string>
        <key>CFBundleGetInfoString</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>CFBundleIconFile</key>
        <string>SaverRunner</string>
        <key>CFBundleIdentifier</key>
        <key>CFBundleIconFile</key>
        <string>SaverRunner</string>
        <key>CFBundleIdentifier</key>
@@ -15,7 +15,7 @@
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundleLongVersionString</key>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundleLongVersionString</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>CFBundleName</key>
        <string>${PRODUCT_NAME}</string>
        <key>CFBundleDisplayName</key>
        <key>CFBundleName</key>
        <string>${PRODUCT_NAME}</string>
        <key>CFBundleDisplayName</key>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>LSMinimumSystemVersion</key>
        <string>${MACOSX_DEPLOYMENT_TARGET}</string>
        <key>LSUIElement</key>
        <true/>
        <key>NSHumanReadableCopyright</key>
        <key>LSMinimumSystemVersion</key>
        <string>${MACOSX_DEPLOYMENT_TARGET}</string>
        <key>LSUIElement</key>
        <true/>
        <key>NSHumanReadableCopyright</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>NSMainNibFile</key>
        <string>Updater</string>
        <key>NSPrincipalClass</key>
        <key>NSMainNibFile</key>
        <string>Updater</string>
        <key>NSPrincipalClass</key>
index b1f166e29e92434cff7e2232664498d63be74ee0..dd549bd6d50d711e7c005f9a04b723b236d464bd 100644 (file)
        <key>CFBundlePackageType</key>
        <string>BNDL</string>
        <key>CFBundleShortVersionString</key>
        <key>CFBundlePackageType</key>
        <string>BNDL</string>
        <key>CFBundleShortVersionString</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>LSMinimumSystemVersion</key>
        <string>10.4</string>
        <key>NSMainNibFile</key>
        <key>LSMinimumSystemVersion</key>
        <string>10.4</string>
        <key>NSMainNibFile</key>
index 989edf290c24ff4e317a5c8ac2fa08bb63bcb9b3..1b3af09ff9b0c5965d2d1b0ee1728bb03f6388ad 100644 (file)
@@ -960,6 +960,8 @@ double current_device_rotation (void)
       (void *(*) (Display *, Window, void *)) xsft->init_cb;
     
     xdata = init_cb (xdpy, xwindow, xsft->setup_arg);
       (void *(*) (Display *, Window, void *)) xsft->init_cb;
     
     xdata = init_cb (xdpy, xwindow, xsft->setup_arg);
+    // NSAssert(xdata, @"no xdata from init");
+    if (! xdata) abort();
 
     if (get_boolean_resource (xdpy, "doFPS", "DoFPS")) {
       fpst = fps_init (xdpy, xwindow);
 
     if (get_boolean_resource (xdpy, "doFPS", "DoFPS")) {
       fpst = fps_init (xdpy, xwindow);
@@ -1064,6 +1066,8 @@ double current_device_rotation (void)
 # ifndef USE_IPHONE
   NSDisableScreenUpdates();
 # endif
 # ifndef USE_IPHONE
   NSDisableScreenUpdates();
 # endif
+  // NSAssert(xdata, @"no xdata when drawing");
+  if (! xdata) abort();
   unsigned long delay = xsft->draw_cb (xdpy, xwindow, xdata);
   if (fpst) xsft->fps_cb (xdpy, xwindow, fpst, xdata);
 # ifndef USE_IPHONE
   unsigned long delay = xsft->draw_cb (xdpy, xwindow, xdata);
   if (fpst) xsft->fps_cb (xdpy, xwindow, fpst, xdata);
 # ifndef USE_IPHONE
index 1b7d6fd98f0858fde0e6b50615c99bb3410876d1..af58145b8d7da9117dd535e7867782ce698fbb3a 100644 (file)
@@ -16,8 +16,8 @@
 \b0 by Jamie Zawinski\
 and many others\
 \
 \b0 by Jamie Zawinski\
 and many others\
 \
-version 5.27\
-27-May-2014\
+version 5.29\
+08-Jun-2014\
 \
 {\field{\*\fldinst{HYPERLINK "http://www.jwz.org/xscreensaver/"}}{\fldrslt \cf2 \ul \ulc2 http://www.jwz.org/xscreensaver/}}\
 \pard\pardeftab720
 \
 {\field{\*\fldinst{HYPERLINK "http://www.jwz.org/xscreensaver/"}}{\fldrslt \cf2 \ul \ulc2 http://www.jwz.org/xscreensaver/}}\
 \pard\pardeftab720
index f8d2d9c205a5c9337ce6d60db6877696bde27f23..c585bf66ed12f7323b6c29aad78c435d237f780f 100644 (file)
  * The problem:
  * 
  *   - OSX 10.5 and earlier require .saver bundles to not use GC.
  * The problem:
  * 
  *   - OSX 10.5 and earlier require .saver bundles to not use GC.
- *   - OSX 10.6 require .saver bundles to use GC.
- *   - OSX 10.7 and later require .saver bundles to not use GC.
+ *   - OSX 10.6 and 10.7 require .saver bundles to use GC.
+ *   - OSX 10.8 and later require .saver bundles to not use GC.
  * 
  * So the way to build a portable .saver is to build it with "GC optional",
  * via "-fobjc-gc" on the x86-64 architecture.
  * 
  * 
  * So the way to build a portable .saver is to build it with "GC optional",
  * via "-fobjc-gc" on the x86-64 architecture.
  * 
- * But XCode 5.x on OSX 10.9 no longer supports building executables
- * that support GC, even optionally.  So there's no way to make XCode
- * 5.x create a .saver bundle that will work on OSX 10.6. Though it
- * will work on 10.5!
+ * But XCode 5.0.2 was the last version of XCode to support building
+ * executables that support GC, even optionally.  So there's no way to make
+ * the XCode that ships with OSX 10.9 create a .saver bundle that will work
+ * on OSX 10.6 and 10.7. Though it will work on 10.5!
  * 
  * The fix: after compiling, hand-hack the generated binary to tag the
  * x86-64 arch with the OBJC_IMAGE_SUPPORTS_GC flag.
  * 
  * The fix: after compiling, hand-hack the generated binary to tag the
  * x86-64 arch with the OBJC_IMAGE_SUPPORTS_GC flag.
  * dependency of "libjwxyz" (so that it gets built first) and is
  * invoked by "update-info-plist.pl" (so that it gets run on every
  * saver).
  * dependency of "libjwxyz" (so that it gets built first) and is
  * invoked by "update-info-plist.pl" (so that it gets run on every
  * saver).
+ *
+ *
+ * UPDATE, 2-Jun-2014:
+ *
+ * Actually, this seems not to be working.  We're seeing intermittent
+ * crashes in malloc/calloc/free on 10.6 64 bit.  When compiled with
+ * legit -fobjc-gc, those crashes don't occur.
  */
 
 #include <assert.h>
  */
 
 #include <assert.h>
index 89418cbac12b0f4a1c063f38cdc00f9df522f668..736a5274be28f8b9eb84ea2acb0deaec6638091b 100644 (file)
@@ -5,11 +5,11 @@
        <key>CFBundleName</key>
        <string>${PRODUCT_NAME}</string>
        <key>NSHumanReadableCopyright</key>
        <key>CFBundleName</key>
        <string>${PRODUCT_NAME}</string>
        <key>NSHumanReadableCopyright</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>CFBundleDevelopmentRegion</key>
        <string>English</string>
        <key>CFBundleVersion</key>
        <key>CFBundleDevelopmentRegion</key>
        <string>English</string>
        <key>CFBundleVersion</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>NSMainNibFile</key>
        <string>iSaverRunner</string>
        <key>CFBundlePackageType</key>
        <key>NSMainNibFile</key>
        <string>iSaverRunner</string>
        <key>CFBundlePackageType</key>
@@ -19,7 +19,7 @@
        <key>UIViewControllerBasedStatusBarAppearance</key>
        <false/>
        <key>CFBundleShortVersionString</key>
        <key>UIViewControllerBasedStatusBarAppearance</key>
        <false/>
        <key>CFBundleShortVersionString</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>UIRequiredDeviceCapabilities</key>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>UIRequiredDeviceCapabilities</key>
@@ -37,7 +37,7 @@
                <string>UIInterfaceOrientationLandscapeRight</string>
        </array>
        <key>CFBundleLongVersionString</key>
                <string>UIInterfaceOrientationLandscapeRight</string>
        </array>
        <key>CFBundleLongVersionString</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>CFBundleIdentifier</key>
        <string>${BUNDLE_IDENTIFIER}</string>
        <key>CFBundleSignature</key>
        <key>CFBundleIdentifier</key>
        <string>${BUNDLE_IDENTIFIER}</string>
        <key>CFBundleSignature</key>
@@ -65,6 +65,6 @@
        <key>CFBundleDisplayName</key>
        <string>${PRODUCT_NAME}</string>
        <key>CFBundleGetInfoString</key>
        <key>CFBundleDisplayName</key>
        <string>${PRODUCT_NAME}</string>
        <key>CFBundleGetInfoString</key>
-       <string>5.27</string>
+       <string>5.29</string>
 </dict>
 </plist>
 </dict>
 </plist>
index 06a1a135fe9f0df872030315bfa1b72b259c25f7..120dd9d9b8bed3aa76d89da48b0afe36103a0c9d 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/sh
 #!/bin/sh
-# XScreenSaver, Copyright Â© 2013 Jamie Zawinski <jwz@jwz.org>
+# XScreenSaver, Copyright Â© 2013-2014 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
 #
 # Permission to use, copy, modify, distribute, and sell this software and its
 # documentation for any purpose is hereby granted without fee, provided that
 #exec >/tmp/xscreensaver.log 2>&1
 #set -x
 
 #exec >/tmp/xscreensaver.log 2>&1
 #set -x
 
+DEBUG=0
+REQUIRED_SPACE=160     # MB. Highly approximate.
+
 export PATH="/bin:/sbin:/usr/bin:/usr/sbin:$PATH"
 
 export PATH="/bin:/sbin:/usr/bin:/usr/sbin:$PATH"
 
-REQUIRED_SPACE=140     # MB. Highly approximate.
+function error() {
+  echo "XScreenSaver Installer: Error: $@" >&2
+  (
+    # Using "System Events" says "No user interaction allowed" on 10.9.
+    # But using "Automator Runner" still seems to work.
+    osascript <<__EOF__
+      tell app "Automator Runner" to \
+        display dialog "$@" \
+        buttons "Bummer" \
+        default button 1 \
+        with icon 0 \
+        with title "Installation Error"
+__EOF__
+  ) </dev/null >/dev/null 2>&1 &
+  exit 1
+}
 
 
-DEBUG=0
+#if[ x"$DSTVOLUME"    = x ]; then error "DSTVOLUME unset";    fi
+if [ x"$PACKAGE_PATH" = x ]; then error "PACKAGE_PATH unset"; fi
+if [ x"$HOME"         = x ]; then error "HOME unset";         fi
 
 
-if [ x"$USER" = xjwz ]; then
-  DEBUG=1
-fi
 
 echo "Destination: $DSTVOLUME" >&2
 
 
 echo "Destination: $DSTVOLUME" >&2
 
-if [ "$DEBUG" != 0 ]; then
-  DSTVOLUME=/tmp
-fi
+if [ x"$USER" = xjwz ]; then DEBUG=1; fi
+
+if [ "$DEBUG" != 0 ]; then DSTVOLUME=/tmp; fi
 
 SRC=`dirname "$PACKAGE_PATH"`/"Screen Savers"
 DST1="$DSTVOLUME/Library/Screen Savers"
 
 SRC=`dirname "$PACKAGE_PATH"`/"Screen Savers"
 DST1="$DSTVOLUME/Library/Screen Savers"
@@ -41,16 +58,6 @@ DST2="$DSTVOLUME/Applications"
 PU="$DSTVOLUME/$HOME/Library/Screen Savers"
 UPDATER="XScreenSaverUpdater.app"
 
 PU="$DSTVOLUME/$HOME/Library/Screen Savers"
 UPDATER="XScreenSaverUpdater.app"
 
-function error() {
-  echo "Error: $@" >&2
-  (
-    osascript <<__EOF__
-      tell app "System Events" to display dialog "$@" buttons "Bummer" default button 1 with icon 0 with title "Installation Error"
-__EOF__
-  ) </dev/null >/dev/null 2>&1 &
-  exit 1
-}
-
 cd "$SRC" || error "The 'Screen Savers' folder does not exist.
 
 You can't copy the installer out of the Disk Image!"
 cd "$SRC" || error "The 'Screen Savers' folder does not exist.
 
 You can't copy the installer out of the Disk Image!"
index c8530da87f350ca379693703e76d825d6166cfaa..82a8b2edff511b6f74f507101fd309690d0a2aa5 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1991-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1991-2014 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
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -269,6 +269,9 @@ typedef unsigned long                       XtInputMask;
 #define DisplayHeight XDisplayHeight
 #define XMaxRequestSize(dpy) (65535)
 
 #define DisplayHeight XDisplayHeight
 #define XMaxRequestSize(dpy) (65535)
 
+#define ScreenCount(dpy) jwxyz_ScreenCount(dpy)
+extern int jwxyz_ScreenCount(Display *);
+
 extern Display *jwxyz_make_display (void *nsview, void *cgc);
 extern void jwxyz_free_display (Display *);
 extern void *jwxyz_window_view (Window);
 extern Display *jwxyz_make_display (void *nsview, void *cgc);
 extern void jwxyz_free_display (Display *);
 extern void *jwxyz_window_view (Window);
index 2703bdca23076d20219e59fca6d815c7b0ea3378..ef3068c4ef3de11cee3fd6edcf8eabf8fdc4ac2a 100644 (file)
@@ -77,6 +77,7 @@ struct jwxyz_Drawable {
 struct jwxyz_Display {
   Window main_window;
   Screen *screen;
 struct jwxyz_Display {
   Window main_window;
   Screen *screen;
+  int screen_count;
   struct jwxyz_sources_data *timers_data;
 
 # ifndef USE_IPHONE
   struct jwxyz_sources_data *timers_data;
 
 # ifndef USE_IPHONE
@@ -93,6 +94,7 @@ struct jwxyz_Display {
 struct jwxyz_Screen {
   Display *dpy;
   Visual *visual;
 struct jwxyz_Screen {
   Display *dpy;
   Visual *visual;
+  int screen_number;
 };
 
 struct jwxyz_GC {
 };
 
 struct jwxyz_GC {
@@ -137,6 +139,26 @@ jwxyz_abort (const char *fmt, ...)
 }
 
 
 }
 
 
+/* We keep a list of all of the Displays that have been created and not
+   yet freed so that they can have sensible display numbers.  If three
+   displays are created (0, 1, 2) and then #1 is closed, then the fourth
+   display will be given the now-unused display number 1. (Everything in
+   here assumes a 1:1 Display/Screen mapping.)
+
+   The size of this array is the most number of live displays at one time.
+   So if it's 20, then we'll blow up if the system has 19 monitors and also
+   has System Preferences open (the small preview window).
+
+   Note that xlockmore-style savers tend to allocate big structures, so
+   setting this to 1000 will waste a few megabytes.  Also some of them assume
+   that the number of screens never changes, so dynamically expanding this
+   array won't work.
+ */
+# ifndef USE_IPHONE
+static Display *jwxyz_live_displays[20] = { 0, };
+# endif
+
+
 Display *
 jwxyz_make_display (void *nsview_arg, void *cgc_arg)
 {
 Display *
 jwxyz_make_display (void *nsview_arg, void *cgc_arg)
 {
@@ -149,6 +171,24 @@ jwxyz_make_display (void *nsview_arg, void *cgc_arg)
   d->screen = (Screen *) calloc (1, sizeof(Screen));
   d->screen->dpy = d;
   
   d->screen = (Screen *) calloc (1, sizeof(Screen));
   d->screen->dpy = d;
   
+  d->screen_count = 1;
+  d->screen->screen_number = 0;
+# ifndef USE_IPHONE
+  {
+    // Find the first empty slot in live_displays and plug us in.
+    int size = sizeof(jwxyz_live_displays) / sizeof(*jwxyz_live_displays);
+    int i;
+    for (i = 0; i < size; i++) {
+      if (! jwxyz_live_displays[i])
+        break;
+    }
+    if (i >= size) abort();
+    jwxyz_live_displays[i] = d;
+    d->screen_count = size;
+    d->screen->screen_number = i;
+  }
+# endif // !USE_IPHONE
+
   Visual *v = (Visual *) calloc (1, sizeof(Visual));
   v->class      = TrueColor;
   v->red_mask   = 0x00FF0000;
   Visual *v = (Visual *) calloc (1, sizeof(Visual));
   v->class      = TrueColor;
   v->red_mask   = 0x00FF0000;
@@ -187,6 +227,21 @@ jwxyz_free_display (Display *dpy)
   jwxyz_XtRemoveInput_all (dpy);
   // #### jwxyz_XtRemoveTimeOut_all ();
   
   jwxyz_XtRemoveInput_all (dpy);
   // #### jwxyz_XtRemoveTimeOut_all ();
   
+# ifndef USE_IPHONE
+  {
+    // Find us in live_displays and clear that slot.
+    int size = ScreenCount(dpy);
+    int i;
+    for (i = 0; i < size; i++) {
+      if (dpy == jwxyz_live_displays[i]) {
+        jwxyz_live_displays[i] = 0;
+        break;
+      }
+    }
+    if (i >= size) abort();
+  }
+# endif // !USE_IPHONE
+
   free (dpy->screen->visual);
   free (dpy->screen);
   CFRelease (dpy->main_window->window.view);
   free (dpy->screen->visual);
   free (dpy->screen);
   CFRelease (dpy->main_window->window.view);
@@ -336,7 +391,13 @@ XDisplayNumberOfScreen (Screen *s)
 int
 XScreenNumberOfScreen (Screen *s)
 {
 int
 XScreenNumberOfScreen (Screen *s)
 {
-  return 0;
+  return s->screen_number;
+}
+
+int
+jwxyz_ScreenCount (Display *dpy)
+{
+  return dpy->screen_count;
 }
 
 int
 }
 
 int
index 8fe8b71d3054a3e763eb439eec50ace0c900b3c8..5c6181ce66ffbbb997b2a4eeab930626edbe9f2c 100755 (executable)
@@ -27,7 +27,7 @@ use IO::Compress::Gzip qw(gzip $GzipError);
 
 my ($exec_dir, $progname) = ($0 =~ m@^(.*?)/([^/]+)$@);
 
 
 my ($exec_dir, $progname) = ($0 =~ m@^(.*?)/([^/]+)$@);
 
-my ($version) = ('$Revision: 1.30 $' =~ m/\s(\d[.\d]+)\s/s);
+my ($version) = ('$Revision: 1.33 $' =~ m/\s(\d[.\d]+)\s/s);
 
 $ENV{PATH} = "/usr/local/bin:$ENV{PATH}";   # for seticon
 
 
 $ENV{PATH} = "/usr/local/bin:$ENV{PATH}";   # for seticon
 
@@ -391,7 +391,7 @@ sub update($) {
 
   set_icon ($app_dir);
   set_thumb ($app_dir);
 
   set_icon ($app_dir);
   set_thumb ($app_dir);
-  enable_gc ($app_dir);
+# enable_gc ($app_dir);
 }
 
 
 }
 
 
index 89c0eb77e3f919f5e1d1291d1107fcd8427206d2..6af53aee637167303942c9c2d49eb210f5a84f14 100644 (file)
@@ -7,6 +7,28 @@
   <link>http://www.jwz.org/xscreensaver/updates.xml</link>
   <description>Updates to xscreensaver.</description>
   <language>en</language>
   <link>http://www.jwz.org/xscreensaver/updates.xml</link>
   <description>Updates to xscreensaver.</description>
   <language>en</language>
+  <item>
+   <title>Version 5.28</title>
+   <link>http://www.jwz.org/xscreensaver/xscreensaver-5.28.dmg</link>
+   <description><![CDATA[&bull; Fixed some compilation problems and intermittent crashes. <BR>&bull; Turned off the OSX 10.6 enable_gc hack. It didn't work.]]></description>
+   <pubDate>Wed, 04 Jun 2014 13:51:27 -0700</pubDate>
+   <enclosure url="http://www.jwz.org/xscreensaver/xscreensaver-5.28.dmg"
+    sparkle:version="5.28"
+    sparkle:dsaSignature="MC0CFCic+M1r8vJdzeZ0tbsvhSlkcuOTAhUAqxQeckaXmn8TV+KJp3EsoEzMiBo="
+    length="51021639"
+    type="application/octet-stream" />
+  </item>
+  <item>
+   <title>Version 5.27</title>
+   <link>http://www.jwz.org/xscreensaver/xscreensaver-5.27.dmg</link>
+   <description><![CDATA[&bull; New hacks, `tessellimage' and `projectiveplane'. <BR>&bull; Added support for pthreads, because Dave Odell is a madman. <BR>&bull; Updated `webcollage' for recent changes. <BR>&bull; Minor iOS tweaks to the `analogtv' hacks. <BR>&bull; X11: Don't assume Suspend = 0 implies "No DPMS". <BR>&bull; Minor updates to `boxed' and `klein'. <BR>&bull; Fixed possible crash in `apple2', `noseguy', `xmatrix', `shadebobs'. <BR>&bull; Fixed possible crash in OSX preferences. <BR>&bull; OSX Performance improvements. <BR>&bull; Plugged some leaks.]]></description>
+   <pubDate>Tue, 27 May 2014 03:05:35 -0700</pubDate>
+   <enclosure url="http://www.jwz.org/xscreensaver/xscreensaver-5.27.dmg"
+    sparkle:version="5.27"
+    sparkle:dsaSignature="MC0CFQDIHH0Q0NqJ8K0XDDe8lUPpTdpLeQIUW1tdF1xsu0WviJ+EpxOXYiudetM="
+    length="50979508"
+    type="application/octet-stream" />
+  </item>
   <item>
    <title>Version 5.26</title>
    <link>http://www.jwz.org/xscreensaver/xscreensaver-5.26.dmg</link>
   <item>
    <title>Version 5.26</title>
    <link>http://www.jwz.org/xscreensaver/xscreensaver-5.26.dmg</link>
     length="50489976"
     type="application/octet-stream" />
   </item>
     length="50489976"
     type="application/octet-stream" />
   </item>
-  <item>
-   <title>Version 5.25</title>
-   <link>http://www.jwz.org/xscreensaver/xscreensaver-5.25.dmg</link>
-   <description><![CDATA[&bull; Try harder to bypass Quarrantine and Gatekeeper in OSX installer. <BR>&bull; Some files were missing from the tarball.]]></description>
-   <pubDate>Mon, 09 Dec 2013 00:38:35 -0800</pubDate>
-   <enclosure url="http://www.jwz.org/xscreensaver/xscreensaver-5.25.dmg"
-    sparkle:version="5.25"
-    sparkle:dsaSignature="MC0CFQCr8H3E7MQ9UF8WoSfkNMYAeezkCgIUCEfh4LmhELZlR53pihwrbPn8/gw="
-    length="50492771"
-    type="application/octet-stream" />
-  </item>
-  <item>
-   <title>Version 5.24</title>
-   <link>http://www.jwz.org/xscreensaver/xscreensaver-5.24.dmg</link>
-   <description><![CDATA[&bull; Added "Automatically check for updates" option on OSX. <BR>&bull; Updated feed-loading for recent Flickr changes. <BR>&bull; Updated `webcollage' for recent Google changes. <BR>&bull; Added Instagram and Bing as `webcollage' image sources. <BR>&bull; Updated to latest autoconf. <BR>&bull; Bug fixes.]]></description>
-   <pubDate>Sat, 07 Dec 2013 19:06:56 -0800</pubDate>
-   <enclosure url="http://www.jwz.org/xscreensaver/xscreensaver-5.24.dmg"
-    sparkle:version="5.24"
-    sparkle:dsaSignature="MCwCFCIlSSS7+eSfv1YkqIppcyIqTeU7AhRpDCQEQmI61UWhHInQGwduI+Mr8A=="
-    length="50258845"
-    type="application/octet-stream" />
-  </item>
   <item>
    <title>Version 5.14</title>
    <link>http://www.jwz.org/xscreensaver/xscreensaver-5.14.dmg</link>
   <item>
    <title>Version 5.14</title>
    <link>http://www.jwz.org/xscreensaver/xscreensaver-5.14.dmg</link>
diff --git a/README b/README
index 70bbf35b4a05f3bc81614796a3f3a45947ffd4b6..fac3e57535bb76cdcabc0cda3564826924ffc3a1 100644 (file)
--- a/README
+++ b/README
@@ -38,6 +38,13 @@ XScreenSaver has an extensive manual -- please read it!
 
 ===============================================================================
 
 
 ===============================================================================
 
+5.29   * Downgraded to Xcode 5.0.2 to make it possible to build savers
+          that will still run on 10.6 and 10.7.  Sigh.
+       * Updated `webcollage' for recent changes.
+
+5.28   * Fixed some compilation problems and intermittent crashes.
+        * Turned off the OSX 10.6 enable_gc hack. It didn't work.
+
 5.27   * New hacks, `tessellimage' and `projectiveplane'.
         * Added support for pthreads, because Dave Odell is a madman.
        * Updated `webcollage' for recent changes.
 5.27   * New hacks, `tessellimage' and `projectiveplane'.
         * Added support for pthreads, because Dave Odell is a madman.
        * Updated `webcollage' for recent changes.
index ef93b539e264bb53864e6360154cb320745cb422..f83c50bcac71465152dceccd8cdabdf643b4c4ef 100644 (file)
-dnl aclocal.m4 generated automatically by aclocal 1.4-p5
+# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
 
 
-dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl This program is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-dnl PARTICULAR PURPOSE.
-
-
-dnl AC_PROG_INTLTOOL([MINIMUM-VERSION])
-# serial 1 AC_PROG_INTLTOOL
-AC_DEFUN(AC_PROG_INTLTOOL,
-[
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 
 
-if test -n "$1"; then
-    AC_MSG_CHECKING(for intltool >= $1)
-
-    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ printf "%d", $[1] * 100 + $[2]; }'`
-    INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { printf $[2]; }'  < intltool-update.in`
-    changequote({{,}})
-    INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split(${{2}}, VERSION, "."); printf "%d\n", VERSION[1] * 100 + VERSION[2];}' < intltool-update.in`
-    changequote([,])
-
-    if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT"; then
-       AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
-    else
-       AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found. Your intltool is too old.  You need intltool $1 or later.])
-       exit 1
-    fi
-fi
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
 
-  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< [$]@ -d -u -c $(top_builddir)/po/.intltool-merge-cache'
-INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< [$]@ -d -u -c $(top_builddir)/po/.intltool-merge-cache'
-     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< [$]@ -k -u -c $(top_builddir)/po/.intltool-merge-cache'
-      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< [$]@ -o -p'
-     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< [$]@ -x -u -c $(top_builddir)/po/.intltool-merge-cache'
-   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< [$]@ -o -u -c $(top_builddir)/po/.intltool-merge-cache'
-    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< [$]@ -x -u -c $(top_builddir)/po/.intltool-merge-cache'
-INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< [$]@ -d -u -c $(top_builddir)/po/.intltool-merge-cache'
-       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< [$]@ -x -u -c $(top_builddir)/po/.intltool-merge-cache'
-      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< [$]@ -x -u -c $(top_builddir)/po/.intltool-merge-cache'
-    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< [$]@ -d -u -c $(top_builddir)/po/.intltool-merge-cache'
-
-AC_SUBST(INTLTOOL_DESKTOP_RULE)
-AC_SUBST(INTLTOOL_DIRECTORY_RULE)
-AC_SUBST(INTLTOOL_KEYS_RULE)
-AC_SUBST(INTLTOOL_OAF_RULE)
-AC_SUBST(INTLTOOL_PONG_RULE)
-AC_SUBST(INTLTOOL_SERVER_RULE)
-AC_SUBST(INTLTOOL_SHEET_RULE)
-AC_SUBST(INTLTOOL_SOUNDLIST_RULE)
-AC_SUBST(INTLTOOL_UI_RULE)
-AC_SUBST(INTLTOOL_XML_RULE)
-AC_SUBST(INTLTOOL_CAVES_RULE)
-
-# Use the tools built into the package, not the ones that are installed.
-
-INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract'
-INTLTOOL_MERGE='$(top_builddir)/intltool-merge'
-INTLTOOL_UPDATE='$(top_builddir)/intltool-update'
-
-AC_SUBST(INTLTOOL_EXTRACT)
-AC_SUBST(INTLTOOL_MERGE)
-AC_SUBST(INTLTOOL_UPDATE)
-
-AC_PATH_PROG(INTLTOOL_PERL, perl)
-if test -z "$INTLTOOL_PERL"; then
-   AC_MSG_ERROR([perl not found; required for intltool])
-fi
-if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
-   AC_MSG_ERROR([perl 5.x required for intltool])
-fi
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
 
 
-# Remove file type tags (using []) from po/POTFILES.
-
-ifdef([AC_DIVERSION_ICMDS],[
-  AC_DIVERT_PUSH(AC_DIVERSION_ICMDS)
-      changequote(,)
-      mv -f po/POTFILES po/POTFILES.tmp
-      sed -e 's/\[.*\] *//' < po/POTFILES.tmp > po/POTFILES
-      rm -f po/POTFILES.tmp
-      changequote([,])
-  AC_DIVERT_POP()
-],[
-  ifdef([AC_CONFIG_COMMANDS_PRE],[
-    AC_CONFIG_COMMANDS_PRE([
-        changequote(,)
-        mv -f po/POTFILES po/POTFILES.tmp
-        sed -e 's/\[.*\] *//' < po/POTFILES.tmp > po/POTFILES
-        rm -f po/POTFILES.tmp
-        changequote([,])
-    ])
-  ])
-])
-
-# Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT.
-
-AC_OUTPUT_COMMANDS([
-
-sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${srcdir}/intltool-extract.in > intltool-extract.out
-if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
-  rm -f intltool-extract.out
-else
-  mv -f intltool-extract.out intltool-extract
-fi
-chmod ugo+x intltool-extract
-chmod u+w intltool-extract
-
-sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${srcdir}/intltool-merge.in > intltool-merge.out
-if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
-  rm -f intltool-merge.out
-else
-  mv -f intltool-merge.out intltool-merge
-fi
-chmod ugo+x intltool-merge
-chmod u+w intltool-merge
-
-sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${srcdir}/intltool-update.in > intltool-update.out
-if cmp -s intltool-update intltool-update.out 2>/dev/null; then
-  rm -f intltool-update.out
-else
-  mv -f intltool-update.out intltool-update
-fi
-chmod ugo+x intltool-update
-chmod u+w intltool-update
-
-], INTLTOOL_PERL=${INTLTOOL_PERL})
-
-])
-
-# Macro to add for using GNU gettext.
-# Ulrich Drepper <drepper@cygnus.com>, 1995.
-#
-# Modified to never use included libintl. 
-# Owen Taylor <otaylor@redhat.com>, 12/15/1998
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+# Copyright (C) 1995-2002 Free Software Foundation, Inc.
+# Copyright (C) 2001-2003,2004 Red Hat, Inc.
 #
 #
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
 #
 # This file can be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
 # but which still want to provide support for the GNU gettext functionality.
 #
 # This file can be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
 # but which still want to provide support for the GNU gettext functionality.
-# Please note that the actual code is *not* freely available.
 #
 #
+# Macro to add for using GNU gettext.
+# Ulrich Drepper <drepper@cygnus.com>, 1995, 1996
+#
+# Modified to never use included libintl. 
+# Owen Taylor <otaylor@redhat.com>, 12/15/1998
+#
+# Major rework to remove unused code
+# Owen Taylor <otaylor@redhat.com>, 12/11/2002
+#
+# Added better handling of ALL_LINGUAS from GNU gettext version 
+# written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
 #
 #
-# If you make changes to this file, you MUST update the copy in
-# acinclude.m4. [ aclocal dies on duplicate macros, so if
-# we run 'aclocal -I macros/' then we'll run into problems
-# once we've installed glib-gettext.m4 :-( ]
+# Modified to require ngettext
+# Matthias Clasen <mclasen@redhat.com> 08/06/2004
 #
 #
+# We need this here as well, since someone might use autoconf-2.5x
+# to configure GLib then an older version to configure a package
+# using AM_GLIB_GNU_GETTEXT
+AC_PREREQ(2.53)
+
+dnl
+dnl We go to great lengths to make sure that aclocal won't 
+dnl try to pull in the installed version of these macros
+dnl when running aclocal in the glib directory.
+dnl
+m4_copy([AC_DEFUN],[glib_DEFUN])
+m4_copy([AC_REQUIRE],[glib_REQUIRE])
+dnl
+dnl At the end, if we're not within glib, we'll define the public
+dnl definitions in terms of our private definitions.
+dnl
+
+# GLIB_LC_MESSAGES
+#--------------------
+glib_DEFUN([GLIB_LC_MESSAGES],
+  [AC_CHECK_HEADERS([locale.h])
+    if test $ac_cv_header_locale_h = yes; then
+    AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+      [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+       am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+    if test $am_cv_val_LC_MESSAGES = yes; then
+      AC_DEFINE(HAVE_LC_MESSAGES, 1,
+        [Define if your <locale.h> file defines LC_MESSAGES.])
+    fi
+  fi])
 
 
-# serial 5
+# GLIB_PATH_PROG_WITH_TEST
+#----------------------------
+dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
+[# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+  /*)
+  ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+  ;;
+  *)
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in ifelse([$5], , $PATH, [$5]); do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if [$3]; then
+       ac_cv_path_$1="$ac_dir/$ac_word"
+       break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+  ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+  AC_MSG_RESULT([$]$1)
+else
+  AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
 
 
-AC_DEFUN(AM_GLIB_WITH_NLS,
+# GLIB_WITH_NLS
+#-----------------
+glib_DEFUN([GLIB_WITH_NLS],
   dnl NLS is obligatory
   [USE_NLS=yes
     AC_SUBST(USE_NLS)
 
   dnl NLS is obligatory
   [USE_NLS=yes
     AC_SUBST(USE_NLS)
 
-    dnl Figure out what method
-    nls_cv_force_use_gnu_gettext="no"
-
-    nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
-    if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
-      dnl User does not insist on using GNU NLS library.  Figure out what
-      dnl to use.  If gettext or catgets are available (in this order) we
-      dnl use this.  Else we have to fall back to GNU NLS library.
-      dnl catgets is only used if permitted by option --with-catgets.
-      nls_cv_header_intl=
-      nls_cv_header_libgt=
-      CATOBJEXT=NONE
-
-      AC_CHECK_HEADER(libintl.h,
-        [AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
-         [AC_TRY_LINK([#include <libintl.h>], [return (int) dgettext ("","")],
-           gt_cv_func_dgettext_libc=yes, gt_cv_func_dgettext_libc=no)])
-
-         if test "$gt_cv_func_dgettext_libc" != "yes"; then
-           AC_CHECK_LIB(intl, bindtextdomain,
-             [AC_CACHE_CHECK([for dgettext in libintl],
-               gt_cv_func_dgettext_libintl,
-               [AC_CHECK_LIB(intl, dgettext,
-                 gt_cv_func_dgettext_libintl=yes,
-                 gt_cv_func_dgettext_libintl=no)],
-               gt_cv_func_dgettext_libintl=no)])
-         fi
-
-          if test "$gt_cv_func_dgettext_libintl" = "yes"; then
-           LIBS="$LIBS -lintl";
+    gt_cv_have_gettext=no
+
+    CATOBJEXT=NONE
+    XGETTEXT=:
+    INTLLIBS=
+
+    AC_CHECK_HEADER(libintl.h,
+     [gt_cv_func_dgettext_libintl="no"
+      libintl_extra_libs=""
+
+      #
+      # First check in libc
+      #
+      AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc,
+        [AC_TRY_LINK([
+#include <libintl.h>
+],
+         [return !ngettext ("","", 1)],
+         gt_cv_func_ngettext_libc=yes,
+          gt_cv_func_ngettext_libc=no)
+        ])
+  
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+             AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
+               [AC_TRY_LINK([
+#include <libintl.h>
+],
+                 [return !dgettext ("","")],
+                 gt_cv_func_dgettext_libc=yes,
+                 gt_cv_func_dgettext_libc=no)
+               ])
+      fi
+  
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+        AC_CHECK_FUNCS(bind_textdomain_codeset)
+      fi
+
+      #
+      # If we don't have everything we want, check in libintl
+      #
+      if test "$gt_cv_func_dgettext_libc" != "yes" \
+        || test "$gt_cv_func_ngettext_libc" != "yes" \
+         || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+        
+        AC_CHECK_LIB(intl, bindtextdomain,
+           [AC_CHECK_LIB(intl, ngettext,
+                   [AC_CHECK_LIB(intl, dgettext,
+                                 gt_cv_func_dgettext_libintl=yes)])])
+
+       if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+         AC_MSG_CHECKING([if -liconv is needed to use gettext])
+         AC_MSG_RESULT([])
+         AC_CHECK_LIB(intl, ngettext,
+               [AC_CHECK_LIB(intl, dcgettext,
+                      [gt_cv_func_dgettext_libintl=yes
+                       libintl_extra_libs=-liconv],
+                       :,-liconv)],
+               :,-liconv)
+        fi
+
+        #
+        # If we found libintl, then check in it for bind_textdomain_codeset();
+        # we'll prefer libc if neither have bind_textdomain_codeset(),
+        # and both have dgettext and ngettext
+        #
+        if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS -lintl $libintl_extra_libs"
+          unset ac_cv_func_bind_textdomain_codeset
+          AC_CHECK_FUNCS(bind_textdomain_codeset)
+          LIBS="$glib_save_LIBS"
+
+          if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+            gt_cv_func_dgettext_libc=no
+          else
+            if test "$gt_cv_func_dgettext_libc" = "yes" \
+               && test "$gt_cv_func_ngettext_libc" = "yes"; then
+              gt_cv_func_dgettext_libintl=no
+            fi
           fi
           fi
+        fi
+      fi
 
 
-         if test "$gt_cv_func_dgettext_libc" = "yes" \
-           || test "$gt_cv_func_dgettext_libintl" = "yes"; then
-           AC_DEFINE(HAVE_GETTEXT,1,
-              [Define if the GNU gettext() function is already present or preinstalled.])
-           AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
-             [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
-           if test "$MSGFMT" != "no"; then
-             AC_CHECK_FUNCS(dcgettext)
-             AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
-             AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
-               [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
-             AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
-                            return _nl_msg_cat_cntr],
-               [CATOBJEXT=.gmo
-                DATADIRNAME=share],
-               [CATOBJEXT=.mo
-                DATADIRNAME=lib])
-             INSTOBJEXT=.mo
-           fi
-         fi
-
-         # Added by Martin Baulig 12/15/98 for libc5 systems
-         if test "$gt_cv_func_dgettext_libc" != "yes" \
-           && test "$gt_cv_func_dgettext_libintl" = "yes"; then
-           INTLLIBS=-lintl
-           LIBS=`echo $LIBS | sed -e 's/-lintl//'`
-         fi
-      ])
-
-      if test "$CATOBJEXT" = "NONE"; then
-        dnl Neither gettext nor catgets in included in the C library.
-        dnl Fall back on GNU gettext library.
-        nls_cv_use_gnu_gettext=yes
+      if test "$gt_cv_func_dgettext_libc" = "yes" \
+       || test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        gt_cv_have_gettext=yes
       fi
       fi
-    fi
+  
+      if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        INTLLIBS="-lintl $libintl_extra_libs"
+      fi
+  
+      if test "$gt_cv_have_gettext" = "yes"; then
+       AC_DEFINE(HAVE_GETTEXT,1,
+         [Define if the GNU gettext() function is already present or preinstalled.])
+       GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+         [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
+       if test "$MSGFMT" != "no"; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS $INTLLIBS"
+         AC_CHECK_FUNCS(dcgettext)
+         MSGFMT_OPTS=
+         AC_MSG_CHECKING([if msgfmt accepts -c])
+         GLIB_RUN_PROG([$MSGFMT -c -o /dev/null],[
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: test 1.0\n"
+"PO-Revision-Date: 2007-02-15 12:01+0100\n"
+"Last-Translator: test <foo@bar.xx>\n"
+"Language-Team: C <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])
+         AC_SUBST(MSGFMT_OPTS)
+         AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+         GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+           [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+         AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
+                        return _nl_msg_cat_cntr],
+           [CATOBJEXT=.gmo 
+             DATADIRNAME=share],
+           [case $host in
+           *-*-solaris*)
+           dnl On Solaris, if bind_textdomain_codeset is in libc,
+           dnl GNU format message catalog is always supported,
+            dnl since both are added to the libc all together.
+           dnl Hence, we'd like to go with DATADIRNAME=share and
+           dnl and CATOBJEXT=.gmo in this case.
+            AC_CHECK_FUNC(bind_textdomain_codeset,
+             [CATOBJEXT=.gmo 
+               DATADIRNAME=share],
+             [CATOBJEXT=.mo
+               DATADIRNAME=lib])
+           ;;
+           *-*-openbsd*)
+           CATOBJEXT=.mo
+            DATADIRNAME=share
+           ;;
+           *)
+           CATOBJEXT=.mo
+            DATADIRNAME=lib
+           ;;
+           esac])
+          LIBS="$glib_save_LIBS"
+         INSTOBJEXT=.mo
+       else
+         gt_cv_have_gettext=no
+       fi
+      fi
+    ])
 
 
-    if test "$nls_cv_use_gnu_gettext" != "yes"; then
+    if test "$gt_cv_have_gettext" = "yes" ; then
       AC_DEFINE(ENABLE_NLS, 1,
         [always defined to indicate that i18n is enabled])
       AC_DEFINE(ENABLE_NLS, 1,
         [always defined to indicate that i18n is enabled])
-    else
-      dnl Unset this variable since we use the non-zero value as a flag.
-      CATOBJEXT=
     fi
 
     dnl Test whether we really found GNU xgettext.
     if test "$XGETTEXT" != ":"; then
     fi
 
     dnl Test whether we really found GNU xgettext.
     if test "$XGETTEXT" != ":"; then
-      dnl If it is no GNU xgettext we define it as : so that the
+      dnl If it is not GNU xgettext we define it as : so that the
       dnl Makefiles still can work.
       if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
         : ;
       dnl Makefiles still can work.
       if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
         : ;
@@ -252,15 +293,12 @@ AC_DEFUN(AM_GLIB_WITH_NLS,
 
     AC_OUTPUT_COMMANDS(
       [case "$CONFIG_FILES" in *po/Makefile.in*)
 
     AC_OUTPUT_COMMANDS(
       [case "$CONFIG_FILES" in *po/Makefile.in*)
-        rm -f po/stamp-it po/stamp-it.tmp
-        > po/stamp-it.tmp
         sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
         sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
-        mv po/stamp-it.tmp po/stamp-it
       esac])
 
     dnl These rules are solely for the distribution goal.  While doing this
     dnl we only have to keep exactly one list of the available catalogs
       esac])
 
     dnl These rules are solely for the distribution goal.  While doing this
     dnl we only have to keep exactly one list of the available catalogs
-    dnl in configure.in.
+    dnl in configure.ac.
     for lang in $ALL_LINGUAS; do
       GMOFILES="$GMOFILES $lang.gmo"
       POFILES="$POFILES $lang.po"
     for lang in $ALL_LINGUAS; do
       GMOFILES="$GMOFILES $lang.gmo"
       POFILES="$POFILES $lang.po"
@@ -272,43 +310,55 @@ AC_DEFUN(AM_GLIB_WITH_NLS,
     AC_SUBST(DATADIRNAME)
     AC_SUBST(GMOFILES)
     AC_SUBST(INSTOBJEXT)
     AC_SUBST(DATADIRNAME)
     AC_SUBST(GMOFILES)
     AC_SUBST(INSTOBJEXT)
-    AC_SUBST(INTLDEPS)
     AC_SUBST(INTLLIBS)
     AC_SUBST(INTLLIBS)
-    AC_SUBST(INTLOBJS)
+    AC_SUBST(PO_IN_DATADIR_TRUE)
+    AC_SUBST(PO_IN_DATADIR_FALSE)
     AC_SUBST(POFILES)
     AC_SUBST(POSUB)
   ])
 
     AC_SUBST(POFILES)
     AC_SUBST(POSUB)
   ])
 
-AC_DEFUN(AM_GLIB_GNU_GETTEXT,
-  [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-   AC_REQUIRE([AC_PROG_CC])dnl
-   AC_REQUIRE([AC_PROG_RANLIB])dnl
-   AC_REQUIRE([AC_HEADER_STDC])dnl
-   AC_REQUIRE([AC_C_CONST])dnl
-   AC_REQUIRE([AC_C_INLINE])dnl
-   AC_REQUIRE([AC_TYPE_OFF_T])dnl
-   AC_REQUIRE([AC_TYPE_SIZE_T])dnl
-   AC_REQUIRE([AC_FUNC_ALLOCA])dnl
-   AC_REQUIRE([AC_FUNC_MMAP])dnl
-
-   AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
-unistd.h sys/param.h])
-   AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
-strdup __argz_count __argz_stringify __argz_next])
-
-   AM_LC_MESSAGES
-   AM_GLIB_WITH_NLS
-
-   if test "x$CATOBJEXT" != "x"; then
+# AM_GLIB_GNU_GETTEXT
+# -------------------
+# Do checks necessary for use of gettext. If a suitable implementation 
+# of gettext is found in either in libintl or in the C library,
+# it will set INTLLIBS to the libraries needed for use of gettext
+# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
+# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
+# on various variables needed by the Makefile.in.in installed by 
+# glib-gettextize.
+dnl
+glib_DEFUN([GLIB_GNU_GETTEXT],
+  [AC_REQUIRE([AC_PROG_CC])dnl
+   
+   GLIB_LC_MESSAGES
+   GLIB_WITH_NLS
+
+   if test "$gt_cv_have_gettext" = "yes"; then
      if test "x$ALL_LINGUAS" = "x"; then
        LINGUAS=
      else
        AC_MSG_CHECKING(for catalogs to be installed)
        NEW_LINGUAS=
      if test "x$ALL_LINGUAS" = "x"; then
        LINGUAS=
      else
        AC_MSG_CHECKING(for catalogs to be installed)
        NEW_LINGUAS=
-       for lang in ${LINGUAS=$ALL_LINGUAS}; do
-         case "$ALL_LINGUAS" in
-          *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
-         esac
+       for presentlang in $ALL_LINGUAS; do
+         useit=no
+         if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+           desiredlanguages="$LINGUAS"
+         else
+           desiredlanguages="$ALL_LINGUAS"
+         fi
+         for desiredlang in $desiredlanguages; do
+          # Use the presentlang catalog if desiredlang is
+           #   a. equal to presentlang, or
+           #   b. a variant of presentlang (because in this case,
+           #      presentlang can be used as a fallback for messages
+           #      which are not translated in the desiredlang catalog).
+           case "$desiredlang" in
+             "$presentlang"*) useit=yes;;
+           esac
+         done
+         if test $useit = yes; then
+           NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+         fi
        done
        LINGUAS=$NEW_LINGUAS
        AC_MSG_RESULT($LINGUAS)
        done
        LINGUAS=$NEW_LINGUAS
        AC_MSG_RESULT($LINGUAS)
@@ -320,38 +370,16 @@ strdup __argz_count __argz_stringify __argz_next])
      fi
    fi
 
      fi
    fi
 
-   dnl Determine which catalog format we have (if any is needed)
-   dnl For now we know about two different formats:
-   dnl   Linux libc-5 and the normal X/Open format
-   test -d po || mkdir po
-   if test "$CATOBJEXT" = ".cat"; then
-     AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
-
-     dnl Transform the SED scripts while copying because some dumb SEDs
-     dnl cannot handle comments.
-     sed -e '/^#/d' $srcdir/po/$msgformat-msg.sed > po/po2msg.sed
-   fi
-
    dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
    dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
    dnl Try to locate is.
    MKINSTALLDIRS=
    dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
    dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
    dnl Try to locate is.
    MKINSTALLDIRS=
-#
-# jwz: fuck this!  it puts hardcoded pathnames into the generated Makefiles!
-#
-#   if test -n "$ac_aux_dir"; then
-#     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
-#   fi
+   if test -n "$ac_aux_dir"; then
+     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+   fi
    if test -z "$MKINSTALLDIRS"; then
      MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
    fi
    if test -z "$MKINSTALLDIRS"; then
      MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
    fi
-
-   # jwz: you know what, screw it.  Let's just use the version that I
-   # already computed in configure.in, instead of this version that came
-   # with the i18n crud, ok?
-   MKINSTALLDIRS="$INSTALL_DIRS"
-
-
    AC_SUBST(MKINSTALLDIRS)
 
    dnl Generate list of files to be processed by xgettext which will
    AC_SUBST(MKINSTALLDIRS)
 
    dnl Generate list of files to be processed by xgettext which will
@@ -371,73 +399,296 @@ strdup __argz_count __argz_stringify __argz_next])
        < $srcdir/po/POTFILES.in > po/POTFILES
   ])
 
        < $srcdir/po/POTFILES.in > po/POTFILES
   ])
 
+# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
+# -------------------------------
+# Define VARIABLE to the location where catalog files will
+# be installed by po/Makefile.
+glib_DEFUN([GLIB_DEFINE_LOCALEDIR],
+[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
+glib_save_prefix="$prefix"
+glib_save_exec_prefix="$exec_prefix"
+glib_save_datarootdir="$datarootdir"
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+test "x$exec_prefix" = xNONE && exec_prefix=$prefix
+datarootdir=`eval echo "${datarootdir}"`
+if test "x$CATOBJEXT" = "x.mo" ; then
+  localedir=`eval echo "${libdir}/locale"`
+else
+  localedir=`eval echo "${datadir}/locale"`
+fi
+prefix="$glib_save_prefix"
+exec_prefix="$glib_save_exec_prefix"
+datarootdir="$glib_save_datarootdir"
+AC_DEFINE_UNQUOTED($1, "$localedir",
+  [Define the location where the catalogs will be installed])
+])
 
 
-# Search path for a program which passes the given test.
-# Ulrich Drepper <drepper@cygnus.com>, 1996.
-#
-# This file can be copied and used freely without restrictions.  It can
-# be used in projects which are not available under the GNU Public License
-# but which still want to provide support for the GNU gettext functionality.
-# Please note that the actual code is *not* freely available.
+dnl
+dnl Now the definitions that aclocal will find
+dnl
+ifdef(glib_configure_ac,[],[
+AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
+AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
+])dnl
 
 
-# serial 1
+# GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL])
+# 
+# Create a temporary file with TEST-FILE as its contents and pass the
+# file name to PROGRAM.  Perform ACTION-IF-PASS if PROGRAM exits with
+# 0 and perform ACTION-IF-FAIL for any other exit status.
+AC_DEFUN([GLIB_RUN_PROG],
+[cat >conftest.foo <<_ACEOF
+$2
+_ACEOF
+if AC_RUN_LOG([$1 conftest.foo]); then
+  m4_ifval([$3], [$3], [:])
+m4_ifvaln([$4], [else $4])dnl
+echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD
+sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD
+fi])
+
+
+
+dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
+# serial 42 IT_PROG_INTLTOOL
+AC_DEFUN([IT_PROG_INTLTOOL], [
+AC_PREREQ([2.50])dnl
+AC_REQUIRE([AM_NLS])dnl
+
+case "$am__api_version" in
+    1.[01234])
+       AC_MSG_ERROR([Automake 1.5 or newer is required to use intltool])
+    ;;
+    *)
+    ;;
+esac
+
+INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3`
+INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+if test -n "$1"; then
+    AC_MSG_CHECKING([for intltool >= $1])
+    AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
+    test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
+       AC_MSG_ERROR([Your intltool is too old.  You need intltool $1 or later.])
+fi
 
 
-dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
-dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-AC_DEFUN([AM_PATH_PROG_WITH_TEST],
-[# Extract the first word of "$2", so it can be a program name with args.
-set dummy $2; ac_word=[$]2
-AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL(ac_cv_path_$1,
-[case "[$]$1" in
-  /*)
-  ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in ifelse([$5], , $PATH, [$5]); do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if [$3]; then
-       ac_cv_path_$1="$ac_dir/$ac_word"
-       break
-      fi
-    fi
-  done
-  IFS="$ac_save_ifs"
-dnl If no 4th arg is given, leave the cache variable unset,
-dnl so AC_PATH_PROGS will keep looking.
-ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-])dnl
-  ;;
-esac])dnl
-$1="$ac_cv_path_$1"
-if test -n "[$]$1"; then
-  AC_MSG_RESULT([$]$1)
+AC_PATH_PROG(INTLTOOL_UPDATE, [intltool-update])
+AC_PATH_PROG(INTLTOOL_MERGE, [intltool-merge])
+AC_PATH_PROG(INTLTOOL_EXTRACT, [intltool-extract])
+if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then
+    AC_MSG_ERROR([The intltool scripts were not found. Please install intltool.])
+fi
+
+if test -z "$AM_DEFAULT_VERBOSITY"; then
+  AM_DEFAULT_VERBOSITY=1
+fi
+AC_SUBST([AM_DEFAULT_VERBOSITY])
+
+INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))'
+INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))'
+INTLTOOL__v_MERGE_0='@echo "  ITMRG " [$]@;'
+AC_SUBST(INTLTOOL_V_MERGE)
+AC_SUBST(INTLTOOL__v_MERGE_)
+AC_SUBST(INTLTOOL__v_MERGE_0)
+
+INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))'
+intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))'
+intltool__v_merge_options_0='-q'
+AC_SUBST(INTLTOOL_V_MERGE_OPTIONS)
+AC_SUBST(intltool__v_merge_options_)
+AC_SUBST(intltool__v_merge_options_0)
+
+  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< [$]@'
+     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then
+      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< [$]@'
 else
 else
-  AC_MSG_RESULT(no)
+      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.[$][$]RANDOM && mkdir [$][$]_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u [$][$]_it_tmp_dir $< [$]@ && rmdir [$][$]_it_tmp_dir'
 fi
 fi
-AC_SUBST($1)dnl
+      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_SERVICE_RULE='%.service: %.service.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+   INTLTOOL_POLICY_RULE='%.policy:    %.policy.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+
+_IT_SUBST(INTLTOOL_DESKTOP_RULE)
+_IT_SUBST(INTLTOOL_DIRECTORY_RULE)
+_IT_SUBST(INTLTOOL_KEYS_RULE)
+_IT_SUBST(INTLTOOL_PROP_RULE)
+_IT_SUBST(INTLTOOL_OAF_RULE)
+_IT_SUBST(INTLTOOL_PONG_RULE)
+_IT_SUBST(INTLTOOL_SERVER_RULE)
+_IT_SUBST(INTLTOOL_SHEET_RULE)
+_IT_SUBST(INTLTOOL_SOUNDLIST_RULE)
+_IT_SUBST(INTLTOOL_UI_RULE)
+_IT_SUBST(INTLTOOL_XAM_RULE)
+_IT_SUBST(INTLTOOL_KBD_RULE)
+_IT_SUBST(INTLTOOL_XML_RULE)
+_IT_SUBST(INTLTOOL_XML_NOMERGE_RULE)
+_IT_SUBST(INTLTOOL_CAVES_RULE)
+_IT_SUBST(INTLTOOL_SCHEMAS_RULE)
+_IT_SUBST(INTLTOOL_THEME_RULE)
+_IT_SUBST(INTLTOOL_SERVICE_RULE)
+_IT_SUBST(INTLTOOL_POLICY_RULE)
+
+# Check the gettext tools to make sure they are GNU
+AC_PATH_PROG(XGETTEXT, xgettext)
+AC_PATH_PROG(MSGMERGE, msgmerge)
+AC_PATH_PROG(MSGFMT, msgfmt)
+AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then
+    AC_MSG_ERROR([GNU gettext tools not found; required for intltool])
+fi
+xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`"
+mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`"
+mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`"
+if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then
+    AC_MSG_ERROR([GNU gettext tools not found; required for intltool])
+fi
+
+# Substitute ALL_LINGUAS so we can use it in po/Makefile
+AC_SUBST(ALL_LINGUAS)
+
+# Set DATADIRNAME correctly if it is not set yet
+# (copied from glib-gettext.m4)
+if test -z "$DATADIRNAME"; then
+  AC_LINK_IFELSE(
+    [AC_LANG_PROGRAM([[]],
+                     [[extern int _nl_msg_cat_cntr;
+                       return _nl_msg_cat_cntr]])],
+    [DATADIRNAME=share],
+    [case $host in
+    *-*-solaris*)
+    dnl On Solaris, if bind_textdomain_codeset is in libc,
+    dnl GNU format message catalog is always supported,
+    dnl since both are added to the libc all together.
+    dnl Hence, we'd like to go with DATADIRNAME=share
+    dnl in this case.
+    AC_CHECK_FUNC(bind_textdomain_codeset,
+      [DATADIRNAME=share], [DATADIRNAME=lib])
+    ;;
+    *)
+    [DATADIRNAME=lib]
+    ;;
+    esac])
+fi
+AC_SUBST(DATADIRNAME)
+
+IT_PO_SUBDIR([po])
+
 ])
 
 ])
 
-# Check whether LC_MESSAGES is available in <locale.h>.
-# Ulrich Drepper <drepper@cygnus.com>, 1995.
+
+# IT_PO_SUBDIR(DIRNAME)
+# ---------------------
+# All po subdirs have to be declared with this macro; the subdir "po" is
+# declared by IT_PROG_INTLTOOL.
 #
 #
-# This file can be copied and used freely without restrictions.  It can
-# be used in projects which are not available under the GNU Public License
-# but which still want to provide support for the GNU gettext functionality.
-# Please note that the actual code is *not* freely available.
+AC_DEFUN([IT_PO_SUBDIR],
+[AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS.
+dnl
+dnl The following CONFIG_COMMANDS should be executed at the very end
+dnl of config.status.
+AC_CONFIG_COMMANDS_PRE([
+  AC_CONFIG_COMMANDS([$1/stamp-it], [
+    if [ ! grep "^# INTLTOOL_MAKEFILE$" "$1/Makefile.in" > /dev/null ]; then
+       AC_MSG_ERROR([$1/Makefile.in.in was not created by intltoolize.])
+    fi
+    rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp"
+    >"$1/stamp-it.tmp"
+    [sed '/^#/d
+        s/^[[].*] *//
+        /^[    ]*$/d
+       '"s|^|  $ac_top_srcdir/|" \
+      "$srcdir/$1/POTFILES.in" | sed '$!s/$/ \\/' >"$1/POTFILES"
+    ]
+    [sed '/^POTFILES =/,/[^\\]$/ {
+               /^POTFILES =/!d
+               r $1/POTFILES
+         }
+        ' "$1/Makefile.in" >"$1/Makefile"]
+    rm -f "$1/Makefile.tmp"
+    mv "$1/stamp-it.tmp" "$1/stamp-it"
+  ])
+])dnl
+])
 
 
-# serial 2
+# _IT_SUBST(VARIABLE)
+# -------------------
+# Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST
+#
+AC_DEFUN([_IT_SUBST],
+[
+AC_SUBST([$1])
+m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])])
+]
+)
 
 
-AC_DEFUN([AM_LC_MESSAGES],
-  [if test $ac_cv_header_locale_h = yes; then
-    AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
-      [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
-       am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
-    if test $am_cv_val_LC_MESSAGES = yes; then
-      AC_DEFINE(HAVE_LC_MESSAGES, 1,
-        [Define if your <locale.h> file defines LC_MESSAGES.])
-    fi
-  fi])
+# deprecated macros
+AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL])
+# A hint is needed for aclocal from Automake <= 1.9.4:
+# AC_DEFUN([AC_PROG_INTLTOOL], ...)
+
+
+# nls.m4 serial 5 (gettext-0.18)
+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2013 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ([2.50])
+
+AC_DEFUN([AM_NLS],
+[
+  AC_MSG_CHECKING([whether NLS is requested])
+  dnl Default is enabled NLS
+  AC_ARG_ENABLE([nls],
+    [  --disable-nls           do not use Native Language Support],
+    USE_NLS=$enableval, USE_NLS=yes)
+  AC_MSG_RESULT([$USE_NLS])
+  AC_SUBST([USE_NLS])
+])
+
+# Copyright (C) 2006-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 
index 21d1576c60bebc5d4a807426eee4a4799c3055d3..feea63b58a42ccfb9542435c5b11dfac2c3f08d6 100644 (file)
@@ -1,7 +1,7 @@
 /* config.h.in.  Generated from configure.in by autoheader.  */
 
 
 /* config.h.in.  Generated from configure.in by autoheader.  */
 
 
-/* config.h.in --- xscreensaver, Copyright (c) 1998-2000 Jamie Zawinski.
+/* config.h.in --- xscreensaver, Copyright (c) 1991-2014 Jamie Zawinski.
  *
  *  The best way to set these parameters is by running the included `configure'
  *  script.  That examines your system, and generates `config.h' from 
  *
  *  The best way to set these parameters is by running the included `configure'
  *  script.  That examines your system, and generates `config.h' from 
 /* Define this to allow the root password to unlock the screen. */
 #undef ALLOW_ROOT_PASSWD
 
 /* Define this to allow the root password to unlock the screen. */
 #undef ALLOW_ROOT_PASSWD
 
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-   systems. This function is required for `alloca.c' support on those systems.
-   */
-#undef CRAY_STACKSEG_END
-
-/* Define to 1 if using `alloca.c'. */
-#undef C_ALLOCA
-
 /* always defined to indicate that i18n is enabled */
 #undef ENABLE_NLS
 
 /* always defined to indicate that i18n is enabled */
 #undef ENABLE_NLS
 
    getpwnam().) I haven't tested this one, let me know if it works. */
 #undef HAVE_ADJUNCT_PASSWD
 
    getpwnam().) I haven't tested this one, let me know if it works. */
 #undef HAVE_ADJUNCT_PASSWD
 
-/* Define to 1 if you have `alloca', as a function or macro. */
-#undef HAVE_ALLOCA
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-   */
-#undef HAVE_ALLOCA_H
-
-/* Define to 1 if you have the <argz.h> header file. */
-#undef HAVE_ARGZ_H
+/* Define to 1 if you have the `bind_textdomain_codeset' function. */
+#undef HAVE_BIND_TEXTDOMAIN_CODESET
 
 /* Define this if you have Gnome and want to build support for the
    xscreensaver control panel in the Gnome Control Center (gnomecc). (This is
 
 /* Define this if you have Gnome and want to build support for the
    xscreensaver control panel in the Gnome Control Center (gnomecc). (This is
 /* Define this if you have the getifaddrs() function. */
 #undef HAVE_GETIFADDRS
 
 /* Define this if you have the getifaddrs() function. */
 #undef HAVE_GETIFADDRS
 
-/* Define to 1 if you have the `getpagesize' function. */
-#undef HAVE_GETPAGESIZE
-
 /* Define if the GNU gettext() function is already present or preinstalled. */
 #undef HAVE_GETTEXT
 
 /* Define if the GNU gettext() function is already present or preinstalled. */
 #undef HAVE_GETTEXT
 
 /* Define if your <locale.h> file defines LC_MESSAGES. */
 #undef HAVE_LC_MESSAGES
 
 /* Define if your <locale.h> file defines LC_MESSAGES. */
 #undef HAVE_LC_MESSAGES
 
-/* Define to 1 if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
-
 /* Define to 1 if you have the <locale.h> header file. */
 #undef HAVE_LOCALE_H
 
 /* Define to 1 if you have the <locale.h> header file. */
 #undef HAVE_LOCALE_H
 
-/* Define to 1 if you have the <malloc.h> header file. */
-#undef HAVE_MALLOC_H
-
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
    have different names.) (HAVE_GL should be defined too.) */
 #undef HAVE_MESA_GL
 
    have different names.) (HAVE_GL should be defined too.) */
 #undef HAVE_MESA_GL
 
-/* Define to 1 if you have a working `mmap' system call. */
-#undef HAVE_MMAP
-
 /* Define this if you have Motif. */
 #undef HAVE_MOTIF
 
 /* Define this if you have Motif. */
 #undef HAVE_MOTIF
 
-/* Define to 1 if you have the `munmap' function. */
-#undef HAVE_MUNMAP
-
 /* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
 #undef HAVE_NDIR_H
 
 /* Define to 1 if you have the `nice' function. */
 #undef HAVE_NICE
 
 /* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
 #undef HAVE_NDIR_H
 
 /* Define to 1 if you have the `nice' function. */
 #undef HAVE_NICE
 
-/* Define to 1 if you have the <nl_types.h> header file. */
-#undef HAVE_NL_TYPES_H
-
 /* Define this if you have the XML library headers in their old,
    non-namespaced location (you lack the gnome-xml/libxml symlink) */
 #undef HAVE_OLD_XML_HEADERS
 /* Define this if you have the XML library headers in their old,
    non-namespaced location (you lack the gnome-xml/libxml symlink) */
 #undef HAVE_OLD_XML_HEADERS
 /* Define to 1 if you have the `select' function. */
 #undef HAVE_SELECT
 
 /* Define to 1 if you have the `select' function. */
 #undef HAVE_SELECT
 
-/* Define to 1 if you have the `setenv' function. */
-#undef HAVE_SETENV
-
 /* Define to 1 if you have the `setlocale' function. */
 #undef HAVE_SETLOCALE
 
 /* Define to 1 if you have the `setlocale' function. */
 #undef HAVE_SETLOCALE
 
 /* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H
 
 /* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H
 
-/* Define to 1 if you have the `strcasecmp' function. */
-#undef HAVE_STRCASECMP
-
-/* Define to 1 if you have the `strchr' function. */
-#undef HAVE_STRCHR
-
-/* Define to 1 if you have the `strdup' function. */
-#undef HAVE_STRDUP
-
 /* Define to 1 if you have the <strings.h> header file. */
 #undef HAVE_STRINGS_H
 
 /* Define to 1 if you have the <strings.h> header file. */
 #undef HAVE_STRINGS_H
 
    */
 #undef HAVE_SYS_NDIR_H
 
    */
 #undef HAVE_SYS_NDIR_H
 
-/* Define to 1 if you have the <sys/param.h> header file. */
-#undef HAVE_SYS_PARAM_H
-
 /* Define to 1 if you have the <sys/select.h> header file. */
 #undef HAVE_SYS_SELECT_H
 
 /* Define to 1 if you have the <sys/select.h> header file. */
 #undef HAVE_SYS_SELECT_H
 
 /* Define this if you have the X Shared Memory Extension. */
 #undef HAVE_XSHM_EXTENSION
 
 /* Define this if you have the X Shared Memory Extension. */
 #undef HAVE_XSHM_EXTENSION
 
-/* Define to 1 if you have the `__argz_count' function. */
-#undef HAVE___ARGZ_COUNT
-
-/* Define to 1 if you have the `__argz_next' function. */
-#undef HAVE___ARGZ_NEXT
-
-/* Define to 1 if you have the `__argz_stringify' function. */
-#undef HAVE___ARGZ_STRINGIFY
-
 /* Define this to remove the option of locking the screen at all. */
 #undef NO_LOCKING
 
 /* Define this to remove the option of locking the screen at all. */
 #undef NO_LOCKING
 
 /* Define as the return type of signal handlers (`int' or `void'). */
 #undef RETSIGTYPE
 
 /* Define as the return type of signal handlers (`int' or `void'). */
 #undef RETSIGTYPE
 
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at runtime.
-       STACK_DIRECTION > 0 => grows toward higher addresses
-       STACK_DIRECTION < 0 => grows toward lower addresses
-       STACK_DIRECTION = 0 => direction of growth unknown */
-#undef STACK_DIRECTION
-
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
 /* Define to `int' if <sys/types.h> does not define. */
 #undef mode_t
 
 /* Define to `int' if <sys/types.h> does not define. */
 #undef mode_t
 
-/* Define to `long int' if <sys/types.h> does not define. */
-#undef off_t
-
 /* Define to `int' if <sys/types.h> does not define. */
 #undef pid_t
 
 /* Define to `int' if <sys/types.h> does not define. */
 #undef pid_t
 
index c12874b0cf366260b175710dc10b44251a66360c..1139ff82a94c617bbbd012a32c06d8bc2ffc6b75 100755 (executable)
--- a/configure
+++ b/configure
@@ -619,7 +619,6 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
 # include <unistd.h>
 #endif"
 
-ac_header_list=
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
 DEPEND_DEFINES
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
 DEPEND_DEFINES
@@ -697,21 +696,51 @@ login_manager_tmp
 MKINSTALLDIRS
 POSUB
 POFILES
 MKINSTALLDIRS
 POSUB
 POFILES
-INTLOBJS
+PO_IN_DATADIR_FALSE
+PO_IN_DATADIR_TRUE
 INTLLIBS
 INTLLIBS
-INTLDEPS
 INSTOBJEXT
 GMOFILES
 INSTOBJEXT
 GMOFILES
-DATADIRNAME
 CATOBJEXT
 CATALOGS
 CATOBJEXT
 CATALOGS
-XGETTEXT
+MSGFMT_OPTS
+GETTEXT_PACKAGE
+DATADIRNAME
+ALL_LINGUAS
 GMSGFMT
 MSGFMT
 GMSGFMT
 MSGFMT
+MSGMERGE
+XGETTEXT
+INTLTOOL_POLICY_RULE
+INTLTOOL_SERVICE_RULE
+INTLTOOL_THEME_RULE
+INTLTOOL_SCHEMAS_RULE
+INTLTOOL_CAVES_RULE
+INTLTOOL_XML_NOMERGE_RULE
+INTLTOOL_XML_RULE
+INTLTOOL_KBD_RULE
+INTLTOOL_XAM_RULE
+INTLTOOL_UI_RULE
+INTLTOOL_SOUNDLIST_RULE
+INTLTOOL_SHEET_RULE
+INTLTOOL_SERVER_RULE
+INTLTOOL_PONG_RULE
+INTLTOOL_OAF_RULE
+INTLTOOL_PROP_RULE
+INTLTOOL_KEYS_RULE
+INTLTOOL_DIRECTORY_RULE
+INTLTOOL_DESKTOP_RULE
+intltool__v_merge_options_0
+intltool__v_merge_options_
+INTLTOOL_V_MERGE_OPTIONS
+INTLTOOL__v_MERGE_0
+INTLTOOL__v_MERGE_
+INTLTOOL_V_MERGE
+AM_DEFAULT_VERBOSITY
+INTLTOOL_EXTRACT
+INTLTOOL_MERGE
+INTLTOOL_UPDATE
 USE_NLS
 USE_NLS
-ALLOCA
-RANLIB
-GETTEXT_PACKAGE
 X_EXTRA_LIBS
 X_LIBS
 X_PRE_LIBS
 X_EXTRA_LIBS
 X_LIBS
 X_PRE_LIBS
@@ -789,6 +818,7 @@ with_x_app_defaults
 with_pthread
 enable_largefile
 with_x
 with_pthread
 enable_largefile
 with_x
+enable_nls
 with_hackdir
 enable_subdir
 with_configdir
 with_hackdir
 enable_subdir
 with_configdir
@@ -1448,6 +1478,7 @@ Optional Features:
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --disable-largefile     omit support for large files
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --disable-largefile     omit support for large files
+  --disable-nls           do not use Native Language Support
 
 Screen locking options:
   --enable-locking        Compile in support for locking the display.
 
 Screen locking options:
   --enable-locking        Compile in support for locking the display.
@@ -2298,9 +2329,6 @@ $as_echo "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
 
   >$cache_file
 fi
 
-as_fn_append ac_header_list " stdlib.h"
-as_fn_append ac_header_list " unistd.h"
-as_fn_append ac_header_list " sys/param.h"
 # Check that the precious variables saved in the cache have kept the same
 # value.
 ac_cache_corrupted=false
 # Check that the precious variables saved in the cache have kept the same
 # value.
 ac_cache_corrupted=false
@@ -4228,10 +4256,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
       $as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
 
       CC=$PTHREAD_CC
       $as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
 
       CC=$PTHREAD_CC
-
-      # AX_PTHREAD documentation specifically suggests this...
-      LIBS="$PTHREAD_LIBS $LIBS"
-      CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
     fi
   fi
  # Needs ac_original_cc.
     fi
   fi
  # Needs ac_original_cc.
@@ -7016,40 +7040,62 @@ $as_echo "$ac_macosx" >&6; }
 #
 ###############################################################################
 
 #
 ###############################################################################
 
-IT_PROG_INTLTOOL
-GETTEXT_PACKAGE=xscreensaver
 
 
-cat >>confdefs.h <<_ACEOF
-#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE"
-_ACEOF
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+    # Check whether --enable-nls was given.
+if test "${enable_nls+set}" = set; then :
+  enableval=$enable_nls; USE_NLS=$enableval
+else
+  USE_NLS=yes
+fi
 
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
 
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$GETTEXT_PACKAGE"
-_ACEOF
 
 
 
 
 
 
-ALL_LINGUAS="ca da de es et fi fr hu it ja ko nb nl pl pt pt_BR ru sk sv vi wa zh_CN zh_TW"
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+case "$am__api_version" in
+    1.01234)
+       as_fn_error $? "Automake 1.5 or newer is required to use intltool" "$LINENO" 5
+    ;;
+    *)
+    ;;
+esac
+
+INTLTOOL_REQUIRED_VERSION_AS_INT=`echo  | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3`
+INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+if test -n ""; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intltool >= " >&5
+$as_echo_n "checking for intltool >= ... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_APPLIED_VERSION found" >&5
+$as_echo "$INTLTOOL_APPLIED_VERSION found" >&6; }
+    test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
+       as_fn_error $? "Your intltool is too old.  You need intltool  or later." "$LINENO" 5
+fi
+
+# Extract the first word of "intltool-update", so it can be a program name with args.
+set dummy intltool-update; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
+if ${ac_cv_path_INTLTOOL_UPDATE+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  case $INTLTOOL_UPDATE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_INTLTOOL_UPDATE="$INTLTOOL_UPDATE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    ac_cv_path_INTLTOOL_UPDATE="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -7057,39 +7103,39 @@ done
   done
 IFS=$as_save_IFS
 
   done
 IFS=$as_save_IFS
 
+  ;;
+esac
 fi
 fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
+INTLTOOL_UPDATE=$ac_cv_path_INTLTOOL_UPDATE
+if test -n "$INTLTOOL_UPDATE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_UPDATE" >&5
+$as_echo "$INTLTOOL_UPDATE" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
+# Extract the first word of "intltool-merge", so it can be a program name with args.
+set dummy intltool-merge; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+if ${ac_cv_path_INTLTOOL_MERGE+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  case $INTLTOOL_MERGE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_INTLTOOL_MERGE="$INTLTOOL_MERGE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    ac_cv_path_INTLTOOL_MERGE="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -7097,460 +7143,446 @@ done
   done
 IFS=$as_save_IFS
 
   done
 IFS=$as_save_IFS
 
+  ;;
+esac
 fi
 fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
+INTLTOOL_MERGE=$ac_cv_path_INTLTOOL_MERGE
+if test -n "$INTLTOOL_MERGE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_MERGE" >&5
+$as_echo "$INTLTOOL_MERGE" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
 
 
-ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
-if test "x$ac_cv_type_off_t" = xyes; then :
+# Extract the first word of "intltool-extract", so it can be a program name with args.
+set dummy intltool-extract; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_INTLTOOL_EXTRACT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $INTLTOOL_EXTRACT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_INTLTOOL_EXTRACT="$INTLTOOL_EXTRACT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_INTLTOOL_EXTRACT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
 
+  ;;
+esac
+fi
+INTLTOOL_EXTRACT=$ac_cv_path_INTLTOOL_EXTRACT
+if test -n "$INTLTOOL_EXTRACT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_EXTRACT" >&5
+$as_echo "$INTLTOOL_EXTRACT" >&6; }
 else
 else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
-cat >>confdefs.h <<_ACEOF
-#define off_t long int
-_ACEOF
 
 
+if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then
+    as_fn_error $? "The intltool scripts were not found. Please install intltool." "$LINENO" 5
 fi
 
 fi
 
-# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
-# for constant arguments.  Useless!
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
-$as_echo_n "checking for working alloca.h... " >&6; }
-if ${ac_cv_working_alloca_h+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <alloca.h>
-int
-main ()
-{
-char *p = (char *) alloca (2 * sizeof (int));
-                         if (p) return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_working_alloca_h=yes
-else
-  ac_cv_working_alloca_h=no
+if test -z "$AM_DEFAULT_VERBOSITY"; then
+  AM_DEFAULT_VERBOSITY=1
 fi
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
-$as_echo "$ac_cv_working_alloca_h" >&6; }
-if test $ac_cv_working_alloca_h = yes; then
 
 
-$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
 
 
-fi
+INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))'
+INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))'
+INTLTOOL__v_MERGE_0='@echo "  ITMRG " $@;'
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
-$as_echo_n "checking for alloca... " >&6; }
-if ${ac_cv_func_alloca_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
-#  include <malloc.h>
-#  define alloca _alloca
-# else
-#  ifdef HAVE_ALLOCA_H
-#   include <alloca.h>
-#  else
-#   ifdef _AIX
- #pragma alloca
-#   else
-#    ifndef alloca /* predefined by HP cc +Olibcalls */
-void *alloca (size_t);
-#    endif
-#   endif
-#  endif
-# endif
-#endif
 
 
-int
-main ()
-{
-char *p = (char *) alloca (1);
-                                   if (p) return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_func_alloca_works=yes
+
+
+INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))'
+intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))'
+intltool__v_merge_options_0='-q'
+
+
+
+
+  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< $@'
+     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then
+      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< $@'
 else
 else
-  ac_cv_func_alloca_works=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
+      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.$$RANDOM && mkdir $$_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u $$_it_tmp_dir $< $@ && rmdir $$_it_tmp_dir'
 fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
-$as_echo "$ac_cv_func_alloca_works" >&6; }
+      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_SERVICE_RULE='%.service: %.service.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+   INTLTOOL_POLICY_RULE='%.policy:    %.policy.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+
+
+
+
+
+
+
+
+
+
+
+
 
 
-if test $ac_cv_func_alloca_works = yes; then
 
 
-$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
 
 
-else
-  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
-# that cause trouble.  Some versions do not even contain alloca or
-# contain a buggy version.  If you still want to use their alloca,
-# use ar to extract alloca.o from them instead of compiling alloca.c.
 
 
-ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
 
 
-$as_echo "#define C_ALLOCA 1" >>confdefs.h
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
-$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
-if ${ac_cv_os_cray+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#if defined CRAY && ! defined CRAY2
-webecray
-#else
-wenotbecray
-#endif
 
 
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "webecray" >/dev/null 2>&1; then :
-  ac_cv_os_cray=yes
-else
-  ac_cv_os_cray=no
-fi
-rm -rf conftest*
 
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
-$as_echo "$ac_cv_os_cray" >&6; }
-if test $ac_cv_os_cray = yes; then
-  for ac_func in _getb67 GETB67 getb67; do
-    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
 
 
-cat >>confdefs.h <<_ACEOF
-#define CRAY_STACKSEG_END $ac_func
-_ACEOF
 
 
-    break
-fi
 
 
-  done
-fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
-$as_echo_n "checking stack direction for C alloca... " >&6; }
-if ${ac_cv_c_stack_direction+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_c_stack_direction=0
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-find_stack_direction (int *addr, int depth)
-{
-  int dir, dummy = 0;
-  if (! addr)
-    addr = &dummy;
-  *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
-  dir = depth ? find_stack_direction (addr, depth - 1) : 0;
-  return dir + dummy;
-}
 
 
-int
-main (int argc, char **argv)
-{
-  return find_stack_direction (0, argc + !argv + 20) < 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_c_stack_direction=1
-else
-  ac_cv_c_stack_direction=-1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
 
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
-$as_echo "$ac_cv_c_stack_direction" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define STACK_DIRECTION $ac_cv_c_stack_direction
-_ACEOF
 
 
 
 
-fi
 
 
 
 
 
 
 
 
-  for ac_header in $ac_header_list
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check the gettext tools to make sure they are GNU
+# Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XGETTEXT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $XGETTEXT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_XGETTEXT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+XGETTEXT=$ac_cv_path_XGETTEXT
+if test -n "$XGETTEXT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 fi
 
+
+# Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MSGMERGE+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MSGMERGE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MSGMERGE="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
 done
 done
+  done
+IFS=$as_save_IFS
 
 
+  ;;
+esac
+fi
+MSGMERGE=$ac_cv_path_MSGMERGE
+if test -n "$MSGMERGE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
+$as_echo "$MSGMERGE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
 
 
+# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MSGFMT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MSGFMT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MSGFMT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+MSGFMT=$ac_cv_path_MSGFMT
+if test -n "$MSGFMT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
 
 
+# Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GMSGFMT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $GMSGFMT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+  ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+if test -n "$GMSGFMT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
 
 
+if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then
+    as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5
+fi
+xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`"
+mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`"
+mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`"
+if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then
+    as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5
+fi
 
 
-for ac_func in getpagesize
-do :
-  ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
-if test "x$ac_cv_func_getpagesize" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_GETPAGESIZE 1
-_ACEOF
+# Substitute ALL_LINGUAS so we can use it in po/Makefile
 
 
-fi
-done
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
-$as_echo_n "checking for working mmap... " >&6; }
-if ${ac_cv_func_mmap_fixed_mapped+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_func_mmap_fixed_mapped=no
-else
+# Set DATADIRNAME correctly if it is not set yet
+# (copied from glib-gettext.m4)
+if test -z "$DATADIRNAME"; then
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$ac_includes_default
-/* malloc might have been renamed as rpl_malloc. */
-#undef malloc
-
-/* Thanks to Mike Haertel and Jim Avera for this test.
-   Here is a matrix of mmap possibilities:
-       mmap private not fixed
-       mmap private fixed at somewhere currently unmapped
-       mmap private fixed at somewhere already mapped
-       mmap shared not fixed
-       mmap shared fixed at somewhere currently unmapped
-       mmap shared fixed at somewhere already mapped
-   For private mappings, we should verify that changes cannot be read()
-   back from the file, nor mmap's back from the file at a different
-   address.  (There have been systems where private was not correctly
-   implemented like the infamous i386 svr4.0, and systems where the
-   VM page cache was not coherent with the file system buffer cache
-   like early versions of FreeBSD and possibly contemporary NetBSD.)
-   For shared mappings, we should conversely verify that changes get
-   propagated back to all the places they're supposed to be.
-
-   Grep wants private fixed already mapped.
-   The main things grep needs to know about mmap are:
-   * does it exist and is it safe to write into the mmap'd area
-   * how to use it (BSD variants)  */
-
-#include <fcntl.h>
-#include <sys/mman.h>
-
-#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
-char *malloc ();
-#endif
-
-/* This mess was copied from the GNU getpagesize.h.  */
-#ifndef HAVE_GETPAGESIZE
-# ifdef _SC_PAGESIZE
-#  define getpagesize() sysconf(_SC_PAGESIZE)
-# else /* no _SC_PAGESIZE */
-#  ifdef HAVE_SYS_PARAM_H
-#   include <sys/param.h>
-#   ifdef EXEC_PAGESIZE
-#    define getpagesize() EXEC_PAGESIZE
-#   else /* no EXEC_PAGESIZE */
-#    ifdef NBPG
-#     define getpagesize() NBPG * CLSIZE
-#     ifndef CLSIZE
-#      define CLSIZE 1
-#     endif /* no CLSIZE */
-#    else /* no NBPG */
-#     ifdef NBPC
-#      define getpagesize() NBPC
-#     else /* no NBPC */
-#      ifdef PAGESIZE
-#       define getpagesize() PAGESIZE
-#      endif /* PAGESIZE */
-#     endif /* no NBPC */
-#    endif /* no NBPG */
-#   endif /* no EXEC_PAGESIZE */
-#  else /* no HAVE_SYS_PARAM_H */
-#   define getpagesize() 8192  /* punt totally */
-#  endif /* no HAVE_SYS_PARAM_H */
-# endif /* no _SC_PAGESIZE */
-
-#endif /* no HAVE_GETPAGESIZE */
 
 int
 main ()
 {
 
 int
 main ()
 {
-  char *data, *data2, *data3;
-  const char *cdata2;
-  int i, pagesize;
-  int fd, fd2;
-
-  pagesize = getpagesize ();
-
-  /* First, make a file with some known garbage in it. */
-  data = (char *) malloc (pagesize);
-  if (!data)
-    return 1;
-  for (i = 0; i < pagesize; ++i)
-    *(data + i) = rand ();
-  umask (0);
-  fd = creat ("conftest.mmap", 0600);
-  if (fd < 0)
-    return 2;
-  if (write (fd, data, pagesize) != pagesize)
-    return 3;
-  close (fd);
-
-  /* Next, check that the tail of a page is zero-filled.  File must have
-     non-zero length, otherwise we risk SIGBUS for entire page.  */
-  fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600);
-  if (fd2 < 0)
-    return 4;
-  cdata2 = "";
-  if (write (fd2, cdata2, 1) != 1)
-    return 5;
-  data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L);
-  if (data2 == MAP_FAILED)
-    return 6;
-  for (i = 0; i < pagesize; ++i)
-    if (*(data2 + i))
-      return 7;
-  close (fd2);
-  if (munmap (data2, pagesize))
-    return 8;
-
-  /* Next, try to mmap the file at a fixed address which already has
-     something else allocated at it.  If we can, also make sure that
-     we see the same garbage.  */
-  fd = open ("conftest.mmap", O_RDWR);
-  if (fd < 0)
-    return 9;
-  if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
-                    MAP_PRIVATE | MAP_FIXED, fd, 0L))
-    return 10;
-  for (i = 0; i < pagesize; ++i)
-    if (*(data + i) != *(data2 + i))
-      return 11;
-
-  /* Finally, make sure that changes to the mapped area do not
-     percolate back to the file as seen by read().  (This is a bug on
-     some variants of i386 svr4.0.)  */
-  for (i = 0; i < pagesize; ++i)
-    *(data2 + i) = *(data2 + i) + 1;
-  data3 = (char *) malloc (pagesize);
-  if (!data3)
-    return 12;
-  if (read (fd, data3, pagesize) != pagesize)
-    return 13;
-  for (i = 0; i < pagesize; ++i)
-    if (*(data + i) != *(data3 + i))
-      return 14;
-  close (fd);
+extern int _nl_msg_cat_cntr;
+                       return _nl_msg_cat_cntr
+  ;
   return 0;
 }
 _ACEOF
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_func_mmap_fixed_mapped=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  DATADIRNAME=share
 else
 else
-  ac_cv_func_mmap_fixed_mapped=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+  case $host in
+    *-*-solaris*)
+                        ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
+  DATADIRNAME=share
+else
+  DATADIRNAME=lib
 fi
 
 fi
 
+    ;;
+    *)
+    DATADIRNAME=lib
+    ;;
+    esac
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5
-$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; }
-if test $ac_cv_func_mmap_fixed_mapped = yes; then
 
 
-$as_echo "#define HAVE_MMAP 1" >>confdefs.h
 
 
-fi
-rm -rf conftest.mmap conftest.txt
 
 
 
 
-   for ac_header in argz.h limits.h locale.h nl_types.h malloc.h string.h \
-unistd.h sys/param.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+
+GETTEXT_PACKAGE=xscreensaver
+
+cat >>confdefs.h <<_ACEOF
+#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$GETTEXT_PACKAGE"
 _ACEOF
 
 _ACEOF
 
-fi
 
 
-done
 
 
-   for ac_func in getcwd munmap putenv setenv setlocale strchr strcasecmp \
-strdup __argz_count __argz_stringify __argz_next
+ALL_LINGUAS="ca da de es et fi fr hu it ja ko nb nl pl pt pt_BR ru sk sv vi wa zh_CN zh_TW"
+
+   for ac_header in locale.h
 do :
 do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
+if test "x$ac_cv_header_locale_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define HAVE_LOCALE_H 1
 _ACEOF
 
 fi
 _ACEOF
 
 fi
-done
 
 
+done
 
 
-   if test $ac_cv_header_locale_h = yes; then
+    if test $ac_cv_header_locale_h = yes; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
 $as_echo_n "checking for LC_MESSAGES... " >&6; }
 if ${am_cv_val_LC_MESSAGES+:} false; then :
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
 $as_echo_n "checking for LC_MESSAGES... " >&6; }
 if ${am_cv_val_LC_MESSAGES+:} false; then :
@@ -7586,28 +7618,65 @@ $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
      USE_NLS=yes
 
 
      USE_NLS=yes
 
 
-        nls_cv_force_use_gnu_gettext="no"
+    gt_cv_have_gettext=no
 
 
-    nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
-    if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
-                              nls_cv_header_intl=
-      nls_cv_header_libgt=
-      CATOBJEXT=NONE
+    CATOBJEXT=NONE
+    XGETTEXT=:
+    INTLLIBS=
 
 
-      ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default"
+    ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default"
 if test "x$ac_cv_header_libintl_h" = xyes; then :
 if test "x$ac_cv_header_libintl_h" = xyes; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5
+  gt_cv_func_dgettext_libintl="no"
+      libintl_extra_libs=""
+
+      #
+      # First check in libc
+      #
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5
+$as_echo_n "checking for ngettext in libc... " >&6; }
+if ${gt_cv_func_ngettext_libc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <libintl.h>
+
+int
+main ()
+{
+return !ngettext ("","", 1)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gt_cv_func_ngettext_libc=yes
+else
+  gt_cv_func_ngettext_libc=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5
+$as_echo "$gt_cv_func_ngettext_libc" >&6; }
+
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+             { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5
 $as_echo_n "checking for dgettext in libc... " >&6; }
 if ${gt_cv_func_dgettext_libc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $as_echo_n "checking for dgettext in libc... " >&6; }
 if ${gt_cv_func_dgettext_libc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+
 #include <libintl.h>
 #include <libintl.h>
+
 int
 main ()
 {
 int
 main ()
 {
-return (int) dgettext ("","")
+return !dgettext ("","")
   ;
   return 0;
 }
   ;
   return 0;
 }
@@ -7619,12 +7688,34 @@ else
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
+
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5
 $as_echo "$gt_cv_func_dgettext_libc" >&6; }
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5
 $as_echo "$gt_cv_func_dgettext_libc" >&6; }
+      fi
+
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+        for ac_func in bind_textdomain_codeset
+do :
+  ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
+_ACEOF
+
+fi
+done
 
 
-         if test "$gt_cv_func_dgettext_libc" != "yes"; then
-           { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5
+      fi
+
+      #
+      # If we don't have everything we want, check in libintl
+      #
+      if test "$gt_cv_func_dgettext_libc" != "yes" \
+        || test "$gt_cv_func_ngettext_libc" != "yes" \
+         || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5
 $as_echo_n "checking for bindtextdomain in -lintl... " >&6; }
 if ${ac_cv_lib_intl_bindtextdomain+:} false; then :
   $as_echo_n "(cached) " >&6
 $as_echo_n "checking for bindtextdomain in -lintl... " >&6; }
 if ${ac_cv_lib_intl_bindtextdomain+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -7661,11 +7752,43 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5
 $as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; }
 if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then :
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5
 $as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; }
 if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libintl" >&5
-$as_echo_n "checking for dgettext in libintl... " >&6; }
-if ${gt_cv_func_dgettext_libintl+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
+$as_echo_n "checking for ngettext in -lintl... " >&6; }
+if ${ac_cv_lib_intl_ngettext+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   $as_echo_n "(cached) " >&6
 else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ngettext ();
+int
+main ()
+{
+return ngettext ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_intl_ngettext=yes
+else
+  ac_cv_lib_intl_ngettext=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
+$as_echo "$ac_cv_lib_intl_ngettext" >&6; }
+if test "x$ac_cv_lib_intl_ngettext" = xyes; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5
 $as_echo_n "checking for dgettext in -lintl... " >&6; }
 if ${ac_cv_lib_intl_dgettext+:} false; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5
 $as_echo_n "checking for dgettext in -lintl... " >&6; }
 if ${ac_cv_lib_intl_dgettext+:} false; then :
 $as_echo "$ac_cv_lib_intl_dgettext" >&6; }
 if test "x$ac_cv_lib_intl_dgettext" = xyes; then :
   gt_cv_func_dgettext_libintl=yes
 $as_echo "$ac_cv_lib_intl_dgettext" >&6; }
 if test "x$ac_cv_lib_intl_dgettext" = xyes; then :
   gt_cv_func_dgettext_libintl=yes
+fi
+
+fi
+
+fi
+
+
+       if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5
+$as_echo_n "checking if -liconv is needed to use gettext... " >&6; }
+         { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
+$as_echo "" >&6; }
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
+$as_echo_n "checking for ngettext in -lintl... " >&6; }
+if ${ac_cv_lib_intl_ngettext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl -liconv $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ngettext ();
+int
+main ()
+{
+return ngettext ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_intl_ngettext=yes
+else
+  ac_cv_lib_intl_ngettext=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
+$as_echo "$ac_cv_lib_intl_ngettext" >&6; }
+if test "x$ac_cv_lib_intl_ngettext" = xyes; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5
+$as_echo_n "checking for dcgettext in -lintl... " >&6; }
+if ${ac_cv_lib_intl_dcgettext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl -liconv $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dcgettext ();
+int
+main ()
+{
+return dcgettext ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_intl_dcgettext=yes
+else
+  ac_cv_lib_intl_dcgettext=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5
+$as_echo "$ac_cv_lib_intl_dcgettext" >&6; }
+if test "x$ac_cv_lib_intl_dcgettext" = xyes; then :
+  gt_cv_func_dgettext_libintl=yes
+                       libintl_extra_libs=-liconv
 else
 else
-  gt_cv_func_dgettext_libintl=no
+  :
 fi
 
 fi
 
+else
+  :
 fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libintl" >&5
-$as_echo "$gt_cv_func_dgettext_libintl" >&6; }
+
+        fi
+
+        #
+        # If we found libintl, then check in it for bind_textdomain_codeset();
+        # we'll prefer libc if neither have bind_textdomain_codeset(),
+        # and both have dgettext and ngettext
+        #
+        if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS -lintl $libintl_extra_libs"
+          unset ac_cv_func_bind_textdomain_codeset
+          for ac_func in bind_textdomain_codeset
+do :
+  ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
+_ACEOF
+
 fi
 fi
+done
 
 
-         fi
+          LIBS="$glib_save_LIBS"
 
 
-          if test "$gt_cv_func_dgettext_libintl" = "yes"; then
-           LIBS="$LIBS -lintl";
+          if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+            gt_cv_func_dgettext_libc=no
+          else
+            if test "$gt_cv_func_dgettext_libc" = "yes" \
+               && test "$gt_cv_func_ngettext_libc" = "yes"; then
+              gt_cv_func_dgettext_libintl=no
+            fi
           fi
           fi
+        fi
+      fi
+
+      if test "$gt_cv_func_dgettext_libc" = "yes" \
+       || test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        gt_cv_have_gettext=yes
+      fi
+
+      if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        INTLLIBS="-lintl $libintl_extra_libs"
+      fi
 
 
-         if test "$gt_cv_func_dgettext_libc" = "yes" \
-           || test "$gt_cv_func_dgettext_libintl" = "yes"; then
+      if test "$gt_cv_have_gettext" = "yes"; then
 
 $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
 
 
 $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
 
-           # Extract the first word of "msgfmt", so it can be a program name with args.
+       # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
 set dummy msgfmt; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
@@ -7752,15 +7999,17 @@ else
 esac
 fi
 MSGFMT="$ac_cv_path_MSGFMT"
 esac
 fi
 MSGFMT="$ac_cv_path_MSGFMT"
-if test -n "$MSGFMT"; then
+if test "$MSGFMT" != "no"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
 $as_echo "$MSGFMT" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
 $as_echo "$MSGFMT" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-           if test "$MSGFMT" != "no"; then
-             for ac_func in dcgettext
+       if test "$MSGFMT" != "no"; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS $INTLLIBS"
+         for ac_func in dcgettext
 do :
   ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext"
 if test "x$ac_cv_func_dcgettext" = xyes; then :
 do :
   ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext"
 if test "x$ac_cv_func_dcgettext" = xyes; then :
@@ -7771,7 +8020,36 @@ _ACEOF
 fi
 done
 
 fi
 done
 
-             # Extract the first word of "gmsgfmt", so it can be a program name with args.
+         MSGFMT_OPTS=
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5
+$as_echo_n "checking if msgfmt accepts -c... " >&6; }
+         cat >conftest.foo <<_ACEOF
+
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: test 1.0\n"
+"PO-Revision-Date: 2007-02-15 12:01+0100\n"
+"Last-Translator: test <foo@bar.xx>\n"
+"Language-Team: C <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+_ACEOF
+if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5
+  ($MSGFMT -c -o /dev/null conftest.foo) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+echo "$as_me: failed input was:" >&5
+sed 's/^/| /' conftest.foo >&5
+fi
+
+         # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
 set dummy gmsgfmt; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
@@ -7812,7 +8090,7 @@ $as_echo "no" >&6; }
 fi
 
 
 fi
 
 
-             # Extract the first word of "xgettext", so it can be a program name with args.
+         # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
 set dummy xgettext; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
@@ -7840,7 +8118,7 @@ else
 esac
 fi
 XGETTEXT="$ac_cv_path_XGETTEXT"
 esac
 fi
 XGETTEXT="$ac_cv_path_XGETTEXT"
-if test -n "$XGETTEXT"; then
+if test "$XGETTEXT" != ":"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
 $as_echo "$XGETTEXT" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
 $as_echo "$XGETTEXT" >&6; }
 else
@@ -7848,53 +8126,61 @@ else
 $as_echo "no" >&6; }
 fi
 
 $as_echo "no" >&6; }
 fi
 
-             cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
 main ()
 {
 extern int _nl_msg_cat_cntr;
 /* end confdefs.h.  */
 
 int
 main ()
 {
 extern int _nl_msg_cat_cntr;
-                            return _nl_msg_cat_cntr
+                        return _nl_msg_cat_cntr
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
   CATOBJEXT=.gmo
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
   CATOBJEXT=.gmo
-                DATADIRNAME=share
+             DATADIRNAME=share
+else
+  case $host in
+           *-*-solaris*)
+                                                               ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
+  CATOBJEXT=.gmo
+               DATADIRNAME=share
 else
   CATOBJEXT=.mo
 else
   CATOBJEXT=.mo
-                DATADIRNAME=lib
+               DATADIRNAME=lib
+fi
+
+           ;;
+           *-*-openbsd*)
+           CATOBJEXT=.mo
+            DATADIRNAME=share
+           ;;
+           *)
+           CATOBJEXT=.mo
+            DATADIRNAME=lib
+           ;;
+           esac
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-             INSTOBJEXT=.mo
-           fi
-         fi
-
-         # Added by Martin Baulig 12/15/98 for libc5 systems
-         if test "$gt_cv_func_dgettext_libc" != "yes" \
-           && test "$gt_cv_func_dgettext_libintl" = "yes"; then
-           INTLLIBS=-lintl
-           LIBS=`echo $LIBS | sed -e 's/-lintl//'`
-         fi
+          LIBS="$glib_save_LIBS"
+         INSTOBJEXT=.mo
+       else
+         gt_cv_have_gettext=no
+       fi
+      fi
 
 fi
 
 
 
 
 fi
 
 
 
-      if test "$CATOBJEXT" = "NONE"; then
-                        nls_cv_use_gnu_gettext=yes
-      fi
-    fi
-
-    if test "$nls_cv_use_gnu_gettext" != "yes"; then
+    if test "$gt_cv_have_gettext" = "yes" ; then
 
 $as_echo "#define ENABLE_NLS 1" >>confdefs.h
 
 
 $as_echo "#define ENABLE_NLS 1" >>confdefs.h
 
-    else
-            CATOBJEXT=
     fi
 
         if test "$XGETTEXT" != ":"; then
     fi
 
         if test "$XGETTEXT" != ":"; then
@@ -7930,17 +8216,33 @@ $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; }
 
 
 
 
 
 
-   if test "x$CATOBJEXT" != "x"; then
+   if test "$gt_cv_have_gettext" = "yes"; then
      if test "x$ALL_LINGUAS" = "x"; then
        LINGUAS=
      else
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5
 $as_echo_n "checking for catalogs to be installed... " >&6; }
        NEW_LINGUAS=
      if test "x$ALL_LINGUAS" = "x"; then
        LINGUAS=
      else
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5
 $as_echo_n "checking for catalogs to be installed... " >&6; }
        NEW_LINGUAS=
-       for lang in ${LINGUAS=$ALL_LINGUAS}; do
-         case "$ALL_LINGUAS" in
-          *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
-         esac
+       for presentlang in $ALL_LINGUAS; do
+         useit=no
+         if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+           desiredlanguages="$LINGUAS"
+         else
+           desiredlanguages="$ALL_LINGUAS"
+         fi
+         for desiredlang in $desiredlanguages; do
+          # Use the presentlang catalog if desiredlang is
+           #   a. equal to presentlang, or
+           #   b. a variant of presentlang (because in this case,
+           #      presentlang can be used as a fallback for messages
+           #      which are not translated in the desiredlang catalog).
+           case "$desiredlang" in
+             "$presentlang"*) useit=yes;;
+           esac
+         done
+         if test $useit = yes; then
+           NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+         fi
        done
        LINGUAS=$NEW_LINGUAS
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5
        done
        LINGUAS=$NEW_LINGUAS
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5
@@ -7952,38 +8254,14 @@ $as_echo "$LINGUAS" >&6; }
      fi
    fi
 
      fi
    fi
 
-            test -d po || mkdir po
-   if test "$CATOBJEXT" = ".cat"; then
-     ac_fn_c_check_header_mongrel "$LINENO" "linux/version.h" "ac_cv_header_linux_version_h" "$ac_includes_default"
-if test "x$ac_cv_header_linux_version_h" = xyes; then :
-  msgformat=linux
-else
-  msgformat=xopen
-fi
-
-
-
-               sed -e '/^#/d' $srcdir/po/$msgformat-msg.sed > po/po2msg.sed
-   fi
-
             MKINSTALLDIRS=
             MKINSTALLDIRS=
-#
-# jwz: fuck this!  it puts hardcoded pathnames into the generated Makefiles!
-#
-#   if test -n "$ac_aux_dir"; then
-#     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
-#   fi
+   if test -n "$ac_aux_dir"; then
+     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+   fi
    if test -z "$MKINSTALLDIRS"; then
      MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
    fi
 
    if test -z "$MKINSTALLDIRS"; then
      MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
    fi
 
-   # jwz: you know what, screw it.  Let's just use the version that I
-   # already computed in configure.in, instead of this version that came
-   # with the i18n crud, ok?
-   MKINSTALLDIRS="$INSTALL_DIRS"
-
-
-
 
          test -d po || mkdir po
    if test "x$srcdir" != "x."; then
 
          test -d po || mkdir po
    if test "x$srcdir" != "x."; then
@@ -12831,7 +13109,7 @@ if ${ac_cv_mesagl_version_string+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.$ac_ext <<EOF
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 12838 "configure"
+#line 13116 "configure"
 #include "confdefs.h"
 #include <GL/gl.h>
 #ifndef MESA_MAJOR_VERSION
 #include "confdefs.h"
 #include <GL/gl.h>
 #ifndef MESA_MAJOR_VERSION
@@ -15280,6 +15558,10 @@ LTLIBOBJS=$ac_ltlibobjs
 
 
 
 
 
 
+  ac_config_commands="$ac_config_commands po/stamp-it"
+
+
+
 : "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 : "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
@@ -15879,6 +16161,7 @@ do
     "hacks/glx/Makefile") CONFIG_FILES="$CONFIG_FILES hacks/glx/Makefile" ;;
     "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
     "driver/XScreenSaver.ad") CONFIG_FILES="$CONFIG_FILES driver/XScreenSaver.ad" ;;
     "hacks/glx/Makefile") CONFIG_FILES="$CONFIG_FILES hacks/glx/Makefile" ;;
     "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
     "driver/XScreenSaver.ad") CONFIG_FILES="$CONFIG_FILES driver/XScreenSaver.ad" ;;
+    "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
@@ -16435,11 +16718,28 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
 
   case $ac_file$ac_mode in
     "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*)
 
   case $ac_file$ac_mode in
     "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*)
-        rm -f po/stamp-it po/stamp-it.tmp
-        > po/stamp-it.tmp
         sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
         sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
-        mv po/stamp-it.tmp po/stamp-it
       esac ;;
       esac ;;
+    "po/stamp-it":C)
+    if  ! grep "^# INTLTOOL_MAKEFILE$" "po/Makefile.in" > /dev/null ; then
+       as_fn_error $? "po/Makefile.in.in was not created by intltoolize." "$LINENO" 5
+    fi
+    rm -f "po/stamp-it" "po/stamp-it.tmp" "po/POTFILES" "po/Makefile.tmp"
+    >"po/stamp-it.tmp"
+    sed '/^#/d
+        s/^[[].*] *//
+        /^[    ]*$/d
+       '"s|^|  $ac_top_srcdir/|" \
+      "$srcdir/po/POTFILES.in" | sed '$!s/$/ \\/' >"po/POTFILES"
+
+    sed '/^POTFILES =/,/[^\\]$/ {
+               /^POTFILES =/!d
+               r po/POTFILES
+         }
+        ' "po/Makefile.in" >"po/Makefile"
+    rm -f "po/Makefile.tmp"
+    mv "po/stamp-it.tmp" "po/stamp-it"
+   ;;
 
   esac
 done # for ac_tag
 
   esac
 done # for ac_tag
@@ -16811,10 +17111,7 @@ if test "$have_gl" = no ; then
   echo ''
   warn2 'Those demos which use 3D will not be built or installed.'
   warn2 'You might want to consider installing OpenGL and'
   echo ''
   warn2 'Those demos which use 3D will not be built or installed.'
   warn2 'You might want to consider installing OpenGL and'
-  warn2 "re-running configure.  If your vendor doesn't ship"
-  warn2 'their own implementation of OpenGL, you can get a free'
-  warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
-  warn2 'info, see <http://www.opengl.org/>.'
+  warn2 're-running configure.'
 
 fi
 
 
 fi
 
@@ -16834,7 +17131,7 @@ if test "$have_gl" = yes -a "$have_gle" = no ; then
     warn2 'library is not.'
   else
     noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
     warn2 'library is not.'
   else
     noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
-    warn2 'was not.'
+    warn2 'library was not.'
   fi
 
   if test "$gle_halfassed" = yes ; then
   fi
 
   if test "$gle_halfassed" = yes ; then
@@ -16849,8 +17146,7 @@ if test "$have_gl" = yes -a "$have_gle" = no ; then
   warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
   warn2 'will not be built or installed.  You might want to consider'
   warn2 'installing GLE and re-running configure.  You can find the'
   warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
   warn2 'will not be built or installed.  You might want to consider'
   warn2 'installing GLE and re-running configure.  You can find the'
-  warn2 'GLE library at <http://www.linas.org/gle/>.  For general'
-  warn2 'OpenGL info, see <http://www.opengl.org/>.'
+  warn2 'GLE library at <http://www.linas.org/gle/>'
 
  fi
 fi
 
  fi
 fi
@@ -16985,7 +17281,7 @@ if test "$do_dir_warning" = yes; then
   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
   echo "      will be installed in ${bindir}/."
   echo ""
   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
   echo "      will be installed in ${bindir}/."
   echo ""
-  echo "      The various graphics demos (190+ different executables) will"
+  echo "      The various graphics demos (200+ different executables) will"
   echo "      be installed in ${HACKDIR}/."
   echo ""
   echo "      If you would prefer the demos to be installed elsewhere,"
   echo "      be installed in ${HACKDIR}/."
   echo ""
   echo "      If you would prefer the demos to be installed elsewhere,"
index 61656f3720696a607cd149b98b3357a4c62a0afb..7ed621c0a2f8af52092c4214ea61bbca1aef33c0 100644 (file)
@@ -1,4 +1,4 @@
-# configure.in --- xscreensaver, Copyright (c) 1997-2005 Jamie Zawinski.
+# configure.in --- xscreensaver, Copyright (c) 1997-2014 Jamie Zawinski.
 #
 
 AC_PREREQ(2.52)
 #
 
 AC_PREREQ(2.52)
@@ -15,7 +15,7 @@ echo "command line was: $0 $@"
 ###############################################################################
 
 AH_TOP([
 ###############################################################################
 
 AH_TOP([
-/* config.h.in --- xscreensaver, Copyright (c) 1998-2000 Jamie Zawinski.
+/* config.h.in --- xscreensaver, Copyright (c) 1991-2014 Jamie Zawinski.
  *
  *  The best way to set these parameters is by running the included `configure'
  *  script.  That examines your system, and generates `config.h' from 
  *
  *  The best way to set these parameters is by running the included `configure'
  *  script.  That examines your system, and generates `config.h' from 
@@ -368,10 +368,6 @@ AC_DEFUN([AC_PROG_CC_PTHREAD],
     if test "$have_pthread" = yes; then
       AC_DEFINE([HAVE_PTHREAD])
       CC=$PTHREAD_CC
     if test "$have_pthread" = yes; then
       AC_DEFINE([HAVE_PTHREAD])
       CC=$PTHREAD_CC
-
-      # AX_PTHREAD documentation specifically suggests this...
-      LIBS="$PTHREAD_LIBS $LIBS"
-      CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
     fi
   fi
 ])
     fi
   fi
 ])
@@ -4332,10 +4328,7 @@ if test "$have_gl" = no ; then
   echo ''
   warn2 'Those demos which use 3D will not be built or installed.'
   warn2 'You might want to consider installing OpenGL and'
   echo ''
   warn2 'Those demos which use 3D will not be built or installed.'
   warn2 'You might want to consider installing OpenGL and'
-  warn2 "re-running configure.  If your vendor doesn't ship"
-  warn2 'their own implementation of OpenGL, you can get a free'
-  warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
-  warn2 'info, see <http://www.opengl.org/>.'
+  warn2 're-running configure.'
 
 fi
 
 
 fi
 
@@ -4355,7 +4348,7 @@ if test "$have_gl" = yes -a "$have_gle" = no ; then
     warn2 'library is not.'
   else
     noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
     warn2 'library is not.'
   else
     noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
-    warn2 'was not.'
+    warn2 'library was not.'
   fi
 
   if test "$gle_halfassed" = yes ; then
   fi
 
   if test "$gle_halfassed" = yes ; then
@@ -4370,8 +4363,7 @@ if test "$have_gl" = yes -a "$have_gle" = no ; then
   warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
   warn2 'will not be built or installed.  You might want to consider'
   warn2 'installing GLE and re-running configure.  You can find the'
   warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
   warn2 'will not be built or installed.  You might want to consider'
   warn2 'installing GLE and re-running configure.  You can find the'
-  warn2 'GLE library at <http://www.linas.org/gle/>.  For general'
-  warn2 'OpenGL info, see <http://www.opengl.org/>.'
+  warn2 'GLE library at <http://www.linas.org/gle/>'
 
  fi
 fi
 
  fi
 fi
@@ -4506,7 +4498,7 @@ if test "$do_dir_warning" = yes; then
   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
   echo "      will be installed in ${bindir}/."
   echo ""
   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
   echo "      will be installed in ${bindir}/."
   echo ""
-  echo "      The various graphics demos (190+ different executables) will"
+  echo "      The various graphics demos (200+ different executables) will"
   echo "      be installed in ${HACKDIR}/."
   echo ""
   echo "      If you would prefer the demos to be installed elsewhere,"
   echo "      be installed in ${HACKDIR}/."
   echo ""
   echo "      If you would prefer the demos to be installed elsewhere,"
index e0f8ba5bfeb8c87294b0975d53ff4c468c42bbf5..fca9c42a36d037587e4b423c0e7f690f933427b1 100644 (file)
@@ -93,9 +93,7 @@ INCLUDES      = $(INCLUDES_1) @INCLUDES@
 MOTIF_SRCS     = demo-Xm.c demo-Xm-widgets.c
 MOTIF_OBJS     = demo-Xm.o demo-Xm-widgets.o
 
 MOTIF_SRCS     = demo-Xm.c demo-Xm-widgets.c
 MOTIF_OBJS     = demo-Xm.o demo-Xm-widgets.o
 
-GTK_SRCS       = demo-Gtk.c demo-Gtk-conf.c \
-                 demo-Gtk-widgets.c demo-Gtk-support.c
-GTK_EXTRA_OBJS  = demo-Gtk-widgets.o demo-Gtk-support.o
+GTK_SRCS       = demo-Gtk.c demo-Gtk-conf.c
 GTK_OBJS       = demo-Gtk.o demo-Gtk-conf.o @GTK_EXTRA_OBJS@
 
 PWENT_SRCS     = passwd-pwent.c
 GTK_OBJS       = demo-Gtk.o demo-Gtk-conf.o @GTK_EXTRA_OBJS@
 
 PWENT_SRCS     = passwd-pwent.c
@@ -227,7 +225,6 @@ SCRIPTS             = $(SCRIPTS_1) @SCRIPTS_OSX@
 
 HDRS           = XScreenSaver_ad.h XScreenSaver_Xm_ad.h \
                  xscreensaver.h prefs.h remote.h exec.h \
 
 HDRS           = XScreenSaver_ad.h XScreenSaver_Xm_ad.h \
                  xscreensaver.h prefs.h remote.h exec.h \
-                 demo-Gtk-widgets.h demo-Gtk-stubs.h demo-Gtk-support.h \
                  demo-Gtk-conf.h auth.h mlstring.h types.h
 MEN_1          = xscreensaver.man xscreensaver-demo.man \
                  xscreensaver-command.man \
                  demo-Gtk-conf.h auth.h mlstring.h types.h
 MEN_1          = xscreensaver.man xscreensaver-demo.man \
                  xscreensaver-command.man \
@@ -771,13 +768,12 @@ XScreenSaver_ad.h: XScreenSaver.ad
 XScreenSaver_Xm_ad.h: XScreenSaver-Xm.ad
        $(SHELL) $(UTILS_SRC)/ad2c XScreenSaver-Xm.ad > XScreenSaver_Xm_ad.h
 
 XScreenSaver_Xm_ad.h: XScreenSaver-Xm.ad
        $(SHELL) $(UTILS_SRC)/ad2c XScreenSaver-Xm.ad > XScreenSaver_Xm_ad.h
 
-# What was this for? Now it's undefined.
-# @INTLTOOL_DESKTOP_RULE@
+@INTLTOOL_DESKTOP_RULE@
 
 # The executables linked in this directory.
 #
 xscreensaver: $(SAVER_OBJS)
 
 # The executables linked in this directory.
 #
 xscreensaver: $(SAVER_OBJS)
-       $(CC) $(LDFLAGS) -o $@ $(SAVER_OBJS) $(SAVER_LIBS)
+       $(CC) $(LDFLAGS) -o $@ $(SAVER_OBJS) $(SAVER_LIBS) $(INTL_LIBS)
 
 xscreensaver-command: $(CMD_OBJS)
        $(CC) $(LDFLAGS) -o $@ $(CMD_OBJS) $(CMD_LIBS)
 
 xscreensaver-command: $(CMD_OBJS)
        $(CC) $(LDFLAGS) -o $@ $(CMD_OBJS) $(CMD_LIBS)
@@ -882,8 +878,6 @@ demo-Gtk-conf.o: $(UTILS_SRC)/xscreensaver-intl.h
 demo-Gtk.o: XScreenSaver_ad.h
 demo-Gtk.o: ../config.h
 demo-Gtk.o: $(srcdir)/demo-Gtk-conf.h
 demo-Gtk.o: XScreenSaver_ad.h
 demo-Gtk.o: ../config.h
 demo-Gtk.o: $(srcdir)/demo-Gtk-conf.h
-demo-Gtk.o: $(srcdir)/demo-Gtk-support.h
-demo-Gtk.o: $(srcdir)/demo-Gtk-widgets.h
 demo-Gtk.o: $(srcdir)/prefs.h
 demo-Gtk.o: $(srcdir)/remote.h
 demo-Gtk.o: $(srcdir)/types.h
 demo-Gtk.o: $(srcdir)/prefs.h
 demo-Gtk.o: $(srcdir)/remote.h
 demo-Gtk.o: $(srcdir)/types.h
@@ -892,12 +886,6 @@ demo-Gtk.o: $(UTILS_SRC)/usleep.h
 demo-Gtk.o: $(UTILS_SRC)/version.h
 demo-Gtk.o: $(UTILS_SRC)/visual.h
 demo-Gtk.o: $(UTILS_SRC)/xscreensaver-intl.h
 demo-Gtk.o: $(UTILS_SRC)/version.h
 demo-Gtk.o: $(UTILS_SRC)/visual.h
 demo-Gtk.o: $(UTILS_SRC)/xscreensaver-intl.h
-demo-Gtk-support.o: ../config.h
-demo-Gtk-support.o: $(srcdir)/demo-Gtk-support.h
-demo-Gtk-widgets.o: ../config.h
-demo-Gtk-widgets.o: $(srcdir)/demo-Gtk-stubs.h
-demo-Gtk-widgets.o: $(srcdir)/demo-Gtk-support.h
-demo-Gtk-widgets.o: $(srcdir)/demo-Gtk-widgets.h
 demo-Xm.o: ../config.h
 demo-Xm-widgets.o: ../config.h
 dpms.o: ../config.h
 demo-Xm.o: ../config.h
 demo-Xm-widgets.o: ../config.h
 dpms.o: ../config.h
index 4cfe82c4d088858bf4976c4ca50e2db020cf9820..4bbe5f24fce21f61fefd2c02cb0597c1363b2b79 100644 (file)
@@ -4,8 +4,8 @@
 !            a screen saver and locker for the X window system
 !                            by Jamie Zawinski
 !
 !            a screen saver and locker for the X window system
 !                            by Jamie Zawinski
 !
-!                              version 5.27
-!                              27-May-2014
+!                              version 5.29
+!                              08-Jun-2014
 !
 ! See "man xscreensaver" for more info.  The latest version is always
 ! available at http://www.jwz.org/xscreensaver/
 !
 ! See "man xscreensaver" for more info.  The latest version is always
 ! available at http://www.jwz.org/xscreensaver/
@@ -421,7 +421,7 @@ XScreenSaver.bourneShell:           /bin/sh
 *passwd.uname:                  True
 
 *splash.heading.label:         XScreenSaver %s
 *passwd.uname:                  True
 
 *splash.heading.label:         XScreenSaver %s
-*splash.body.label:            Copyright Â© 1991-2014 by
+*splash.body.label:            Copyright \xa9 1991-2014 by
 *splash.body2.label:           Jamie Zawinski <jwz@jwz.org>
 *splash.demo.label:            Settings
 *splash.help.label:            Help
 *splash.body2.label:           Jamie Zawinski <jwz@jwz.org>
 *splash.demo.label:            Settings
 *splash.help.label:            Help
index e4e6fe91253a799e2b0f136b4fa47881dabb1042..10be94f676b046f206a394c040bf63b8a37a7d07 100644 (file)
 "*passwd.asterisks:              True",
 "*passwd.uname:                  True",
 "*splash.heading.label:                XScreenSaver %s",
 "*passwd.asterisks:              True",
 "*passwd.uname:                  True",
 "*splash.heading.label:                XScreenSaver %s",
-"*splash.body.label:           Copyright Â© 1991-2014 by",
+"*splash.body.label:           Copyright \\xa9 1991-2014 by",
 "*splash.body2.label:          Jamie Zawinski <jwz@jwz.org>",
 "*splash.demo.label:           Settings",
 "*splash.help.label:           Help",
 "*splash.body2.label:          Jamie Zawinski <jwz@jwz.org>",
 "*splash.demo.label:           Settings",
 "*splash.help.label:           Help",
diff --git a/driver/demo-Gtk-stubs.h b/driver/demo-Gtk-stubs.h
deleted file mode 100644 (file)
index c897d3e..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-#include <gtk/gtk.h>
-
-
-void
-activate_menu_cb                       (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-lock_menu_cb                           (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-kill_menu_cb                           (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-restart_menu_cb                        (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-exit_menu_cb                           (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-about_menu_cb                          (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-doc_menu_cb                            (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-switch_page_cb                         (GtkNotebook     *notebook,
-                                        GtkNotebookPage *page,
-                                        gint             page_num,
-                                        gpointer         user_data);
-
-void
-pref_changed_cb                        (GtkToggleButton *togglebutton,
-                                        gpointer         user_data);
-
-void
-run_this_cb                            (GtkButton       *button,
-                                        gpointer         user_data);
-
-void
-settings_cb                            (GtkButton       *button,
-                                        gpointer         user_data);
-
-void
-run_next_cb                            (GtkButton       *button,
-                                        gpointer         user_data);
-
-void
-run_prev_cb                            (GtkButton       *button,
-                                        gpointer         user_data);
-
-void
-browse_image_dir_cb                    (GtkButton       *button,
-                                        gpointer         user_data);
-
-void
-settings_switch_page_cb                (GtkNotebook     *notebook,
-                                        GtkNotebookPage *page,
-                                        gint             page_num,
-                                        gpointer         user_data);
-
-void
-manual_cb                              (GtkButton       *button,
-                                        gpointer         user_data);
-
-void
-settings_adv_cb                        (GtkButton       *button,
-                                        gpointer         user_data);
-
-void
-settings_std_cb                        (GtkButton       *button,
-                                        gpointer         user_data);
-
-void
-settings_reset_cb                      (GtkButton       *button,
-                                        gpointer         user_data);
-
-void
-settings_ok_cb                         (GtkButton       *button,
-                                        gpointer         user_data);
-
-void
-settings_cancel_cb                     (GtkButton       *button,
-                                        gpointer         user_data);
diff --git a/driver/demo-Gtk-support.c b/driver/demo-Gtk-support.c
deleted file mode 100644 (file)
index 881129c..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * DO NOT EDIT THIS FILE - it is generated by Glade.
-   WARNING: I did edit this file!  Be careful!  -jwz
- */
-
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <string.h>
-
-#include <gtk/gtk.h>
-
-#include "demo-Gtk-support.h"
-
-/* jwz -- dumbass Glade1 doesn't emit code that can read PNGs. this does. */
-#ifdef HAVE_GDK_PIXBUF
-# ifdef HAVE_GTK2
-#  include <gdk-pixbuf-xlib/gdk-pixbuf-xlib.h>
-# else  /* !HAVE_GTK2 */
-#  include <gdk-pixbuf/gdk-pixbuf-xlib.h>
-# endif /* !HAVE_GTK2 */
-#endif /* HAVE_GDK_PIXBUF */
-
-
-/* This is an internally used function to check if a pixmap file exists. */
-static gchar* check_file_exists        (const gchar     *directory,
-                                        const gchar     *filename);
-
-/* This is an internally used function to create pixmaps. */
-static GtkWidget* create_dummy_pixmap  (GtkWidget       *widget);
-
-GtkWidget*
-lookup_widget                          (GtkWidget       *widget,
-                                        const gchar     *widget_name)
-{
-  GtkWidget *parent, *found_widget;
-
-  for (;;)
-    {
-      if (GTK_IS_MENU (widget))
-        parent = gtk_menu_get_attach_widget (GTK_MENU (widget));
-      else
-        parent = widget->parent;
-      if (parent == NULL)
-        break;
-      widget = parent;
-    }
-
-  found_widget = (GtkWidget*) gtk_object_get_data (GTK_OBJECT (widget),
-                                                   widget_name);
-  if (!found_widget)
-    g_warning ("Widget not found: %s", widget_name);
-  return found_widget;
-}
-
-/* This is a dummy pixmap we use when a pixmap can't be found. */
-static char *dummy_pixmap_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"1 1 1 1",
-"  c None",
-/* pixels */
-" "
-};
-
-/* This is an internally used function to create pixmaps. */
-static GtkWidget*
-create_dummy_pixmap                    (GtkWidget       *widget)
-{
-  GdkColormap *colormap;
-  GdkPixmap *gdkpixmap;
-  GdkBitmap *mask;
-  GtkWidget *pixmap;
-
-  colormap = gtk_widget_get_colormap (widget);
-  gdkpixmap = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &mask,
-                                                     NULL, dummy_pixmap_xpm);
-  if (gdkpixmap == NULL)
-    g_error ("Couldn't create replacement pixmap.");
-  pixmap = gtk_pixmap_new (gdkpixmap, mask);
-  gdk_pixmap_unref (gdkpixmap);
-  gdk_bitmap_unref (mask);
-  return pixmap;
-}
-
-static GList *pixmaps_directories = NULL;
-
-/* Use this function to set the directory containing installed pixmaps. */
-void
-add_pixmap_directory                   (const gchar     *directory)
-{
-  pixmaps_directories = g_list_prepend (pixmaps_directories,
-                                        g_strdup (directory));
-}
-
-/* This is an internally used function to create pixmaps. */
-/* #### Warning: this version of this function hacked by jwz to
-   support PNGs.  Don't let Glade1 overwrite this!
- */
-GtkWidget*
-create_pixmap                          (GtkWidget       *widget,
-                                        const gchar     *filename)
-{
-  gchar *found_filename = NULL;
-  GdkColormap *colormap = 0;
-  GdkPixmap *gdkpixmap = 0;
-  GdkBitmap *mask = 0;
-  GtkWidget *pixmap = 0;
-  GList *elem = 0;
-
-  if (!filename || !filename[0])
-      return create_dummy_pixmap (widget);
-
-  /* We first try any pixmaps directories set by the application. */
-  elem = pixmaps_directories;
-  while (elem)
-    {
-      found_filename = check_file_exists ((gchar*)elem->data, filename);
-      if (found_filename)
-        break;
-      elem = elem->next;
-    }
-
-  /* If we haven't found the pixmap, try the source directory. */
-  if (!found_filename)
-    {
-      found_filename = check_file_exists ("../utils/images", filename);
-    }
-
-  if (!found_filename)
-    {
-      g_warning (_("Couldn't find pixmap file: %s"), filename);
-      return create_dummy_pixmap (widget);
-    }
-
-  colormap = gtk_widget_get_colormap (widget);
-
-# ifndef HAVE_GDK_PIXBUF
-
-  gdkpixmap = gdk_pixmap_colormap_create_from_xpm (NULL, colormap, &mask,
-                                                   NULL, found_filename);
-  if (gdkpixmap == NULL)
-    {
-      g_warning (_("Error loading pixmap file: %s"), found_filename);
-      g_free (found_filename);
-      return create_dummy_pixmap (widget);
-    }
-
-# else /* HAVE_GDK_PIXBUF */
-
-  /* jwz -- dumbass Glade1 doesn't emit code that can read PNGs.
-     This code does... */
-
-  /* #### Danger: we aren't using `colormap'... */
-
-  {
-    GdkPixbuf *pb;
-#  ifdef HAVE_GTK2
-    GError *gerr = 0;
-#  endif /* HAVE_GTK2 */
-
-    pb = gdk_pixbuf_new_from_file (found_filename
-#  ifdef HAVE_GTK2
-                                   , &gerr
-#  endif /* HAVE_GTK2 */
-                                   );
-
-    if (pb)
-      {
-        gdkpixmap = 0;
-        mask = 0;
-        gdk_pixbuf_render_pixmap_and_mask (pb, &gdkpixmap, &mask, 128);
-      }
-    else
-      {
-        g_warning (_("Error loading pixmap file: %s"), found_filename);
-#  ifdef HAVE_GTK2
-        if (gerr && gerr->message && *gerr->message)
-          g_warning (_("reason: %s\n"), gerr->message);
-#  endif /* HAVE_GTK2 */
-
-        return create_dummy_pixmap (widget);
-      }
-  }
-# endif /* HAVE_GDK_PIXBUF */
-
-  g_free (found_filename);
-  pixmap = gtk_pixmap_new (gdkpixmap, mask);
-  gdk_pixmap_unref (gdkpixmap);
-  gdk_bitmap_unref (mask);
-
-  return pixmap;
-}
-
-/* This is an internally used function to check if a pixmap file exists. */
-static gchar*
-check_file_exists                      (const gchar     *directory,
-                                        const gchar     *filename)
-{
-  gchar *full_filename;
-  struct stat s;
-  gint status;
-
-  full_filename = (gchar*) g_malloc (strlen (directory) + 1
-                                     + strlen (filename) + 1);
-  strcpy (full_filename, directory);
-  strcat (full_filename, G_DIR_SEPARATOR_S);
-  strcat (full_filename, filename);
-
-  status = stat (full_filename, &s);
-  if (status == 0 && S_ISREG (s.st_mode))
-    return full_filename;
-  g_free (full_filename);
-  return NULL;
-}
-
diff --git a/driver/demo-Gtk-support.h b/driver/demo-Gtk-support.h
deleted file mode 100644 (file)
index 931bc5a..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * DO NOT EDIT THIS FILE - it is generated by Glade.
- */
-
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <gtk/gtk.h>
-
-/*
- * Standard gettext macros.
- */
-#ifdef ENABLE_NLS
-#  include <libintl.h>
-#  undef _
-#  define _(String) dgettext (PACKAGE, String)
-#  ifdef gettext_noop
-#    define N_(String) gettext_noop (String)
-#  else
-#    define N_(String) (String)
-#  endif
-#else
-#  define textdomain(String) (String)
-#  define gettext(String) (String)
-#  define dgettext(Domain,Message) (Message)
-#  define dcgettext(Domain,Message,Type) (Message)
-#  define bindtextdomain(Domain,Directory) (Domain)
-#  define _(String) (String)
-#  define N_(String) (String)
-#endif
-
-
-/*
- * Public Functions.
- */
-
-/*
- * This function returns a widget in a component created by Glade.
- * Call it with the toplevel widget in the component (i.e. a window/dialog),
- * or alternatively any widget in the component, and the name of the widget
- * you want returned.
- */
-GtkWidget*  lookup_widget              (GtkWidget       *widget,
-                                        const gchar     *widget_name);
-
-/* get_widget() is deprecated. Use lookup_widget instead. */
-#define get_widget lookup_widget
-
-/* Use this function to set the directory containing installed pixmaps. */
-void        add_pixmap_directory       (const gchar     *directory);
-
-
-/*
- * Private Functions.
- */
-
-/* This is used to create the pixmaps in the interface. */
-GtkWidget*  create_pixmap              (GtkWidget       *widget,
-                                        const gchar     *filename);
-
diff --git a/driver/demo-Gtk-widgets.c b/driver/demo-Gtk-widgets.c
deleted file mode 100644 (file)
index 4e853c9..0000000
+++ /dev/null
@@ -1,1764 +0,0 @@
-/*
- * DO NOT EDIT THIS FILE - it is generated by Glade.
- */
-
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <string.h>
-
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-
-#include "demo-Gtk-stubs.h"
-#include "demo-Gtk-widgets.h"
-#include "demo-Gtk-support.h"
-
-# ifdef __GNUC__
-#  define STFU __extension__  /* ignore gcc -pendantic warnings in next sexp */
-# else
-#  define STFU /* */
-# endif
-
-GtkWidget*
-create_xscreensaver_demo (void)
-{
-  GtkWidget *xscreensaver_demo;
-  GtkWidget *outer_vbox;
-  GtkWidget *menubar;
-  guint tmp_key;
-  GtkWidget *file;
-  GtkWidget *file_menu;
-  GtkAccelGroup *file_menu_accels;
-  GtkWidget *activate_menu;
-  GtkWidget *lock_menu;
-  GtkWidget *kill_menu;
-  GtkWidget *restart;
-  GtkWidget *separator1;
-  GtkWidget *exit_menu;
-  GtkWidget *help;
-  GtkWidget *help_menu;
-  GtkAccelGroup *help_menu_accels;
-  GtkWidget *about_menu;
-  GtkWidget *doc_menu;
-  GtkWidget *notebook;
-  GtkWidget *demos_table;
-  GtkWidget *blanking_table;
-  GtkWidget *cycle_label;
-  GtkWidget *lock_button_eventbox;
-  GtkWidget *lock_button;
-  GtkWidget *timeout_label;
-  GtkObject *timeout_spinbutton_adj;
-  GtkWidget *timeout_spinbutton;
-  GtkWidget *timeout_mlabel;
-  GtkWidget *cycle_mlabel;
-  GtkWidget *lock_mlabel;
-  GtkObject *lock_spinbutton_adj;
-  GtkWidget *lock_spinbutton;
-  GtkObject *cycle_spinbutton_adj;
-  GtkWidget *cycle_spinbutton;
-  GtkWidget *demo_manual_hbbox;
-  GtkWidget *demo;
-  GtkWidget *settings;
-  GtkWidget *list_vbox;
-  GtkWidget *mode_hbox;
-  GtkWidget *mode_label;
-  GtkWidget *mode_menu;
-  GtkWidget *mode_menu_menu;
-  GtkWidget *glade_menuitem;
-  GtkWidget *col_head_hbox;
-  GtkWidget *use_col_frame;
-  GtkWidget *use_label;
-  GtkWidget *saver_col_frame;
-  GtkWidget *saver_label;
-  GtkWidget *scroller;
-  GtkWidget *viewport;
-  GtkWidget *list;
-  GtkWidget *centering_hbox;
-  GtkWidget *next_prev_hbox;
-  GtkWidget *next;
-  GtkWidget *prev;
-  GtkWidget *preview_frame;
-  GtkWidget *preview_aspectframe;
-  GtkWidget *preview;
-  GtkWidget *demo_tab;
-  GtkWidget *options_table;
-  GtkWidget *diag_frame;
-  GtkWidget *diag_hbox;
-  GtkWidget *diag_logo;
-  GtkWidget *diag_vbox;
-  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_hbox;
-  GtkWidget *cmap_logo;
-  GtkWidget *cmap_vbox;
-  GtkWidget *install_button_eventbox;
-  GtkWidget *install_button;
-  GtkWidget *cmap_hr;
-  GtkWidget *fade_button_eventbox;
-  GtkWidget *fade_button;
-  GtkWidget *unfade_button_eventbox;
-  GtkWidget *unfade_button;
-  GtkWidget *fade_hbox;
-  GtkWidget *fade_dummy;
-  GtkWidget *fade_label;
-  GtkObject *fade_spinbutton_adj;
-  GtkWidget *fade_spinbutton;
-  GtkWidget *fade_sec_label;
-  GtkWidget *dpms_frame;
-  GtkWidget *dpms_hbox;
-  GtkWidget *dpms_logo;
-  GtkWidget *dpms_vbox;
-  GtkWidget *dpms_button_eventbox;
-  GtkWidget *dpms_button;
-  GtkWidget *dpms_table;
-  GtkObject *dpms_standby_spinbutton_adj;
-  GtkWidget *dpms_standby_spinbutton;
-  GtkWidget *dpms_standby_mlabel;
-  GtkWidget *dpms_suspend_mlabel;
-  GtkWidget *dpms_off_mlabel;
-  GtkWidget *dpms_off_label;
-  GtkWidget *dpms_suspend_label;
-  GtkWidget *dpms_standby_label;
-  GtkObject *dpms_suspend_spinbutton_adj;
-  GtkWidget *dpms_suspend_spinbutton;
-  GtkObject *dpms_off_spinbutton_adj;
-  GtkWidget *dpms_off_spinbutton;
-  GtkWidget *grab_frame;
-  GtkWidget *grab_hbox;
-  GtkWidget *img_logo;
-  GtkWidget *grab_vbox;
-  GtkWidget *grab_desk_eventbox;
-  GtkWidget *grab_desk_button;
-  GtkWidget *grab_video_eventbox;
-  GtkWidget *grab_video_button;
-  GtkWidget *grab_image_eventbox;
-  GtkWidget *grab_image_button;
-  GtkWidget *image_hbox;
-  GtkWidget *grab_dummy;
-  GtkWidget *image_text;
-  GtkWidget *image_browse_button;
-  GtkWidget *options_tab;
-  GtkAccelGroup *accel_group;
-  GtkTooltips *tooltips;
-
-  tooltips = gtk_tooltips_new ();
-
-  accel_group = gtk_accel_group_new ();
-
-  xscreensaver_demo = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  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_wmclass (GTK_WINDOW (xscreensaver_demo), "xscreensaver", "XScreenSaver");
-
-  outer_vbox = gtk_vbox_new (FALSE, 5);
-  gtk_widget_set_name (outer_vbox, "outer_vbox");
-  gtk_widget_ref (outer_vbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "outer_vbox", outer_vbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (outer_vbox);
-  gtk_container_add (GTK_CONTAINER (xscreensaver_demo), outer_vbox);
-
-  menubar = gtk_menu_bar_new ();
-  gtk_widget_set_name (menubar, "menubar");
-  gtk_widget_ref (menubar);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "menubar", menubar,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (menubar);
-  gtk_box_pack_start (GTK_BOX (outer_vbox), menubar, FALSE, FALSE, 0);
-
-  file = gtk_menu_item_new_with_label ("");
-  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (file)->child),
-                                   _("_File"));
-  gtk_widget_add_accelerator (file, "activate_item", accel_group,
-                              tmp_key, GDK_MOD1_MASK, (GtkAccelFlags) 0);
-  gtk_widget_set_name (file, "file");
-  gtk_widget_ref (file);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "file", file,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (file);
-  gtk_container_add (GTK_CONTAINER (menubar), file);
-
-  file_menu = gtk_menu_new ();
-  gtk_widget_set_name (file_menu, "file_menu");
-  gtk_widget_ref (file_menu);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "file_menu", file_menu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_menu_item_set_submenu (GTK_MENU_ITEM (file), file_menu);
-  file_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (file_menu));
-
-  activate_menu = gtk_menu_item_new_with_label ("");
-  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (activate_menu)->child),
-                                   _("_Blank Screen Now"));
-  gtk_widget_add_accelerator (activate_menu, "activate_item", file_menu_accels,
-                              tmp_key, 0, 0);
-  gtk_widget_set_name (activate_menu, "activate_menu");
-  gtk_widget_ref (activate_menu);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "activate_menu", activate_menu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (activate_menu);
-  gtk_container_add (GTK_CONTAINER (file_menu), activate_menu);
-  gtk_tooltips_set_tip (tooltips, activate_menu, _("Activate the XScreenSaver daemon now (locking the screen if so configured.)"), NULL);
-
-  lock_menu = gtk_menu_item_new_with_label ("");
-  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (lock_menu)->child),
-                                   _("_Lock Screen Now"));
-  gtk_widget_add_accelerator (lock_menu, "activate_item", file_menu_accels,
-                              tmp_key, 0, 0);
-  gtk_widget_set_name (lock_menu, "lock_menu");
-  gtk_widget_ref (lock_menu);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_menu", lock_menu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (lock_menu);
-  gtk_container_add (GTK_CONTAINER (file_menu), lock_menu);
-  gtk_tooltips_set_tip (tooltips, lock_menu, _("Lock the screen now (even if \"Lock Screen\" is unchecked.)"), NULL);
-
-  kill_menu = gtk_menu_item_new_with_label ("");
-  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (kill_menu)->child),
-                                   _("_Kill Daemon"));
-  gtk_widget_add_accelerator (kill_menu, "activate_item", file_menu_accels,
-                              tmp_key, 0, 0);
-  gtk_widget_set_name (kill_menu, "kill_menu");
-  gtk_widget_ref (kill_menu);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "kill_menu", kill_menu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (kill_menu);
-  gtk_container_add (GTK_CONTAINER (file_menu), kill_menu);
-  gtk_tooltips_set_tip (tooltips, kill_menu, _("Tell the running XScreenSaver daemon to exit."), NULL);
-
-  restart = gtk_menu_item_new_with_label ("");
-  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (restart)->child),
-                                   _("_Restart Daemon"));
-  gtk_widget_add_accelerator (restart, "activate_item", file_menu_accels,
-                              tmp_key, 0, 0);
-  gtk_widget_set_name (restart, "restart");
-  gtk_widget_ref (restart);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "restart", restart,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (restart);
-  gtk_container_add (GTK_CONTAINER (file_menu), restart);
-  gtk_tooltips_set_tip (tooltips, restart, _("Kill and re-launch the XScreenSaver daemon."), NULL);
-
-  separator1 = gtk_menu_item_new ();
-  gtk_widget_set_name (separator1, "separator1");
-  gtk_widget_ref (separator1);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "separator1", separator1,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (separator1);
-  gtk_container_add (GTK_CONTAINER (file_menu), separator1);
-  gtk_widget_set_sensitive (separator1, FALSE);
-
-  exit_menu = gtk_menu_item_new_with_label ("");
-  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (exit_menu)->child),
-                                   _("_Exit"));
-  gtk_widget_add_accelerator (exit_menu, "activate_item", file_menu_accels,
-                              tmp_key, 0, 0);
-  gtk_widget_set_name (exit_menu, "exit_menu");
-  gtk_widget_ref (exit_menu);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "exit_menu", exit_menu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (exit_menu);
-  gtk_container_add (GTK_CONTAINER (file_menu), exit_menu);
-  gtk_tooltips_set_tip (tooltips, exit_menu, _("Exit the xscreensaver-demo program (but leave the XScreenSaver daemon running in the background.)"), NULL);
-
-  help = gtk_menu_item_new_with_label ("");
-  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (help)->child),
-                                   _("_Help"));
-  gtk_widget_add_accelerator (help, "activate_item", accel_group,
-                              tmp_key, GDK_MOD1_MASK, (GtkAccelFlags) 0);
-  gtk_widget_set_name (help, "help");
-  gtk_widget_ref (help);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "help", help,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (help);
-  gtk_container_add (GTK_CONTAINER (menubar), help);
-
-  help_menu = gtk_menu_new ();
-  gtk_widget_set_name (help_menu, "help_menu");
-  gtk_widget_ref (help_menu);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "help_menu", help_menu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_menu_item_set_submenu (GTK_MENU_ITEM (help), help_menu);
-  help_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (help_menu));
-
-  about_menu = gtk_menu_item_new_with_label ("");
-  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (about_menu)->child),
-                                   _("_About..."));
-  gtk_widget_add_accelerator (about_menu, "activate_item", help_menu_accels,
-                              tmp_key, 0, 0);
-  gtk_widget_set_name (about_menu, "about_menu");
-  gtk_widget_ref (about_menu);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "about_menu", about_menu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (about_menu);
-  gtk_container_add (GTK_CONTAINER (help_menu), about_menu);
-  gtk_tooltips_set_tip (tooltips, about_menu, _("Display version information."), NULL);
-
-  doc_menu = gtk_menu_item_new_with_label ("");
-  tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (doc_menu)->child),
-                                   _("_Documentation..."));
-  gtk_widget_add_accelerator (doc_menu, "activate_item", help_menu_accels,
-                              tmp_key, 0, 0);
-  gtk_widget_set_name (doc_menu, "doc_menu");
-  gtk_widget_ref (doc_menu);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "doc_menu", doc_menu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (doc_menu);
-  gtk_container_add (GTK_CONTAINER (help_menu), doc_menu);
-  gtk_tooltips_set_tip (tooltips, doc_menu, _("Go to the documentation on the XScreenSaver web page."), NULL);
-
-  notebook = gtk_notebook_new ();
-  gtk_widget_set_name (notebook, "notebook");
-  gtk_widget_ref (notebook);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "notebook", notebook,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (notebook);
-  gtk_box_pack_start (GTK_BOX (outer_vbox), notebook, TRUE, TRUE, 0);
-
-  demos_table = gtk_table_new (2, 2, FALSE);
-  gtk_widget_set_name (demos_table, "demos_table");
-  gtk_widget_ref (demos_table);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demos_table", demos_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (demos_table);
-  gtk_container_add (GTK_CONTAINER (notebook), demos_table);
-  gtk_container_set_border_width (GTK_CONTAINER (demos_table), 10);
-
-  blanking_table = gtk_table_new (3, 4, 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_table_attach (GTK_TABLE (demos_table), blanking_table, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
-  gtk_table_set_row_spacings (GTK_TABLE (blanking_table), 2);
-
-  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, 1, 2, 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);
-  gtk_misc_set_padding (GTK_MISC (cycle_label), 8, 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, 2, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_tooltips_set_tip (tooltips, lock_button_eventbox, _("Whether a password should be required to un-blank the screen."), NULL);
-
-  lock_button = gtk_check_button_new_with_label (_("Lock Screen After"));
-  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);
-
-  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, 1, 2, 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);
-  gtk_misc_set_padding (GTK_MISC (timeout_label), 8, 0);
-
-  timeout_spinbutton_adj = gtk_adjustment_new (0, 1, 720, 1, 30, 30);
-  timeout_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (timeout_spinbutton_adj), 15, 0);
-  gtk_widget_set_name (timeout_spinbutton, "timeout_spinbutton");
-  gtk_widget_ref (timeout_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_spinbutton", timeout_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (timeout_spinbutton);
-  gtk_table_attach (GTK_TABLE (blanking_table), timeout_spinbutton, 2, 3, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_tooltips_set_tip (tooltips, timeout_spinbutton, _("How long before the monitor goes completely black."), NULL);
-  gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (timeout_spinbutton), TRUE);
-  gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (timeout_spinbutton), TRUE);
-
-  timeout_mlabel = gtk_label_new (_("minutes"));
-  gtk_widget_set_name (timeout_mlabel, "timeout_mlabel");
-  gtk_widget_ref (timeout_mlabel);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "timeout_mlabel", timeout_mlabel,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (timeout_mlabel);
-  gtk_table_attach (GTK_TABLE (blanking_table), timeout_mlabel, 3, 4, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (timeout_mlabel), GTK_JUSTIFY_LEFT);
-  gtk_misc_set_alignment (GTK_MISC (timeout_mlabel), 0, 0.5);
-
-  cycle_mlabel = gtk_label_new (_("minutes"));
-  gtk_widget_set_name (cycle_mlabel, "cycle_mlabel");
-  gtk_widget_ref (cycle_mlabel);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_mlabel", cycle_mlabel,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (cycle_mlabel);
-  gtk_table_attach (GTK_TABLE (blanking_table), cycle_mlabel, 3, 4, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (cycle_mlabel), GTK_JUSTIFY_LEFT);
-  gtk_misc_set_alignment (GTK_MISC (cycle_mlabel), 0, 0.5);
-
-  lock_mlabel = gtk_label_new (_("minutes"));
-  gtk_widget_set_name (lock_mlabel, "lock_mlabel");
-  gtk_widget_ref (lock_mlabel);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_mlabel", lock_mlabel,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (lock_mlabel);
-  gtk_table_attach (GTK_TABLE (blanking_table), lock_mlabel, 3, 4, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (lock_mlabel), GTK_JUSTIFY_LEFT);
-  gtk_misc_set_alignment (GTK_MISC (lock_mlabel), 0, 0.5);
-
-  lock_spinbutton_adj = gtk_adjustment_new (0, 0, 720, 1, 30, 30);
-  lock_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (lock_spinbutton_adj), 15, 0);
-  gtk_widget_set_name (lock_spinbutton, "lock_spinbutton");
-  gtk_widget_ref (lock_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "lock_spinbutton", lock_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (lock_spinbutton);
-  gtk_table_attach (GTK_TABLE (blanking_table), lock_spinbutton, 2, 3, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 10);
-  gtk_tooltips_set_tip (tooltips, lock_spinbutton, _("How long before the monitor goes completely black."), NULL);
-  gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (lock_spinbutton), TRUE);
-  gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (lock_spinbutton), TRUE);
-
-  cycle_spinbutton_adj = gtk_adjustment_new (0, 1, 720, 1, 30, 30);
-  cycle_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (cycle_spinbutton_adj), 15, 0);
-  gtk_widget_set_name (cycle_spinbutton, "cycle_spinbutton");
-  gtk_widget_ref (cycle_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cycle_spinbutton", cycle_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (cycle_spinbutton);
-  gtk_table_attach (GTK_TABLE (blanking_table), cycle_spinbutton, 2, 3, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_tooltips_set_tip (tooltips, cycle_spinbutton, _("How long before the monitor goes completely black."), NULL);
-  gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (cycle_spinbutton), TRUE);
-  gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (cycle_spinbutton), TRUE);
-
-  demo_manual_hbbox = gtk_hbutton_box_new ();
-  gtk_widget_set_name (demo_manual_hbbox, "demo_manual_hbbox");
-  gtk_widget_ref (demo_manual_hbbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demo_manual_hbbox", demo_manual_hbbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (demo_manual_hbbox);
-  gtk_table_attach (GTK_TABLE (demos_table), demo_manual_hbbox, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
-  gtk_button_box_set_layout (GTK_BUTTON_BOX (demo_manual_hbbox), GTK_BUTTONBOX_SPREAD);
-
-  demo = gtk_button_new_with_label (_("Preview"));
-  gtk_widget_set_name (demo, "demo");
-  gtk_widget_ref (demo);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demo", demo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (demo);
-  gtk_container_add (GTK_CONTAINER (demo_manual_hbbox), demo);
-  STFU GTK_WIDGET_SET_FLAGS (demo, GTK_CAN_DEFAULT);
-  gtk_tooltips_set_tip (tooltips, demo, _("Demo the selected screen saver in full-screen mode (click the mouse to return.)"), NULL);
-
-  settings = gtk_button_new_with_label (_("Settings..."));
-  gtk_widget_set_name (settings, "settings");
-  gtk_widget_ref (settings);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "settings", settings,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (settings);
-  gtk_container_add (GTK_CONTAINER (demo_manual_hbbox), settings);
-  STFU GTK_WIDGET_SET_FLAGS (settings, GTK_CAN_DEFAULT);
-  gtk_tooltips_set_tip (tooltips, settings, _("Customization and explanation of the selected screen saver."), NULL);
-
-  list_vbox = gtk_vbox_new (FALSE, 0);
-  gtk_widget_set_name (list_vbox, "list_vbox");
-  gtk_widget_ref (list_vbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "list_vbox", list_vbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (list_vbox);
-  gtk_table_attach (GTK_TABLE (demos_table), list_vbox, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
-  gtk_container_set_border_width (GTK_CONTAINER (list_vbox), 10);
-
-  mode_hbox = gtk_hbox_new (FALSE, 0);
-  gtk_widget_set_name (mode_hbox, "mode_hbox");
-  gtk_widget_ref (mode_hbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "mode_hbox", mode_hbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (mode_hbox);
-  gtk_box_pack_start (GTK_BOX (list_vbox), mode_hbox, FALSE, TRUE, 10);
-
-  mode_label = gtk_label_new (_("Mode:"));
-  gtk_widget_set_name (mode_label, "mode_label");
-  gtk_widget_ref (mode_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "mode_label", mode_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (mode_label);
-  gtk_box_pack_start (GTK_BOX (mode_hbox), mode_label, FALSE, FALSE, 0);
-  gtk_label_set_justify (GTK_LABEL (mode_label), GTK_JUSTIFY_LEFT);
-  gtk_misc_set_alignment (GTK_MISC (mode_label), 0, 0.5);
-
-  mode_menu = gtk_option_menu_new ();
-  gtk_widget_set_name (mode_menu, "mode_menu");
-  gtk_widget_ref (mode_menu);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "mode_menu", mode_menu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (mode_menu);
-  gtk_box_pack_start (GTK_BOX (mode_hbox), mode_menu, FALSE, FALSE, 4);
-  mode_menu_menu = gtk_menu_new ();
-  glade_menuitem = gtk_menu_item_new_with_label (_("Disable Screen Saver"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (mode_menu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("Blank Screen Only"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (mode_menu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("Only One Screen Saver"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (mode_menu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("Random Screen Saver"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (mode_menu_menu), glade_menuitem);
-  gtk_option_menu_set_menu (GTK_OPTION_MENU (mode_menu), mode_menu_menu);
-  gtk_option_menu_set_history (GTK_OPTION_MENU (mode_menu), 3);
-
-  col_head_hbox = gtk_hbox_new (FALSE, 0);
-  gtk_widget_set_name (col_head_hbox, "col_head_hbox");
-  gtk_widget_ref (col_head_hbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "col_head_hbox", col_head_hbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (col_head_hbox);
-  gtk_box_pack_start (GTK_BOX (list_vbox), col_head_hbox, FALSE, TRUE, 0);
-
-  use_col_frame = gtk_frame_new (NULL);
-  gtk_widget_set_name (use_col_frame, "use_col_frame");
-  gtk_widget_ref (use_col_frame);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "use_col_frame", use_col_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (use_col_frame);
-  gtk_box_pack_start (GTK_BOX (col_head_hbox), use_col_frame, FALSE, FALSE, 0);
-  gtk_frame_set_shadow_type (GTK_FRAME (use_col_frame), GTK_SHADOW_OUT);
-
-  use_label = gtk_label_new (_("Use"));
-  gtk_widget_set_name (use_label, "use_label");
-  gtk_widget_ref (use_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "use_label", use_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (use_label);
-  gtk_container_add (GTK_CONTAINER (use_col_frame), use_label);
-  gtk_label_set_justify (GTK_LABEL (use_label), GTK_JUSTIFY_LEFT);
-  gtk_misc_set_alignment (GTK_MISC (use_label), 0, 0.5);
-  gtk_misc_set_padding (GTK_MISC (use_label), 3, 0);
-
-  saver_col_frame = gtk_frame_new (NULL);
-  gtk_widget_set_name (saver_col_frame, "saver_col_frame");
-  gtk_widget_ref (saver_col_frame);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "saver_col_frame", saver_col_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (saver_col_frame);
-  gtk_box_pack_start (GTK_BOX (col_head_hbox), saver_col_frame, TRUE, TRUE, 0);
-  gtk_frame_set_shadow_type (GTK_FRAME (saver_col_frame), GTK_SHADOW_OUT);
-
-  saver_label = gtk_label_new (_("Screen Saver"));
-  gtk_widget_set_name (saver_label, "saver_label");
-  gtk_widget_ref (saver_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "saver_label", saver_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (saver_label);
-  gtk_container_add (GTK_CONTAINER (saver_col_frame), saver_label);
-  gtk_label_set_justify (GTK_LABEL (saver_label), GTK_JUSTIFY_LEFT);
-  gtk_misc_set_alignment (GTK_MISC (saver_label), 0, 0.5);
-  gtk_misc_set_padding (GTK_MISC (saver_label), 6, 0);
-
-  scroller = gtk_scrolled_window_new (NULL, NULL);
-  gtk_widget_set_name (scroller, "scroller");
-  gtk_widget_ref (scroller);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "scroller", scroller,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (scroller);
-  gtk_box_pack_start (GTK_BOX (list_vbox), scroller, TRUE, TRUE, 0);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroller), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
-
-  viewport = gtk_viewport_new (NULL, NULL);
-  gtk_widget_set_name (viewport, "viewport");
-  gtk_widget_ref (viewport);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "viewport", viewport,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (viewport);
-  gtk_container_add (GTK_CONTAINER (scroller), viewport);
-  gtk_container_set_border_width (GTK_CONTAINER (viewport), 1);
-
-  list = gtk_list_new ();
-  gtk_widget_set_name (list, "list");
-  gtk_widget_ref (list);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "list", list,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (list);
-  gtk_container_add (GTK_CONTAINER (viewport), list);
-
-  centering_hbox = gtk_hbox_new (TRUE, 0);
-  gtk_widget_set_name (centering_hbox, "centering_hbox");
-  gtk_widget_ref (centering_hbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "centering_hbox", centering_hbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (centering_hbox);
-  gtk_box_pack_end (GTK_BOX (list_vbox), centering_hbox, FALSE, TRUE, 0);
-
-  next_prev_hbox = gtk_hbox_new (FALSE, 0);
-  gtk_widget_set_name (next_prev_hbox, "next_prev_hbox");
-  gtk_widget_ref (next_prev_hbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "next_prev_hbox", next_prev_hbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (next_prev_hbox);
-  gtk_box_pack_start (GTK_BOX (centering_hbox), next_prev_hbox, FALSE, FALSE, 0);
-
-  next = gtk_button_new_with_label (_("\\/"));
-  gtk_widget_set_name (next, "next");
-  gtk_widget_ref (next);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "next", next,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (next);
-  gtk_box_pack_start (GTK_BOX (next_prev_hbox), next, FALSE, FALSE, 0);
-  STFU GTK_WIDGET_SET_FLAGS (next, GTK_CAN_DEFAULT);
-  gtk_tooltips_set_tip (tooltips, next, _("Run the next screen saver in the list in full-screen mode (click the mouse to return.)"), NULL);
-
-  prev = gtk_button_new_with_label (_("/\\"));
-  gtk_widget_set_name (prev, "prev");
-  gtk_widget_ref (prev);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "prev", prev,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (prev);
-  gtk_box_pack_start (GTK_BOX (next_prev_hbox), prev, FALSE, FALSE, 0);
-  STFU GTK_WIDGET_SET_FLAGS (prev, GTK_CAN_DEFAULT);
-  gtk_tooltips_set_tip (tooltips, prev, _("Run the previous screen saver in the list in full-screen mode (click the mouse to return.)"), NULL);
-
-  preview_frame = gtk_frame_new (_("Description"));
-  gtk_widget_set_name (preview_frame, "preview_frame");
-  gtk_widget_ref (preview_frame);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "preview_frame", preview_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preview_frame);
-  gtk_table_attach (GTK_TABLE (demos_table), preview_frame, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), 0, 6);
-
-  preview_aspectframe = gtk_aspect_frame_new (NULL, 0.5, 0.5, 1.33, FALSE);
-  gtk_widget_set_name (preview_aspectframe, "preview_aspectframe");
-  gtk_widget_ref (preview_aspectframe);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "preview_aspectframe", preview_aspectframe,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preview_aspectframe);
-  gtk_container_add (GTK_CONTAINER (preview_frame), preview_aspectframe);
-  gtk_container_set_border_width (GTK_CONTAINER (preview_aspectframe), 8);
-
-  preview = gtk_drawing_area_new ();
-  gtk_widget_set_name (preview, "preview");
-  gtk_widget_ref (preview);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "preview", preview,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preview);
-  gtk_container_add (GTK_CONTAINER (preview_aspectframe), preview);
-
-  demo_tab = gtk_label_new (_("Display Modes"));
-  gtk_widget_set_name (demo_tab, "demo_tab");
-  gtk_widget_ref (demo_tab);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "demo_tab", demo_tab,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (demo_tab);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 0), demo_tab);
-
-  options_table = gtk_table_new (2, 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_container_add (GTK_CONTAINER (notebook), options_table);
-
-  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_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
-  gtk_container_set_border_width (GTK_CONTAINER (diag_frame), 10);
-
-  diag_hbox = gtk_hbox_new (FALSE, 8);
-  gtk_widget_set_name (diag_hbox, "diag_hbox");
-  gtk_widget_ref (diag_hbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "diag_hbox", diag_hbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (diag_hbox);
-  gtk_container_add (GTK_CONTAINER (diag_frame), diag_hbox);
-  gtk_container_set_border_width (GTK_CONTAINER (diag_hbox), 8);
-
-  diag_logo = create_pixmap (xscreensaver_demo, "screensaver-diagnostic.png");
-  gtk_widget_set_name (diag_logo, "diag_logo");
-  gtk_widget_ref (diag_logo);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "diag_logo", diag_logo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (diag_logo);
-  gtk_box_pack_start (GTK_BOX (diag_hbox), diag_logo, FALSE, FALSE, 0);
-  gtk_misc_set_alignment (GTK_MISC (diag_logo), 0.5, 0);
-
-  diag_vbox = gtk_vbox_new (FALSE, 0);
-  gtk_widget_set_name (diag_vbox, "diag_vbox");
-  gtk_widget_ref (diag_vbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "diag_vbox", diag_vbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (diag_vbox);
-  gtk_box_pack_start (GTK_BOX (diag_hbox), diag_vbox, TRUE, TRUE, 0);
-
-  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_box_pack_start (GTK_BOX (diag_vbox), verbose_button_eventbox, FALSE, FALSE, 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_box_pack_start (GTK_BOX (diag_vbox), capture_button_eventbox, FALSE, FALSE, 0);
-  gtk_tooltips_set_tip (tooltips, capture_button_eventbox, _("Whether any error output of the display modes should be redirected to the screen."), 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_box_pack_start (GTK_BOX (diag_vbox), splash_button_eventbox, FALSE, FALSE, 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"));
-  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_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
-  gtk_container_set_border_width (GTK_CONTAINER (cmap_frame), 10);
-
-  cmap_hbox = gtk_hbox_new (FALSE, 8);
-  gtk_widget_set_name (cmap_hbox, "cmap_hbox");
-  gtk_widget_ref (cmap_hbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_hbox", cmap_hbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (cmap_hbox);
-  gtk_container_add (GTK_CONTAINER (cmap_frame), cmap_hbox);
-  gtk_container_set_border_width (GTK_CONTAINER (cmap_hbox), 8);
-
-  cmap_logo = create_pixmap (xscreensaver_demo, "screensaver-colorselector.png");
-  gtk_widget_set_name (cmap_logo, "cmap_logo");
-  gtk_widget_ref (cmap_logo);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_logo", cmap_logo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (cmap_logo);
-  gtk_box_pack_start (GTK_BOX (cmap_hbox), cmap_logo, FALSE, FALSE, 0);
-  gtk_misc_set_alignment (GTK_MISC (cmap_logo), 0.5, 0);
-
-  cmap_vbox = gtk_vbox_new (FALSE, 0);
-  gtk_widget_set_name (cmap_vbox, "cmap_vbox");
-  gtk_widget_ref (cmap_vbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "cmap_vbox", cmap_vbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (cmap_vbox);
-  gtk_box_pack_start (GTK_BOX (cmap_hbox), cmap_vbox, TRUE, TRUE, 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_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "install_button_eventbox", install_button_eventbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (install_button_eventbox);
-  gtk_box_pack_start (GTK_BOX (cmap_vbox), install_button_eventbox, FALSE, FALSE, 0);
-  gtk_tooltips_set_tip (tooltips, install_button_eventbox, _("Whether to install a private colormap when running in 8-bit mode on the default Visual."), NULL);
-
-  install_button = gtk_check_button_new_with_label (_("Install Colormap"));
-  gtk_widget_set_name (install_button, "install_button");
-  gtk_widget_ref (install_button);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "install_button", install_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (install_button);
-  gtk_container_add (GTK_CONTAINER (install_button_eventbox), install_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_box_pack_start (GTK_BOX (cmap_vbox), cmap_hr, FALSE, FALSE, 4);
-
-  fade_button_eventbox = gtk_event_box_new ();
-  gtk_widget_set_name (fade_button_eventbox, "fade_button_eventbox");
-  gtk_widget_ref (fade_button_eventbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_button_eventbox", fade_button_eventbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (fade_button_eventbox);
-  gtk_box_pack_start (GTK_BOX (cmap_vbox), fade_button_eventbox, FALSE, FALSE, 0);
-  gtk_tooltips_set_tip (tooltips, fade_button_eventbox, _("Whether the screen should slowly fade to black when the screen saver activates."), NULL);
-
-  fade_button = gtk_check_button_new_with_label (_("Fade To Black When Blanking"));
-  gtk_widget_set_name (fade_button, "fade_button");
-  gtk_widget_ref (fade_button);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_button", fade_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (fade_button);
-  gtk_container_add (GTK_CONTAINER (fade_button_eventbox), fade_button);
-
-  unfade_button_eventbox = gtk_event_box_new ();
-  gtk_widget_set_name (unfade_button_eventbox, "unfade_button_eventbox");
-  gtk_widget_ref (unfade_button_eventbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "unfade_button_eventbox", unfade_button_eventbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (unfade_button_eventbox);
-  gtk_box_pack_start (GTK_BOX (cmap_vbox), unfade_button_eventbox, FALSE, FALSE, 0);
-  gtk_tooltips_set_tip (tooltips, unfade_button_eventbox, _("Whether the screen should slowly fade in from black when the screen saver deactivates."), NULL);
-
-  unfade_button = gtk_check_button_new_with_label (_("Fade From Black When Unblanking"));
-  gtk_widget_set_name (unfade_button, "unfade_button");
-  gtk_widget_ref (unfade_button);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "unfade_button", unfade_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (unfade_button);
-  gtk_container_add (GTK_CONTAINER (unfade_button_eventbox), unfade_button);
-
-  fade_hbox = gtk_hbox_new (FALSE, 0);
-  gtk_widget_set_name (fade_hbox, "fade_hbox");
-  gtk_widget_ref (fade_hbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_hbox", fade_hbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (fade_hbox);
-  gtk_box_pack_start (GTK_BOX (cmap_vbox), fade_hbox, FALSE, FALSE, 0);
-
-  fade_dummy = gtk_label_new ("");
-  gtk_widget_set_name (fade_dummy, "fade_dummy");
-  gtk_widget_ref (fade_dummy);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_dummy", fade_dummy,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (fade_dummy);
-  gtk_box_pack_start (GTK_BOX (fade_hbox), fade_dummy, FALSE, FALSE, 0);
-  gtk_label_set_justify (GTK_LABEL (fade_dummy), GTK_JUSTIFY_LEFT);
-  gtk_misc_set_padding (GTK_MISC (fade_dummy), 3, 0);
-
-  fade_label = gtk_label_new (_("Fade Duration"));
-  gtk_widget_set_name (fade_label, "fade_label");
-  gtk_widget_ref (fade_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_label", fade_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (fade_label);
-  gtk_box_pack_start (GTK_BOX (fade_hbox), fade_label, FALSE, FALSE, 10);
-  gtk_label_set_justify (GTK_LABEL (fade_label), GTK_JUSTIFY_LEFT);
-  gtk_misc_set_alignment (GTK_MISC (fade_label), 0, 0.5);
-
-  fade_spinbutton_adj = gtk_adjustment_new (0, 0, 10, 1, 1, 1);
-  fade_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (fade_spinbutton_adj), 1, 0);
-  gtk_widget_set_name (fade_spinbutton, "fade_spinbutton");
-  gtk_widget_ref (fade_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_spinbutton", fade_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (fade_spinbutton);
-  gtk_box_pack_start (GTK_BOX (fade_hbox), fade_spinbutton, FALSE, FALSE, 0);
-  gtk_tooltips_set_tip (tooltips, fade_spinbutton, _("How long it should take for the screen to fade in and out."), NULL);
-  gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (fade_spinbutton), TRUE);
-  gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (fade_spinbutton), TRUE);
-
-  fade_sec_label = gtk_label_new (_("seconds"));
-  gtk_widget_set_name (fade_sec_label, "fade_sec_label");
-  gtk_widget_ref (fade_sec_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "fade_sec_label", fade_sec_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (fade_sec_label);
-  gtk_box_pack_start (GTK_BOX (fade_hbox), fade_sec_label, FALSE, FALSE, 0);
-  gtk_label_set_justify (GTK_LABEL (fade_sec_label), GTK_JUSTIFY_LEFT);
-  gtk_misc_set_alignment (GTK_MISC (fade_sec_label), 0, 0.5);
-
-  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_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
-  gtk_container_set_border_width (GTK_CONTAINER (dpms_frame), 10);
-
-  dpms_hbox = gtk_hbox_new (FALSE, 8);
-  gtk_widget_set_name (dpms_hbox, "dpms_hbox");
-  gtk_widget_ref (dpms_hbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_hbox", dpms_hbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dpms_hbox);
-  gtk_container_add (GTK_CONTAINER (dpms_frame), dpms_hbox);
-  gtk_container_set_border_width (GTK_CONTAINER (dpms_hbox), 8);
-
-  dpms_logo = create_pixmap (xscreensaver_demo, "screensaver-power.png");
-  gtk_widget_set_name (dpms_logo, "dpms_logo");
-  gtk_widget_ref (dpms_logo);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_logo", dpms_logo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dpms_logo);
-  gtk_box_pack_start (GTK_BOX (dpms_hbox), dpms_logo, FALSE, FALSE, 0);
-  gtk_misc_set_alignment (GTK_MISC (dpms_logo), 0.5, 0);
-
-  dpms_vbox = gtk_vbox_new (FALSE, 0);
-  gtk_widget_set_name (dpms_vbox, "dpms_vbox");
-  gtk_widget_ref (dpms_vbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_vbox", dpms_vbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dpms_vbox);
-  gtk_box_pack_start (GTK_BOX (dpms_hbox), dpms_vbox, FALSE, FALSE, 0);
-
-  dpms_button_eventbox = gtk_event_box_new ();
-  gtk_widget_set_name (dpms_button_eventbox, "dpms_button_eventbox");
-  gtk_widget_ref (dpms_button_eventbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_button_eventbox", dpms_button_eventbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dpms_button_eventbox);
-  gtk_box_pack_start (GTK_BOX (dpms_vbox), dpms_button_eventbox, FALSE, FALSE, 0);
-  gtk_tooltips_set_tip (tooltips, dpms_button_eventbox, _("Whether the monitor should be powered down after a while."), NULL);
-
-  dpms_button = gtk_check_button_new_with_label (_("Power Management Enabled"));
-  gtk_widget_set_name (dpms_button, "dpms_button");
-  gtk_widget_ref (dpms_button);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_button", dpms_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dpms_button);
-  gtk_container_add (GTK_CONTAINER (dpms_button_eventbox), dpms_button);
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dpms_button), TRUE);
-
-  dpms_table = gtk_table_new (3, 3, FALSE);
-  gtk_widget_set_name (dpms_table, "dpms_table");
-  gtk_widget_ref (dpms_table);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_table", dpms_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dpms_table);
-  gtk_box_pack_start (GTK_BOX (dpms_vbox), dpms_table, FALSE, FALSE, 0);
-  gtk_table_set_row_spacings (GTK_TABLE (dpms_table), 2);
-
-  dpms_standby_spinbutton_adj = gtk_adjustment_new (0, 0, 1440, 1, 30, 30);
-  dpms_standby_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (dpms_standby_spinbutton_adj), 15, 0);
-  gtk_widget_set_name (dpms_standby_spinbutton, "dpms_standby_spinbutton");
-  gtk_widget_ref (dpms_standby_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_standby_spinbutton", dpms_standby_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dpms_standby_spinbutton);
-  gtk_table_attach (GTK_TABLE (dpms_table), dpms_standby_spinbutton, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_tooltips_set_tip (tooltips, dpms_standby_spinbutton, _("How long before the monitor goes completely black."), NULL);
-  gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (dpms_standby_spinbutton), TRUE);
-  gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (dpms_standby_spinbutton), TRUE);
-
-  dpms_standby_mlabel = gtk_label_new (_("minutes"));
-  gtk_widget_set_name (dpms_standby_mlabel, "dpms_standby_mlabel");
-  gtk_widget_ref (dpms_standby_mlabel);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_standby_mlabel", dpms_standby_mlabel,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dpms_standby_mlabel);
-  gtk_table_attach (GTK_TABLE (dpms_table), dpms_standby_mlabel, 2, 3, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (dpms_standby_mlabel), GTK_JUSTIFY_LEFT);
-  gtk_misc_set_alignment (GTK_MISC (dpms_standby_mlabel), 0, 0.5);
-
-  dpms_suspend_mlabel = gtk_label_new (_("minutes"));
-  gtk_widget_set_name (dpms_suspend_mlabel, "dpms_suspend_mlabel");
-  gtk_widget_ref (dpms_suspend_mlabel);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_suspend_mlabel", dpms_suspend_mlabel,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dpms_suspend_mlabel);
-  gtk_table_attach (GTK_TABLE (dpms_table), dpms_suspend_mlabel, 2, 3, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (dpms_suspend_mlabel), GTK_JUSTIFY_LEFT);
-  gtk_misc_set_alignment (GTK_MISC (dpms_suspend_mlabel), 0, 0.5);
-
-  dpms_off_mlabel = gtk_label_new (_("minutes"));
-  gtk_widget_set_name (dpms_off_mlabel, "dpms_off_mlabel");
-  gtk_widget_ref (dpms_off_mlabel);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_off_mlabel", dpms_off_mlabel,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dpms_off_mlabel);
-  gtk_table_attach (GTK_TABLE (dpms_table), dpms_off_mlabel, 2, 3, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (dpms_off_mlabel), GTK_JUSTIFY_LEFT);
-  gtk_misc_set_alignment (GTK_MISC (dpms_off_mlabel), 0, 0.5);
-
-  dpms_off_label = gtk_label_new (_("Off After"));
-  gtk_widget_set_name (dpms_off_label, "dpms_off_label");
-  gtk_widget_ref (dpms_off_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_off_label", dpms_off_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dpms_off_label);
-  gtk_table_attach (GTK_TABLE (dpms_table), dpms_off_label, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (dpms_off_label), GTK_JUSTIFY_RIGHT);
-  gtk_misc_set_alignment (GTK_MISC (dpms_off_label), 1, 0.5);
-  gtk_misc_set_padding (GTK_MISC (dpms_off_label), 10, 0);
-
-  dpms_suspend_label = gtk_label_new (_("Suspend After"));
-  gtk_widget_set_name (dpms_suspend_label, "dpms_suspend_label");
-  gtk_widget_ref (dpms_suspend_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_suspend_label", dpms_suspend_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dpms_suspend_label);
-  gtk_table_attach (GTK_TABLE (dpms_table), dpms_suspend_label, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (dpms_suspend_label), GTK_JUSTIFY_RIGHT);
-  gtk_misc_set_alignment (GTK_MISC (dpms_suspend_label), 1, 0.5);
-  gtk_misc_set_padding (GTK_MISC (dpms_suspend_label), 10, 0);
-
-  dpms_standby_label = gtk_label_new (_("Standby After"));
-  gtk_widget_set_name (dpms_standby_label, "dpms_standby_label");
-  gtk_widget_ref (dpms_standby_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_standby_label", dpms_standby_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dpms_standby_label);
-  gtk_table_attach (GTK_TABLE (dpms_table), dpms_standby_label, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (dpms_standby_label), GTK_JUSTIFY_RIGHT);
-  gtk_misc_set_alignment (GTK_MISC (dpms_standby_label), 1, 0.5);
-  gtk_misc_set_padding (GTK_MISC (dpms_standby_label), 10, 0);
-
-  dpms_suspend_spinbutton_adj = gtk_adjustment_new (0, 0, 1440, 1, 30, 30);
-  dpms_suspend_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (dpms_suspend_spinbutton_adj), 15, 0);
-  gtk_widget_set_name (dpms_suspend_spinbutton, "dpms_suspend_spinbutton");
-  gtk_widget_ref (dpms_suspend_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_suspend_spinbutton", dpms_suspend_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dpms_suspend_spinbutton);
-  gtk_table_attach (GTK_TABLE (dpms_table), dpms_suspend_spinbutton, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_tooltips_set_tip (tooltips, dpms_suspend_spinbutton, _("How long until the monitor goes into power-saving mode."), NULL);
-  gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (dpms_suspend_spinbutton), TRUE);
-  gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (dpms_suspend_spinbutton), TRUE);
-
-  dpms_off_spinbutton_adj = gtk_adjustment_new (0, 0, 1440, 1, 30, 30);
-  dpms_off_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (dpms_off_spinbutton_adj), 15, 0);
-  gtk_widget_set_name (dpms_off_spinbutton, "dpms_off_spinbutton");
-  gtk_widget_ref (dpms_off_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "dpms_off_spinbutton", dpms_off_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dpms_off_spinbutton);
-  gtk_table_attach (GTK_TABLE (dpms_table), dpms_off_spinbutton, 1, 2, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_tooltips_set_tip (tooltips, dpms_off_spinbutton, _("How long until the monitor powers down."), NULL);
-  gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (dpms_off_spinbutton), TRUE);
-  gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (dpms_off_spinbutton), TRUE);
-
-  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), grab_frame, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
-  gtk_container_set_border_width (GTK_CONTAINER (grab_frame), 10);
-
-  grab_hbox = gtk_hbox_new (FALSE, 8);
-  gtk_widget_set_name (grab_hbox, "grab_hbox");
-  gtk_widget_ref (grab_hbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_hbox", grab_hbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (grab_hbox);
-  gtk_container_add (GTK_CONTAINER (grab_frame), grab_hbox);
-  gtk_container_set_border_width (GTK_CONTAINER (grab_hbox), 8);
-
-  img_logo = create_pixmap (xscreensaver_demo, "screensaver-snap.png");
-  gtk_widget_set_name (img_logo, "img_logo");
-  gtk_widget_ref (img_logo);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "img_logo", img_logo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (img_logo);
-  gtk_box_pack_start (GTK_BOX (grab_hbox), img_logo, FALSE, FALSE, 0);
-  gtk_misc_set_alignment (GTK_MISC (img_logo), 0.5, 0);
-
-  grab_vbox = gtk_vbox_new (FALSE, 0);
-  gtk_widget_set_name (grab_vbox, "grab_vbox");
-  gtk_widget_ref (grab_vbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "grab_vbox", grab_vbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (grab_vbox);
-  gtk_box_pack_start (GTK_BOX (grab_hbox), grab_vbox, TRUE, TRUE, 0);
-
-  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_box_pack_start (GTK_BOX (grab_vbox), grab_desk_eventbox, FALSE, FALSE, 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_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_box_pack_start (GTK_BOX (grab_vbox), grab_video_eventbox, FALSE, FALSE, 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_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_box_pack_start (GTK_BOX (grab_vbox), grab_image_eventbox, FALSE, FALSE, 0);
-  gtk_tooltips_set_tip (tooltips, grab_image_eventbox, _("Whether the image-manipulating modes should load image files."), 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_hbox = gtk_hbox_new (FALSE, 0);
-  gtk_widget_set_name (image_hbox, "image_hbox");
-  gtk_widget_ref (image_hbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "image_hbox", image_hbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (image_hbox);
-  gtk_box_pack_start (GTK_BOX (grab_vbox), image_hbox, FALSE, FALSE, 0);
-
-  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_box_pack_start (GTK_BOX (image_hbox), grab_dummy, FALSE, FALSE, 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_box_pack_start (GTK_BOX (image_hbox), image_text, TRUE, TRUE, 0);
-  gtk_tooltips_set_tip (tooltips, image_text, _("The local directory, RSS feed or Atom feed from which images will be randomly chosen."), NULL);
-
-  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_box_pack_start (GTK_BOX (image_hbox), image_browse_button, FALSE, FALSE, 4);
-
-  options_tab = gtk_label_new (_("Advanced"));
-  gtk_widget_set_name (options_tab, "options_tab");
-  gtk_widget_ref (options_tab);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_demo), "options_tab", options_tab,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (options_tab);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 1), options_tab);
-
-  gtk_signal_connect (GTK_OBJECT (activate_menu), "activate",
-                      GTK_SIGNAL_FUNC (activate_menu_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (lock_menu), "activate",
-                      GTK_SIGNAL_FUNC (lock_menu_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (kill_menu), "activate",
-                      GTK_SIGNAL_FUNC (kill_menu_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (restart), "activate",
-                      GTK_SIGNAL_FUNC (restart_menu_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (exit_menu), "activate",
-                      GTK_SIGNAL_FUNC (exit_menu_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (about_menu), "activate",
-                      GTK_SIGNAL_FUNC (about_menu_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (doc_menu), "activate",
-                      GTK_SIGNAL_FUNC (doc_menu_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (notebook), "switch_page",
-                      GTK_SIGNAL_FUNC (switch_page_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (lock_button), "toggled",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (timeout_spinbutton), "activate",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (timeout_spinbutton), "focus_out_event",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (timeout_spinbutton), "changed",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (lock_spinbutton), "activate",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (lock_spinbutton), "focus_out_event",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (lock_spinbutton), "changed",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (cycle_spinbutton), "activate",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (cycle_spinbutton), "focus_out_event",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (cycle_spinbutton), "changed",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (demo), "clicked",
-                      GTK_SIGNAL_FUNC (run_this_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (settings), "clicked",
-                      GTK_SIGNAL_FUNC (settings_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (next), "clicked",
-                      GTK_SIGNAL_FUNC (run_next_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (prev), "clicked",
-                      GTK_SIGNAL_FUNC (run_prev_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (verbose_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 (splash_button), "toggled",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (install_button), "toggled",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (fade_button), "toggled",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (unfade_button), "toggled",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (fade_spinbutton), "activate",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (fade_spinbutton), "focus_out_event",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (fade_spinbutton), "changed",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (dpms_button), "toggled",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (dpms_standby_spinbutton), "activate",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (dpms_standby_spinbutton), "focus_out_event",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (dpms_standby_spinbutton), "changed",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (dpms_suspend_spinbutton), "activate",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (dpms_suspend_spinbutton), "focus_out_event",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (dpms_suspend_spinbutton), "changed",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (dpms_off_spinbutton), "activate",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (dpms_off_spinbutton), "focus_out_event",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (dpms_off_spinbutton), "changed",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (grab_desk_button), "toggled",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (grab_video_button), "toggled",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (grab_image_button), "toggled",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (image_text), "activate",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (image_text), "focus_out_event",
-                      GTK_SIGNAL_FUNC (pref_changed_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (image_browse_button), "clicked",
-                      GTK_SIGNAL_FUNC (browse_image_dir_cb),
-                      NULL);
-
-  gtk_widget_grab_default (next);
-  gtk_object_set_data (GTK_OBJECT (xscreensaver_demo), "tooltips", tooltips);
-
-  gtk_window_add_accel_group (GTK_WINDOW (xscreensaver_demo), accel_group);
-
-  return xscreensaver_demo;
-}
-
-GtkWidget*
-create_xscreensaver_settings_dialog (void)
-{
-  GtkWidget *xscreensaver_settings_dialog;
-  GtkWidget *dialog_vbox;
-  GtkWidget *dialog_top_table;
-  GtkWidget *opt_frame;
-  GtkWidget *opt_notebook;
-  GtkWidget *settings_vbox;
-  GtkWidget *std_label;
-  GtkWidget *opt_table;
-  GtkWidget *cmd_logo;
-  GtkWidget *visual_hbox;
-  GtkWidget *visual;
-  GtkWidget *visual_combo;
-  GList *visual_combo_items = NULL;
-  GtkWidget *combo_entry1;
-  GtkWidget *cmd_label;
-  GtkWidget *cmd_text;
-  GtkWidget *adv_label;
-  GtkWidget *doc_frame;
-  GtkWidget *doc_vbox;
-  GtkWidget *doc;
-  GtkWidget *doc_hbuttonbox;
-  GtkWidget *manual;
-  GtkWidget *dialog_action_area;
-  GtkWidget *actionarea_hbox;
-  GtkWidget *dialog_hbuttonbox;
-  GtkWidget *adv_button;
-  GtkWidget *std_button;
-  GtkWidget *reset_button;
-  GtkWidget *ok_cancel_hbuttonbox;
-  GtkWidget *ok_button;
-  GtkWidget *cancel_button;
-  GtkTooltips *tooltips;
-
-  tooltips = gtk_tooltips_new ();
-
-  xscreensaver_settings_dialog = gtk_dialog_new ();
-  gtk_widget_set_name (xscreensaver_settings_dialog, "xscreensaver_settings_dialog");
-  gtk_object_set_data (GTK_OBJECT (xscreensaver_settings_dialog), "xscreensaver_settings_dialog", xscreensaver_settings_dialog);
-  gtk_window_set_title (GTK_WINDOW (xscreensaver_settings_dialog), _("XScreenSaver: Mode-Specific Settings"));
-  GTK_WINDOW (xscreensaver_settings_dialog)->type = GTK_WINDOW_DIALOG;
-  gtk_window_set_modal (GTK_WINDOW (xscreensaver_settings_dialog), TRUE);
-  gtk_window_set_policy (GTK_WINDOW (xscreensaver_settings_dialog), TRUE, TRUE, FALSE);
-  gtk_window_set_wmclass (GTK_WINDOW (xscreensaver_settings_dialog), "settings", "XScreenSaver");
-
-  dialog_vbox = GTK_DIALOG (xscreensaver_settings_dialog)->vbox;
-  gtk_widget_set_name (dialog_vbox, "dialog_vbox");
-  gtk_object_set_data (GTK_OBJECT (xscreensaver_settings_dialog), "dialog_vbox", dialog_vbox);
-  gtk_widget_show (dialog_vbox);
-
-  dialog_top_table = gtk_table_new (1, 2, FALSE);
-  gtk_widget_set_name (dialog_top_table, "dialog_top_table");
-  gtk_widget_ref (dialog_top_table);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "dialog_top_table", dialog_top_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dialog_top_table);
-  gtk_box_pack_start (GTK_BOX (dialog_vbox), dialog_top_table, TRUE, TRUE, 0);
-  gtk_container_set_border_width (GTK_CONTAINER (dialog_top_table), 8);
-  gtk_table_set_row_spacings (GTK_TABLE (dialog_top_table), 8);
-  gtk_table_set_col_spacings (GTK_TABLE (dialog_top_table), 8);
-
-  opt_frame = gtk_frame_new (_("Settings"));
-  gtk_widget_set_name (opt_frame, "opt_frame");
-  gtk_widget_ref (opt_frame);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "opt_frame", opt_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (opt_frame);
-  gtk_table_attach (GTK_TABLE (dialog_top_table), opt_frame, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 4, 8);
-
-  opt_notebook = gtk_notebook_new ();
-  gtk_widget_set_name (opt_notebook, "opt_notebook");
-  gtk_widget_ref (opt_notebook);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "opt_notebook", opt_notebook,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (opt_notebook);
-  gtk_container_add (GTK_CONTAINER (opt_frame), opt_notebook);
-  gtk_container_set_border_width (GTK_CONTAINER (opt_notebook), 12);
-  gtk_notebook_set_show_border (GTK_NOTEBOOK (opt_notebook), FALSE);
-  gtk_notebook_set_tab_pos (GTK_NOTEBOOK (opt_notebook), GTK_POS_BOTTOM);
-
-  settings_vbox = gtk_vbox_new (FALSE, 0);
-  gtk_widget_set_name (settings_vbox, "settings_vbox");
-  gtk_widget_ref (settings_vbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "settings_vbox", settings_vbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (settings_vbox);
-  gtk_container_add (GTK_CONTAINER (opt_notebook), settings_vbox);
-
-  std_label = gtk_label_new (_("Standard"));
-  gtk_widget_set_name (std_label, "std_label");
-  gtk_widget_ref (std_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "std_label", std_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (std_label);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (opt_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (opt_notebook), 0), std_label);
-
-  opt_table = gtk_table_new (4, 2, FALSE);
-  gtk_widget_set_name (opt_table, "opt_table");
-  gtk_widget_ref (opt_table);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "opt_table", opt_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (opt_table);
-  gtk_container_add (GTK_CONTAINER (opt_notebook), opt_table);
-
-  cmd_logo = create_pixmap (xscreensaver_settings_dialog, "screensaver-cmndln.png");
-  gtk_widget_set_name (cmd_logo, "cmd_logo");
-  gtk_widget_ref (cmd_logo);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "cmd_logo", cmd_logo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (cmd_logo);
-  gtk_table_attach (GTK_TABLE (opt_table), cmd_logo, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
-  gtk_misc_set_padding (GTK_MISC (cmd_logo), 4, 8);
-
-  visual_hbox = gtk_hbox_new (FALSE, 0);
-  gtk_widget_set_name (visual_hbox, "visual_hbox");
-  gtk_widget_ref (visual_hbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "visual_hbox", visual_hbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (visual_hbox);
-  gtk_table_attach (GTK_TABLE (opt_table), visual_hbox, 1, 2, 3, 4,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
-
-  visual = gtk_label_new (_("Visual:"));
-  gtk_widget_set_name (visual, "visual");
-  gtk_widget_ref (visual);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "visual", visual,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (visual);
-  gtk_box_pack_start (GTK_BOX (visual_hbox), visual, FALSE, FALSE, 0);
-  gtk_label_set_justify (GTK_LABEL (visual), GTK_JUSTIFY_RIGHT);
-  gtk_misc_set_alignment (GTK_MISC (visual), 1, 0.5);
-  gtk_misc_set_padding (GTK_MISC (visual), 4, 0);
-
-  visual_combo = gtk_combo_new ();
-  gtk_widget_set_name (visual_combo, "visual_combo");
-  gtk_widget_ref (visual_combo);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "visual_combo", visual_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (visual_combo);
-  gtk_box_pack_start (GTK_BOX (visual_hbox), visual_combo, FALSE, FALSE, 0);
-  visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Any"));
-  visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Best"));
-  visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Default"));
-  visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Default-N"));
-  visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("GL"));
-  visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("TrueColor"));
-  visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("PseudoColor"));
-  visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("StaticGray"));
-  visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("GrayScale"));
-  visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("DirectColor"));
-  visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Color"));
-  visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Gray"));
-  visual_combo_items = g_list_append (visual_combo_items, (gpointer) _("Mono"));
-  gtk_combo_set_popdown_strings (GTK_COMBO (visual_combo), visual_combo_items);
-  g_list_free (visual_combo_items);
-
-  combo_entry1 = GTK_COMBO (visual_combo)->entry;
-  gtk_widget_set_name (combo_entry1, "combo_entry1");
-  gtk_widget_ref (combo_entry1);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "combo_entry1", combo_entry1,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (combo_entry1);
-  gtk_tooltips_set_tip (tooltips, combo_entry1, _("The X visual type that this demo will require.  If that visual is available it will be used, otherwise, this demo will not be run."), NULL);
-  gtk_entry_set_text (GTK_ENTRY (combo_entry1), _("Any"));
-
-  cmd_label = gtk_label_new (_("Command Line:"));
-  gtk_widget_set_name (cmd_label, "cmd_label");
-  gtk_widget_ref (cmd_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "cmd_label", cmd_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (cmd_label);
-  gtk_table_attach (GTK_TABLE (opt_table), cmd_label, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_label_set_justify (GTK_LABEL (cmd_label), GTK_JUSTIFY_LEFT);
-  gtk_misc_set_alignment (GTK_MISC (cmd_label), 0, 1);
-  gtk_misc_set_padding (GTK_MISC (cmd_label), 0, 2);
-
-  cmd_text = gtk_entry_new ();
-  gtk_widget_set_name (cmd_text, "cmd_text");
-  gtk_widget_ref (cmd_text);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "cmd_text", cmd_text,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (cmd_text);
-  gtk_table_attach (GTK_TABLE (opt_table), cmd_text, 1, 2, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_widget_set_usize (cmd_text, 80, -2);
-
-  adv_label = gtk_label_new (_("Advanced"));
-  gtk_widget_set_name (adv_label, "adv_label");
-  gtk_widget_ref (adv_label);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "adv_label", adv_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (adv_label);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (opt_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (opt_notebook), 1), adv_label);
-
-  doc_frame = gtk_frame_new (_("Description"));
-  gtk_widget_set_name (doc_frame, "doc_frame");
-  gtk_widget_ref (doc_frame);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "doc_frame", doc_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (doc_frame);
-  gtk_table_attach (GTK_TABLE (dialog_top_table), doc_frame, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), 4, 8);
-
-  doc_vbox = gtk_vbox_new (FALSE, 0);
-  gtk_widget_set_name (doc_vbox, "doc_vbox");
-  gtk_widget_ref (doc_vbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "doc_vbox", doc_vbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (doc_vbox);
-  gtk_container_add (GTK_CONTAINER (doc_frame), doc_vbox);
-
-  doc = gtk_label_new ("");
-  gtk_widget_set_name (doc, "doc");
-  gtk_widget_ref (doc);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "doc", doc,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (doc);
-  gtk_box_pack_start (GTK_BOX (doc_vbox), doc, TRUE, TRUE, 0);
-  gtk_label_set_justify (GTK_LABEL (doc), GTK_JUSTIFY_LEFT);
-  gtk_label_set_line_wrap (GTK_LABEL (doc), TRUE);
-  gtk_misc_set_alignment (GTK_MISC (doc), 0, 0);
-  gtk_misc_set_padding (GTK_MISC (doc), 10, 10);
-
-  doc_hbuttonbox = gtk_hbutton_box_new ();
-  gtk_widget_set_name (doc_hbuttonbox, "doc_hbuttonbox");
-  gtk_widget_ref (doc_hbuttonbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "doc_hbuttonbox", doc_hbuttonbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (doc_hbuttonbox);
-  gtk_box_pack_end (GTK_BOX (doc_vbox), doc_hbuttonbox, FALSE, FALSE, 0);
-  gtk_container_set_border_width (GTK_CONTAINER (doc_hbuttonbox), 4);
-  gtk_button_box_set_layout (GTK_BUTTON_BOX (doc_hbuttonbox), GTK_BUTTONBOX_END);
-
-  manual = gtk_button_new_with_label (_("Documentation..."));
-  gtk_widget_set_name (manual, "manual");
-  gtk_widget_ref (manual);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "manual", manual,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (manual);
-  gtk_container_add (GTK_CONTAINER (doc_hbuttonbox), manual);
-  STFU GTK_WIDGET_SET_FLAGS (manual, GTK_CAN_DEFAULT);
-  gtk_tooltips_set_tip (tooltips, manual, _("Click here to read the manual for this display mode, if it has one."), NULL);
-
-  dialog_action_area = GTK_DIALOG (xscreensaver_settings_dialog)->action_area;
-  gtk_widget_set_name (dialog_action_area, "dialog_action_area");
-  gtk_object_set_data (GTK_OBJECT (xscreensaver_settings_dialog), "dialog_action_area", dialog_action_area);
-  gtk_widget_show (dialog_action_area);
-  gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area), 10);
-
-  actionarea_hbox = gtk_hbox_new (FALSE, 0);
-  gtk_widget_set_name (actionarea_hbox, "actionarea_hbox");
-  gtk_widget_ref (actionarea_hbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "actionarea_hbox", actionarea_hbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (actionarea_hbox);
-  gtk_box_pack_start (GTK_BOX (dialog_action_area), actionarea_hbox, TRUE, TRUE, 0);
-
-  dialog_hbuttonbox = gtk_hbutton_box_new ();
-  gtk_widget_set_name (dialog_hbuttonbox, "dialog_hbuttonbox");
-  gtk_widget_ref (dialog_hbuttonbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "dialog_hbuttonbox", dialog_hbuttonbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (dialog_hbuttonbox);
-  gtk_box_pack_start (GTK_BOX (actionarea_hbox), dialog_hbuttonbox, TRUE, TRUE, 0);
-  gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_hbuttonbox), GTK_BUTTONBOX_SPREAD);
-
-  adv_button = gtk_button_new_with_label (_("Advanced >>"));
-  gtk_widget_set_name (adv_button, "adv_button");
-  gtk_widget_ref (adv_button);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "adv_button", adv_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (adv_button);
-  gtk_container_add (GTK_CONTAINER (dialog_hbuttonbox), adv_button);
-  STFU GTK_WIDGET_SET_FLAGS (adv_button, GTK_CAN_DEFAULT);
-  gtk_tooltips_set_tip (tooltips, adv_button, _("Edit the command line directly."), NULL);
-
-  std_button = gtk_button_new_with_label (_("Standard <<"));
-  gtk_widget_set_name (std_button, "std_button");
-  gtk_widget_ref (std_button);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "std_button", std_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (std_button);
-  gtk_container_add (GTK_CONTAINER (dialog_hbuttonbox), std_button);
-  STFU GTK_WIDGET_SET_FLAGS (std_button, GTK_CAN_DEFAULT);
-  gtk_tooltips_set_tip (tooltips, std_button, _("Back to the graphical configuration options."), NULL);
-
-  reset_button = gtk_button_new_with_label (_("Reset to Defaults"));
-  gtk_widget_set_name (reset_button, "reset_button");
-  gtk_widget_ref (reset_button);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "reset_button", reset_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (reset_button);
-  gtk_container_add (GTK_CONTAINER (dialog_hbuttonbox), reset_button);
-  STFU GTK_WIDGET_SET_FLAGS (reset_button, GTK_CAN_DEFAULT);
-  gtk_tooltips_set_tip (tooltips, reset_button, _("Reset this screen saver to the default settings."), NULL);
-
-  ok_cancel_hbuttonbox = gtk_hbutton_box_new ();
-  gtk_widget_set_name (ok_cancel_hbuttonbox, "ok_cancel_hbuttonbox");
-  gtk_widget_ref (ok_cancel_hbuttonbox);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "ok_cancel_hbuttonbox", ok_cancel_hbuttonbox,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (ok_cancel_hbuttonbox);
-  gtk_box_pack_start (GTK_BOX (actionarea_hbox), ok_cancel_hbuttonbox, TRUE, TRUE, 0);
-  gtk_button_box_set_layout (GTK_BUTTON_BOX (ok_cancel_hbuttonbox), GTK_BUTTONBOX_END);
-
-  ok_button = gtk_button_new_with_label (_("OK"));
-  gtk_widget_set_name (ok_button, "ok_button");
-  gtk_widget_ref (ok_button);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "ok_button", ok_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (ok_button);
-  gtk_container_add (GTK_CONTAINER (ok_cancel_hbuttonbox), ok_button);
-  STFU GTK_WIDGET_SET_FLAGS (ok_button, GTK_CAN_DEFAULT);
-
-  cancel_button = gtk_button_new_with_label (_("Cancel"));
-  gtk_widget_set_name (cancel_button, "cancel_button");
-  gtk_widget_ref (cancel_button);
-  gtk_object_set_data_full (GTK_OBJECT (xscreensaver_settings_dialog), "cancel_button", cancel_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (cancel_button);
-  gtk_container_add (GTK_CONTAINER (ok_cancel_hbuttonbox), cancel_button);
-  STFU GTK_WIDGET_SET_FLAGS (cancel_button, GTK_CAN_DEFAULT);
-
-  gtk_signal_connect (GTK_OBJECT (opt_notebook), "switch_page",
-                      GTK_SIGNAL_FUNC (settings_switch_page_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (manual), "clicked",
-                      GTK_SIGNAL_FUNC (manual_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (adv_button), "clicked",
-                      GTK_SIGNAL_FUNC (settings_adv_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (std_button), "clicked",
-                      GTK_SIGNAL_FUNC (settings_std_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (reset_button), "clicked",
-                      GTK_SIGNAL_FUNC (settings_reset_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (ok_button), "clicked",
-                      GTK_SIGNAL_FUNC (settings_ok_cb),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (cancel_button), "clicked",
-                      GTK_SIGNAL_FUNC (settings_cancel_cb),
-                      NULL);
-
-  gtk_object_set_data (GTK_OBJECT (xscreensaver_settings_dialog), "tooltips", tooltips);
-
-  return xscreensaver_settings_dialog;
-}
-
diff --git a/driver/demo-Gtk-widgets.h b/driver/demo-Gtk-widgets.h
deleted file mode 100644 (file)
index 298c517..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-/*
- * DO NOT EDIT THIS FILE - it is generated by Glade.
- */
-
-GtkWidget* create_xscreensaver_demo (void);
-GtkWidget* create_xscreensaver_settings_dialog (void);
index c8a19cd391dfa01714b9b74939b510a825ae766d..d276ecc543a18648c5f3551edc9a381497457e16 100644 (file)
 #include "logo-50.xpm"
 #include "logo-180.xpm"
 
 #include "logo-50.xpm"
 #include "logo-180.xpm"
 
-#undef dgettext  /* else these are defined twice... */
-#undef dcgettext
-
-#include "demo-Gtk-widgets.h"
-#include "demo-Gtk-support.h"
 #include "demo-Gtk-conf.h"
 
 #include <stdio.h>
 #include "demo-Gtk-conf.h"
 
 #include <stdio.h>
@@ -4721,7 +4716,7 @@ delayed_scroll_kludge (gpointer data)
 
 #ifdef HAVE_GTK2
 
 
 #ifdef HAVE_GTK2
 
-GtkWidget *
+static GtkWidget *
 create_xscreensaver_demo (void)
 {
   GtkWidget *nb;
 create_xscreensaver_demo (void)
 {
   GtkWidget *nb;
@@ -4732,7 +4727,7 @@ create_xscreensaver_demo (void)
   return name_to_widget (global_state_kludge, "xscreensaver_demo");
 }
 
   return name_to_widget (global_state_kludge, "xscreensaver_demo");
 }
 
-GtkWidget *
+static GtkWidget *
 create_xscreensaver_settings_dialog (void)
 {
   GtkWidget *w, *box;
 create_xscreensaver_settings_dialog (void)
 {
   GtkWidget *w, *box;
index 6f38bfdfd361981d7ae0e0d0f94f2c8f5d4d6b77..55d386a3b3c4cc82f73295d981412b8207fb527e 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1991-2013 Jamie Zawinski <jwz@netscape.com>
+/* xscreensaver, Copyright (c) 1991-2014 Jamie Zawinski <jwz@netscape.com>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -778,9 +778,10 @@ void
 handle_splash_event (saver_info *si, XEvent *event)
 {
   splash_dialog_data *sp = si->sp_data;
 handle_splash_event (saver_info *si, XEvent *event)
 {
   splash_dialog_data *sp = si->sp_data;
-  if (!sp) return;
-  saver_screen_info *ssi = sp->prompt_screen;
+  saver_screen_info *ssi;
   int which = 0;
   int which = 0;
+  if (!sp) return;
+  ssi = sp->prompt_screen;
 
   switch (event->xany.type)
     {
 
   switch (event->xany.type)
     {
index 65b0079abd86941009eb0cc74662ecaa441838cd..19697241d947073be525043fb592cd77adbfb613 100644 (file)
@@ -1101,8 +1101,9 @@ hack_environment (saver_info *si)
   if (def_path && *def_path)
     {
       const char *opath = getenv("PATH");
   if (def_path && *def_path)
     {
       const char *opath = getenv("PATH");
+      char *npath;
       if (! opath) opath = "/bin:/usr/bin";  /* WTF */
       if (! opath) opath = "/bin:/usr/bin";  /* WTF */
-      char *npath = (char *) malloc(strlen(def_path) + strlen(opath) + 20);
+      npath = (char *) malloc(strlen(def_path) + strlen(opath) + 20);
       strcpy (npath, "PATH=");
       strcat (npath, def_path);
       strcat (npath, ":");
       strcpy (npath, "PATH=");
       strcat (npath, def_path);
       strcat (npath, ":");
index 66cd3d4e0d9d4f64b6cd3f172e0082fde7bd4a86..b9b6c328a7594244c30ebcc754c28dffa20064b5 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1998-2013 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1998-2014 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
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -48,6 +48,7 @@ void initialize_screensaver_window (saver_info *si) {}
 void raise_window (saver_info *si, Bool i, Bool b, Bool d) {}
 Bool blank_screen (saver_info *si) {return False;}
 void unblank_screen (saver_info *si) {}
 void raise_window (saver_info *si, Bool i, Bool b, Bool d) {}
 Bool blank_screen (saver_info *si) {return False;}
 void unblank_screen (saver_info *si) {}
+void reset_watchdog_timer(saver_info *si, Bool on_p) {}
 Bool select_visual (saver_screen_info *ssi, const char *v) { return False; }
 Bool window_exists_p (Display *dpy, Window window) {return True;}
 void start_notice_events_timer (saver_info *si, Window w, Bool b) {}
 Bool select_visual (saver_screen_info *ssi, const char *v) { return False; }
 Bool window_exists_p (Display *dpy, Window window) {return True;}
 void start_notice_events_timer (saver_info *si, Window w, Bool b) {}
@@ -80,7 +81,6 @@ idle_timer (XtPointer closure, XtIntervalId *id)
   XPutBackEvent (si->dpy, &fake_event);
 }
 
   XPutBackEvent (si->dpy, &fake_event);
 }
 
-
 static int
 text_auth_conv (
   int num_msg,
 static int
 text_auth_conv (
   int num_msg,
index 598a913569fc47bc6ebfc9b56492f9199b65d0ca..f22504e95e80e0f0042151c27a5aab6d027fe71f 100644 (file)
@@ -381,7 +381,9 @@ read_file_gdk (Screen *screen, Window window, Drawable drawable,
 
   gdk_pixbuf_xlib_init_with_depth (dpy, screen_number (screen), win_depth);
 # ifdef HAVE_GTK2
 
   gdk_pixbuf_xlib_init_with_depth (dpy, screen_number (screen), win_depth);
 # ifdef HAVE_GTK2
+# if !GLIB_CHECK_VERSION(2, 36 ,0)
   g_type_init();
   g_type_init();
+# endif
 # else  /* !HAVE_GTK2 */
   xlib_rgb_init (dpy, screen);
 # endif /* !HAVE_GTK2 */
 # else  /* !HAVE_GTK2 */
   xlib_rgb_init (dpy, screen);
 # endif /* !HAVE_GTK2 */
index 5956de1f47e1ae42b15db988659ca6c78ce10d8e..f0c272f5dad66343dc62f6795041dabbd1d5960b 100644 (file)
@@ -1,4 +1,4 @@
-# hacks/Makefile.in --- xscreensaver, Copyright (c) 1997-2011 Jamie Zawinski.
+# hacks/Makefile.in --- xscreensaver, Copyright (c) 1997-2014 Jamie Zawinski.
 # the `../configure' script generates `hacks/Makefile' from this file.
 
 @SET_MAKE@
 # the `../configure' script generates `hacks/Makefile' from this file.
 
 @SET_MAKE@
@@ -31,6 +31,9 @@ DEFS          = -DSTANDALONE @DEFS@
 LIBS           = @LIBS@
 PERL           = @PERL@
 
 LIBS           = @LIBS@
 PERL           = @PERL@
 
+THREAD_LIBS    = @PTHREAD_LIBS@
+THREAD_CFLAGS  = @PTHREAD_CFLAGS@
+
 DEPEND         = @DEPEND@
 DEPEND_FLAGS   = @DEPEND_FLAGS@
 DEPEND_DEFINES = @DEPEND_DEFINES@
 DEPEND         = @DEPEND@
 DEPEND_FLAGS   = @DEPEND_FLAGS@
 DEPEND_DEFINES = @DEPEND_DEFINES@
@@ -546,8 +549,9 @@ COL         = $(COLOR_OBJS)
 SHM            = $(XSHM_OBJS)
 DBE            = $(XDBE_OBJS)
 BARS           = $(UTILS_BIN)/colorbars.o $(LOGO)
 SHM            = $(XSHM_OBJS)
 DBE            = $(XDBE_OBJS)
 BARS           = $(UTILS_BIN)/colorbars.o $(LOGO)
-THRD           = $(THREAD_OBJS)
-ATV            = analogtv.o $(SHM) $(THRD)
+THRO           = $(THREAD_OBJS)
+THRL           = $(THREAD_CFLAGS) $(THREAD_LIBS)
+ATV            = analogtv.o $(SHM) $(THRO)
 APPLE2          = apple2.o $(ATV)
 TEXT            = $(UTILS_BIN)/textclient.o
 
 APPLE2          = apple2.o $(ATV)
 TEXT            = $(UTILS_BIN)/textclient.o
 
@@ -660,8 +664,8 @@ cynosure:   cynosure.o      $(HACK_OBJS) $(COL)
 epicycle:      epicycle.o      $(HACK_OBJS) $(COL) $(ERASE)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS)
 
 epicycle:      epicycle.o      $(HACK_OBJS) $(COL) $(ERASE)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS)
 
-interference:  interference.o  $(HACK_OBJS) $(COL) $(SHM) $(DBE) $(THRD)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SHM) $(DBE) $(THRD) $(HACK_LIBS)
+interference:  interference.o  $(HACK_OBJS) $(COL) $(SHM) $(DBE) $(THRO)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(SHM) $(DBE) $(THRO) $(HACK_LIBS) $(THRL)
 
 truchet:        truchet.o      $(HACK_OBJS) $(COL)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
 
 truchet:        truchet.o      $(HACK_OBJS) $(COL)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
@@ -670,10 +674,10 @@ bsod:             bsod.o          $(HACK_OBJS) $(GRAB) $(APPLE2) $(XPM)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(APPLE2) $(XPM) $(XPM_LIBS)
 
 apple2:                apple2.o apple2-main.o  $(HACK_OBJS) $(ATV) $(GRAB) $(TEXT)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(APPLE2) $(XPM) $(XPM_LIBS)
 
 apple2:                apple2.o apple2-main.o  $(HACK_OBJS) $(ATV) $(GRAB) $(TEXT)
-       $(CC_HACK) -o $@ $@.o   apple2-main.o $(HACK_OBJS) $(ATV) $(GRAB) $(TEXT) $(XPM_LIBS) $(TEXT_LIBS)
+       $(CC_HACK) -o $@ $@.o   apple2-main.o $(HACK_OBJS) $(ATV) $(GRAB) $(TEXT) $(XPM_LIBS) $(TEXT_LIBS) $(THRL)
 
 xanalogtv:     xanalogtv.o     $(HACK_OBJS) $(ATV) $(GRAB) $(XPM)
 
 xanalogtv:     xanalogtv.o     $(HACK_OBJS) $(ATV) $(GRAB) $(XPM)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(ATV) $(GRAB) $(XPM) $(XPM_LIBS) $(HACK_LIBS)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(ATV) $(GRAB) $(XPM) $(XPM_LIBS) $(HACK_LIBS) $(THRL)
 
 distort:       distort.o       $(HACK_OBJS) $(GRAB) $(SHM)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS)
 
 distort:       distort.o       $(HACK_OBJS) $(GRAB) $(SHM)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS)
@@ -796,7 +800,7 @@ fontglide:  fontglide.o     $(HACK_OBJS) $(DBE) $(TEXT)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(TEXT) $(HACK_LIBS) $(TEXT_LIBS)
 
 pong:  pong.o  $(HACK_OBJS) $(ATV) $(GRAB) $(XPM)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(TEXT) $(HACK_LIBS) $(TEXT_LIBS)
 
 pong:  pong.o  $(HACK_OBJS) $(ATV) $(GRAB) $(XPM)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(ATV) $(GRAB) $(XPM) $(XPM_LIBS) $(HACK_LIBS)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(ATV) $(GRAB) $(XPM) $(XPM_LIBS) $(HACK_LIBS) $(THRL)
 
 wormhole:      wormhole.o      $(HACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
 
 wormhole:      wormhole.o      $(HACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
@@ -841,7 +845,7 @@ m6502.h:
 
 m6502.o:       m6502.h
 m6502:         m6502.o         asm6502.o $(HACK_OBJS) $(ATV)
 
 m6502.o:       m6502.h
 m6502:         m6502.o         asm6502.o $(HACK_OBJS) $(ATV)
-       $(CC_HACK) -o $@ $@.o   asm6502.o $(HACK_OBJS) $(ATV) $(HACK_LIBS)
+       $(CC_HACK) -o $@ $@.o   asm6502.o $(HACK_OBJS) $(ATV) $(HACK_LIBS) $(THRL)
 
 abstractile:   abstractile.o   $(HACK_OBJS) $(COL)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
 
 abstractile:   abstractile.o   $(HACK_OBJS) $(COL)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(COL) $(HACK_LIBS)
@@ -1021,7 +1025,6 @@ anemone.o: $(UTILS_SRC)/hsv.h
 anemone.o: $(UTILS_SRC)/resources.h
 anemone.o: $(UTILS_SRC)/usleep.h
 anemone.o: $(UTILS_SRC)/visual.h
 anemone.o: $(UTILS_SRC)/resources.h
 anemone.o: $(UTILS_SRC)/usleep.h
 anemone.o: $(UTILS_SRC)/visual.h
-anemone.o: $(UTILS_SRC)/xdbe.h
 anemone.o: $(UTILS_SRC)/yarandom.h
 anemotaxis.o: ../config.h
 anemotaxis.o: $(srcdir)/fps.h
 anemone.o: $(UTILS_SRC)/yarandom.h
 anemotaxis.o: ../config.h
 anemotaxis.o: $(srcdir)/fps.h
@@ -1033,7 +1036,6 @@ anemotaxis.o: $(UTILS_SRC)/hsv.h
 anemotaxis.o: $(UTILS_SRC)/resources.h
 anemotaxis.o: $(UTILS_SRC)/usleep.h
 anemotaxis.o: $(UTILS_SRC)/visual.h
 anemotaxis.o: $(UTILS_SRC)/resources.h
 anemotaxis.o: $(UTILS_SRC)/usleep.h
 anemotaxis.o: $(UTILS_SRC)/visual.h
-anemotaxis.o: $(UTILS_SRC)/xdbe.h
 anemotaxis.o: $(UTILS_SRC)/yarandom.h
 ant.o: $(srcdir)/automata.h
 ant.o: ../config.h
 anemotaxis.o: $(UTILS_SRC)/yarandom.h
 ant.o: $(srcdir)/automata.h
 ant.o: ../config.h
@@ -1327,7 +1329,6 @@ compass.o: $(UTILS_SRC)/hsv.h
 compass.o: $(UTILS_SRC)/resources.h
 compass.o: $(UTILS_SRC)/usleep.h
 compass.o: $(UTILS_SRC)/visual.h
 compass.o: $(UTILS_SRC)/resources.h
 compass.o: $(UTILS_SRC)/usleep.h
 compass.o: $(UTILS_SRC)/visual.h
-compass.o: $(UTILS_SRC)/xdbe.h
 compass.o: $(UTILS_SRC)/yarandom.h
 coral.o: ../config.h
 coral.o: $(srcdir)/fps.h
 compass.o: $(UTILS_SRC)/yarandom.h
 coral.o: ../config.h
 coral.o: $(srcdir)/fps.h
@@ -1424,7 +1425,6 @@ deluxe.o: $(UTILS_SRC)/hsv.h
 deluxe.o: $(UTILS_SRC)/resources.h
 deluxe.o: $(UTILS_SRC)/usleep.h
 deluxe.o: $(UTILS_SRC)/visual.h
 deluxe.o: $(UTILS_SRC)/resources.h
 deluxe.o: $(UTILS_SRC)/usleep.h
 deluxe.o: $(UTILS_SRC)/visual.h
-deluxe.o: $(UTILS_SRC)/xdbe.h
 deluxe.o: $(UTILS_SRC)/yarandom.h
 demon.o: $(srcdir)/automata.h
 demon.o: ../config.h
 deluxe.o: $(UTILS_SRC)/yarandom.h
 demon.o: $(srcdir)/automata.h
 demon.o: ../config.h
@@ -1601,7 +1601,6 @@ fluidballs.o: $(UTILS_SRC)/hsv.h
 fluidballs.o: $(UTILS_SRC)/resources.h
 fluidballs.o: $(UTILS_SRC)/usleep.h
 fluidballs.o: $(UTILS_SRC)/visual.h
 fluidballs.o: $(UTILS_SRC)/resources.h
 fluidballs.o: $(UTILS_SRC)/usleep.h
 fluidballs.o: $(UTILS_SRC)/visual.h
-fluidballs.o: $(UTILS_SRC)/xdbe.h
 fluidballs.o: $(UTILS_SRC)/yarandom.h
 fontglide.o: ../config.h
 fontglide.o: $(srcdir)/fps.h
 fluidballs.o: $(UTILS_SRC)/yarandom.h
 fontglide.o: ../config.h
 fontglide.o: $(srcdir)/fps.h
@@ -1614,7 +1613,6 @@ fontglide.o: $(UTILS_SRC)/resources.h
 fontglide.o: $(UTILS_SRC)/textclient.h
 fontglide.o: $(UTILS_SRC)/usleep.h
 fontglide.o: $(UTILS_SRC)/visual.h
 fontglide.o: $(UTILS_SRC)/textclient.h
 fontglide.o: $(UTILS_SRC)/usleep.h
 fontglide.o: $(UTILS_SRC)/visual.h
-fontglide.o: $(UTILS_SRC)/xdbe.h
 fontglide.o: $(UTILS_SRC)/yarandom.h
 forest.o: ../config.h
 forest.o: $(srcdir)/fps.h
 fontglide.o: $(UTILS_SRC)/yarandom.h
 forest.o: ../config.h
 forest.o: $(srcdir)/fps.h
@@ -1827,7 +1825,6 @@ interference.o: $(UTILS_SRC)/resources.h
 interference.o: $(UTILS_SRC)/thread_util.h
 interference.o: $(UTILS_SRC)/usleep.h
 interference.o: $(UTILS_SRC)/visual.h
 interference.o: $(UTILS_SRC)/thread_util.h
 interference.o: $(UTILS_SRC)/usleep.h
 interference.o: $(UTILS_SRC)/visual.h
-interference.o: $(UTILS_SRC)/xdbe.h
 interference.o: $(UTILS_SRC)/xshm.h
 interference.o: $(UTILS_SRC)/yarandom.h
 intermomentary.o: ../config.h
 interference.o: $(UTILS_SRC)/xshm.h
 interference.o: $(UTILS_SRC)/yarandom.h
 intermomentary.o: ../config.h
@@ -1889,7 +1886,6 @@ kumppa.o: $(UTILS_SRC)/hsv.h
 kumppa.o: $(UTILS_SRC)/resources.h
 kumppa.o: $(UTILS_SRC)/usleep.h
 kumppa.o: $(UTILS_SRC)/visual.h
 kumppa.o: $(UTILS_SRC)/resources.h
 kumppa.o: $(UTILS_SRC)/usleep.h
 kumppa.o: $(UTILS_SRC)/visual.h
-kumppa.o: $(UTILS_SRC)/xdbe.h
 kumppa.o: $(UTILS_SRC)/yarandom.h
 laser.o: ../config.h
 laser.o: $(srcdir)/fps.h
 kumppa.o: $(UTILS_SRC)/yarandom.h
 laser.o: ../config.h
 laser.o: $(srcdir)/fps.h
@@ -2040,7 +2036,6 @@ moire2.o: $(UTILS_SRC)/hsv.h
 moire2.o: $(UTILS_SRC)/resources.h
 moire2.o: $(UTILS_SRC)/usleep.h
 moire2.o: $(UTILS_SRC)/visual.h
 moire2.o: $(UTILS_SRC)/resources.h
 moire2.o: $(UTILS_SRC)/usleep.h
 moire2.o: $(UTILS_SRC)/visual.h
-moire2.o: $(UTILS_SRC)/xdbe.h
 moire2.o: $(UTILS_SRC)/yarandom.h
 moire.o: ../config.h
 moire.o: $(srcdir)/fps.h
 moire2.o: $(UTILS_SRC)/yarandom.h
 moire.o: ../config.h
 moire.o: $(srcdir)/fps.h
@@ -2262,7 +2257,6 @@ piecewise.o: $(UTILS_SRC)/hsv.h
 piecewise.o: $(UTILS_SRC)/resources.h
 piecewise.o: $(UTILS_SRC)/usleep.h
 piecewise.o: $(UTILS_SRC)/visual.h
 piecewise.o: $(UTILS_SRC)/resources.h
 piecewise.o: $(UTILS_SRC)/usleep.h
 piecewise.o: $(UTILS_SRC)/visual.h
-piecewise.o: $(UTILS_SRC)/xdbe.h
 piecewise.o: $(UTILS_SRC)/yarandom.h
 polyominoes.o: ../config.h
 polyominoes.o: $(srcdir)/fps.h
 piecewise.o: $(UTILS_SRC)/yarandom.h
 polyominoes.o: ../config.h
 polyominoes.o: $(srcdir)/fps.h
@@ -2303,7 +2297,6 @@ popsquares.o: $(UTILS_SRC)/hsv.h
 popsquares.o: $(UTILS_SRC)/resources.h
 popsquares.o: $(UTILS_SRC)/usleep.h
 popsquares.o: $(UTILS_SRC)/visual.h
 popsquares.o: $(UTILS_SRC)/resources.h
 popsquares.o: $(UTILS_SRC)/usleep.h
 popsquares.o: $(UTILS_SRC)/visual.h
-popsquares.o: $(UTILS_SRC)/xdbe.h
 popsquares.o: $(UTILS_SRC)/yarandom.h
 pyro.o: ../config.h
 pyro.o: $(srcdir)/fps.h
 popsquares.o: $(UTILS_SRC)/yarandom.h
 pyro.o: ../config.h
 pyro.o: $(srcdir)/fps.h
@@ -2710,7 +2703,6 @@ whirlygig.o: $(UTILS_SRC)/hsv.h
 whirlygig.o: $(UTILS_SRC)/resources.h
 whirlygig.o: $(UTILS_SRC)/usleep.h
 whirlygig.o: $(UTILS_SRC)/visual.h
 whirlygig.o: $(UTILS_SRC)/resources.h
 whirlygig.o: $(UTILS_SRC)/usleep.h
 whirlygig.o: $(UTILS_SRC)/visual.h
-whirlygig.o: $(UTILS_SRC)/xdbe.h
 whirlygig.o: $(UTILS_SRC)/yarandom.h
 wormhole.o: ../config.h
 wormhole.o: $(srcdir)/fps.h
 whirlygig.o: $(UTILS_SRC)/yarandom.h
 wormhole.o: ../config.h
 wormhole.o: $(srcdir)/fps.h
index 3db2dc64fa2fab236e706febfc099d32e524d7d8..d0abe4d7c8f7cef3d84e315f17e7d2afca662eae 100644 (file)
@@ -4,8 +4,8 @@
             a screen saver and locker for the X window system
                             by Jamie Zawinski
 
             a screen saver and locker for the X window system
                             by Jamie Zawinski
 
-                              version 5.27
-                               27-May-2014
+                              version 5.29
+                               08-Jun-2014
 
                      http://www.jwz.org/xscreensaver/
 
 
                      http://www.jwz.org/xscreensaver/
 
index 594afc4bdc49da3db8eb4f199b384104021321b7..b2bc86187da4c417b53496901a0d021b79004bdc 100644 (file)
@@ -9,7 +9,7 @@
 
     <number id="delay" type="slider" arg="-delay %"
             _label="Frame rate" _low-label="Low" _high-label="High"
 
     <number id="delay" type="slider" arg="-delay %"
             _label="Frame rate" _low-label="Low" _high-label="High"
-            low="0" high="100000" default="20000"
+            low="0" high="100000" default="15000"
             convert="invert"/>
     <number id="speed" type="slider" arg="-speed %"
             _label="Speed" _low-label="Slow" _high-label="Fast"
             convert="invert"/>
     <number id="speed" type="slider" arg="-speed %"
             _label="Speed" _low-label="Slow" _high-label="Fast"
 
     <number id="balls" type="slider" arg="-balls %"
             _label="Number of balls" _low-label="Few" _high-label="Lots"
 
     <number id="balls" type="slider" arg="-balls %"
             _label="Number of balls" _low-label="Few" _high-label="Lots"
-            low="3" high="40" default="25"/>
+            low="3" high="40" default="20"/>
 
     <number id="ballsize" type="slider" arg="-ballsize %"
             _label="Ball size" _low-label="Tiny" _high-label="Huge"
 
     <number id="ballsize" type="slider" arg="-ballsize %"
             _label="Ball size" _low-label="Tiny" _high-label="Huge"
-            low="1.0" high="5.0" default="2.0"/>
+            low="1.0" high="5.0" default="3.0"/>
 
    </vgroup>
 
 
    </vgroup>
 
index 44f83a4b8cc23bb3cddc7ecd18be221158251c7c..70b9ff1b7d87f52cf0ce70c392106c9546366d98 100644 (file)
@@ -91,7 +91,7 @@
      <number id="walk-direction" type="slider" arg="-walk-direction %"
              _label="Walking direction"
              _low-label="-180.0" _high-label="180.0"
      <number id="walk-direction" type="slider" arg="-walk-direction %"
              _label="Walking direction"
              _low-label="-180.0" _high-label="180.0"
-             low="-180.0" high="180.0" default="7.0"/>
+             low="-180.0" high="180.0" default="83.0"/>
 
      <number id="walk-speed" type="slider" arg="-walk-speed %"
              _label="Walking speed"
 
      <number id="walk-speed" type="slider" arg="-walk-speed %"
              _label="Walking speed"
index e57e77bd7829c946b24f5238484290075d19dbd7..a5ea9aef72e5693220ccffa834de1f697112b6c5 100644 (file)
@@ -87,9 +87,9 @@ circumcircle (double xp,double yp,
   dy = yp - *yc;
   drsqr = dx*dx + dy*dy;
 
   dy = yp - *yc;
   drsqr = dx*dx + dy*dy;
 
-  // Original
-  //return((drsqr <= *rsqr) ? TRUE : FALSE);
-  // Proposed by Chuck Morris
+  /* Original
+     return((drsqr <= *rsqr) ? TRUE : FALSE);
+     Proposed by Chuck Morris */
   return((drsqr - *rsqr) <= EPSILON ? TRUE : FALSE);
 }
 
   return((drsqr - *rsqr) <= EPSILON ? TRUE : FALSE);
 }
 
@@ -115,7 +115,7 @@ delaunay (int nv,XYZ *pxyz,ITRIANGLE *v,int *ntri)
 
   int inside;
   int i,j,k;
 
   int inside;
   int i,j,k;
-  double xp,yp,x1,y1,x2,y2,x3,y3,xc,yc,r;
+  double xp,yp,x1,y1,x2,y2,x3,y3,xc=0,yc=0,r=0;
   double xmin,xmax,ymin,ymax,xmid,ymid;
   double dx,dy,dmax;
 
   double xmin,xmax,ymin,ymax,xmid,ymid;
   double dx,dy,dmax;
 
index 8173c43b96bcdc61a1ff92217abc3b2cc52e5003..6903c8c7472c9096fe4aa37555d2e4686656f9ae 100644 (file)
@@ -1,5 +1,5 @@
 /* -*- mode: C; tab-width: 4 -*-
 /* -*- mode: C; tab-width: 4 -*-
- * xscreensaver, Copyright (c) 1992-2013 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1992-2014 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
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -152,24 +152,24 @@ distort_init (Display *dpy, Window window)
        if (st->effect == NULL && st->radius == 0 && st->speed == 0 && st->number == 0
                && !st->blackhole && !st->vortex && !st->magnify && !st->reflect) {
 /* if no cmdline options are given, randomly choose one of:
        if (st->effect == NULL && st->radius == 0 && st->speed == 0 && st->number == 0
                && !st->blackhole && !st->vortex && !st->magnify && !st->reflect) {
 /* if no cmdline options are given, randomly choose one of:
- * -radius 50 -number 4 -speed 1 -bounce
- * -radius 50 -number 4 -speed 1 -blackhole
- * -radius 50 -number 4 -speed 1 -vortex
- * -radius 50 -number 4 -speed 1 -vortex -magnify
- * -radius 50 -number 4 -speed 1 -vortex -magnify -blackhole
- * -radius 100 -number 1 -speed 2 -bounce
- * -radius 100 -number 1 -speed 2 -blackhole
- * -radius 100 -number 1 -speed 2 -vortex
- * -radius 100 -number 1 -speed 2 -vortex -magnify
- * -radius 100 -number 1 -speed 2 -vortex -magnify -blackhole
+ * -radius 125 -number 4 -speed 1 -bounce
+ * -radius 125 -number 4 -speed 1 -blackhole
+ * -radius 125 -number 4 -speed 1 -vortex
+ * -radius 125 -number 4 -speed 1 -vortex -magnify
+ * -radius 125 -number 4 -speed 1 -vortex -magnify -blackhole
+ * -radius 250 -number 1 -speed 2 -bounce
+ * -radius 250 -number 1 -speed 2 -blackhole
+ * -radius 250 -number 1 -speed 2 -vortex
+ * -radius 250 -number 1 -speed 2 -vortex -magnify
+ * -radius 250 -number 1 -speed 2 -vortex -magnify -blackhole
  * -radius 80 -number 1 -speed 2 -reflect
  * -radius 80 -number 1 -speed 2 -reflect
- * -radius 50 -number 3 -speed 2 -reflect
+ * -radius 125 -number 3 -speed 2 -reflect
  * jwz: not these
  * jwz: not these
- *   -radius 50 -number 4 -speed 2 -swamp
- *   -radius 50 -number 4 -speed 2 -swamp -blackhole
- *   -radius 50 -number 4 -speed 2 -swamp -vortex
- *   -radius 50 -number 4 -speed 2 -swamp -vortex -magnify
- *   -radius 50 -number 4 -speed 2 -swamp -vortex -magnify -blackhole
+ *   -radius 125 -number 4 -speed 2 -swamp
+ *   -radius 125 -number 4 -speed 2 -swamp -blackhole
+ *   -radius 125 -number 4 -speed 2 -swamp -vortex
+ *   -radius 125 -number 4 -speed 2 -swamp -vortex -magnify
+ *   -radius 125 -number 4 -speed 2 -swamp -vortex -magnify -blackhole
  */
                
                i = (random() % 12 /* 17 */);
  */
                
                i = (random() % 12 /* 17 */);
@@ -178,74 +178,70 @@ distort_init (Display *dpy, Window window)
 
                switch (i) {
                        case 0:
 
                switch (i) {
                        case 0:
-                               st->radius=50;st->number=4;st->speed=1;
+                               st->radius=125;st->number=4;st->speed=1;
                                st->effect=&move_lense;break;
                        case 1:
                                st->effect=&move_lense;break;
                        case 1:
-                               st->radius=50;st->number=4;st->speed=1;st->blackhole=1;
+                               st->radius=125;st->number=4;st->speed=1;st->blackhole=1;
                                st->effect=&move_lense;break;
                        case 2:
                                st->effect=&move_lense;break;
                        case 2:
-                               st->radius=50;st->number=4;st->speed=1;st->vortex=1;
+                               st->radius=125;st->number=4;st->speed=1;st->vortex=1;
                                st->effect=&move_lense;break;
                        case 3:
                                st->effect=&move_lense;break;
                        case 3:
-                               st->radius=50;st->number=4;st->speed=1;st->vortex=1;st->magnify=1;
+                               st->radius=125;st->number=4;st->speed=1;st->vortex=1;st->magnify=1;
                                st->effect=&move_lense;break;
                        case 4:
                                st->effect=&move_lense;break;
                        case 4:
-                               st->radius=50;st->number=4;st->speed=1;st->vortex=1;st->magnify=1;st->blackhole=1;
+                               st->radius=125;st->number=4;st->speed=1;st->vortex=1;st->magnify=1;st->blackhole=1;
                                st->effect=&move_lense;break;
                        case 5:
                                st->effect=&move_lense;break;
                        case 5:
-                               st->radius=100;st->number=1;st->speed=2;
+                               st->radius=250;st->number=1;st->speed=2;
                                st->effect=&move_lense;break;
                        case 6:
                                st->effect=&move_lense;break;
                        case 6:
-                               st->radius=100;st->number=1;st->speed=2;st->blackhole=1;
+                               st->radius=250;st->number=1;st->speed=2;st->blackhole=1;
                                st->effect=&move_lense;break;
                        case 7:
                                st->effect=&move_lense;break;
                        case 7:
-                               st->radius=100;st->number=1;st->speed=2;st->vortex=1;
+                               st->radius=250;st->number=1;st->speed=2;st->vortex=1;
                                st->effect=&move_lense;break;
                        case 8:
                                st->effect=&move_lense;break;
                        case 8:
-                               st->radius=100;st->number=1;st->speed=2;st->vortex=1;st->magnify=1;
+                               st->radius=250;st->number=1;st->speed=2;st->vortex=1;st->magnify=1;
                                st->effect=&move_lense;break;
                        case 9:
                                st->effect=&move_lense;break;
                        case 9:
-                               st->radius=100;st->number=1;st->speed=2;st->vortex=1;st->magnify=1;st->blackhole=1;
+                               st->radius=250;st->number=1;st->speed=2;st->vortex=1;st->magnify=1;st->blackhole=1;
                                st->effect=&move_lense;break;
 
                        case 10:
                                st->radius=80;st->number=1;st->speed=2;st->reflect=1;
                                st->draw = &reflect_draw;st->effect = &move_lense;break;
                        case 11:
                                st->effect=&move_lense;break;
 
                        case 10:
                                st->radius=80;st->number=1;st->speed=2;st->reflect=1;
                                st->draw = &reflect_draw;st->effect = &move_lense;break;
                        case 11:
-                               st->radius=50;st->number=4;st->speed=2;st->reflect=1;
+                               st->radius=125;st->number=4;st->speed=2;st->reflect=1;
                                st->draw = &reflect_draw;st->effect = &move_lense;break;
 
 #if 0 /* jwz: not these */
                        case 12:
                                st->draw = &reflect_draw;st->effect = &move_lense;break;
 
 #if 0 /* jwz: not these */
                        case 12:
-                               st->radius=50;st->number=4;st->speed=2;
+                               st->radius=125;st->number=4;st->speed=2;
                                effect=&swamp_thing;break;
                        case 13:
                                effect=&swamp_thing;break;
                        case 13:
-                               st->radius=50;st->number=4;st->speed=2;st->blackhole=1;
+                               st->radius=125;st->number=4;st->speed=2;st->blackhole=1;
                                effect=&swamp_thing;break;
                        case 14:
                                effect=&swamp_thing;break;
                        case 14:
-                               st->radius=50;st->number=4;st->speed=2;st->vortex=1;
+                               st->radius=125;st->number=4;st->speed=2;st->vortex=1;
                                effect=&swamp_thing;break;
                        case 15:
                                effect=&swamp_thing;break;
                        case 15:
-                               st->radius=50;st->number=4;st->speed=2;st->vortex=1;st->magnify=1;
+                               st->radius=125;st->number=4;st->speed=2;st->vortex=1;st->magnify=1;
                                effect=&swamp_thing;break;
                        case 16:
                                effect=&swamp_thing;break;
                        case 16:
-                               st->radius=50;st->number=4;st->speed=2;st->vortex=1;st->magnify=1;st->blackhole=1;
+                               st->radius=125;st->number=4;st->speed=2;st->vortex=1;st->magnify=1;st->blackhole=1;
                                effect=&swamp_thing;break;
 #endif
 
             default:
                 abort(); break;
                }
                                effect=&swamp_thing;break;
 #endif
 
             default:
                 abort(); break;
                }
-
-        /* but if the window is small, reduce default radius */
-        if (st->xgwa.width < st->radius * 8)
-          st->radius = st->xgwa.width/8;
        }
 
     /* never allow the radius to be too close to the min window dimension
      */
        }
 
     /* never allow the radius to be too close to the min window dimension
      */
-    if (st->radius >= st->xgwa.width  * 0.45) st->radius = st->xgwa.width  * 0.45;
-    if (st->radius >= st->xgwa.height * 0.45) st->radius = st->xgwa.height * 0.45;
+    if (st->radius > st->xgwa.width  * 0.3) st->radius = st->xgwa.width  * 0.3;
+    if (st->radius > st->xgwa.height * 0.3) st->radius = st->xgwa.height * 0.3;
 
 
     /* -swamp mode consumes vast amounts of memory, proportional to radius --
 
 
     /* -swamp mode consumes vast amounts of memory, proportional to radius --
@@ -664,6 +660,7 @@ static void reflect_draw(struct state *st, int k)
 static void new_rnd_coo(struct state *st, int k)
 {
        int i;
 static void new_rnd_coo(struct state *st, int k)
 {
        int i;
+    int loop = 0;
 
        st->xy_coo[k].x = (random() % (st->xgwa.width-2*st->radius));
        st->xy_coo[k].y = (random() % (st->xgwa.height-2*st->radius));
 
        st->xy_coo[k].x = (random() % (st->xgwa.width-2*st->radius));
        st->xy_coo[k].y = (random() % (st->xgwa.height-2*st->radius));
@@ -677,6 +674,7 @@ static void new_rnd_coo(struct state *st, int k)
                                i=-1; /* ugly */
                        } 
                }
                                i=-1; /* ugly */
                        } 
                }
+        if (loop++ > 1000) return;  /* let's not get stuck */
        }
 }
 
        }
 }
 
index 025e45b40f284c9cca869b59e8c535adc1dda79f..e28aa0caf9d3e9f5a794142af74c5e8fa198039c 100644 (file)
@@ -31,6 +31,7 @@
 #include "rotator.h"
 #include "gltrackball.h"
 #include <ctype.h>
 #include "rotator.h"
 #include "gltrackball.h"
 #include <ctype.h>
+#include <math.h>
 
 #ifdef USE_GL /* whole file */
 
 
 #ifdef USE_GL /* whole file */
 
index 97202c1d88875bec1e259a3dd282f80e89a4da90..77cf156bdc1b060cf5c37cfab6e786e9f9b14815 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1998-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1998-2014 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
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -90,6 +90,12 @@ ENTRYPOINT ModeSpecOpt lament_opts = {countof(opts), opts, countof(vars), vars,
 #include "xpm-ximage.h"
 #include "rotator.h"
 #include "gltrackball.h"
 #include "xpm-ximage.h"
 #include "rotator.h"
 #include "gltrackball.h"
+
+#ifdef __GNUC__
+ __extension__ /* don't warn about "string length is greater than the length
+                  ISO C89 compilers are required to support" when including
+                  the following XPM file... */
+#endif
 #if 0
 # include "../images/lament128.xpm"
 #else
 #if 0
 # include "../images/lament128.xpm"
 #else
index 75b35d807e1c5304e184d0b3f7e8d0412452a907..be2e0c164c8ac6f1fb86a30dc09ec33ebcb4c1c3 100644 (file)
@@ -273,7 +273,7 @@ draw_quasicrystal (ModeInfo *mi)
   Display *dpy = MI_DISPLAY(mi);
   Window window = MI_WINDOW(mi);
   int wire = MI_IS_WIREFRAME(mi);
   Display *dpy = MI_DISPLAY(mi);
   Window window = MI_WINDOW(mi);
   int wire = MI_IS_WIREFRAME(mi);
-  double r, ps;
+  double r=0, ps=0;
   int i;
 
   if (!bp->glx_context)
   int i;
 
   if (!bp->glx_context)
index 3845f2e2f0e38b36aec0cb315ca5bd7c1fc2bec9..ada87e94933e13a533a0980fcc96695a0e0b27ba 100644 (file)
@@ -36,7 +36,6 @@
 # include <unistd.h>
 #endif
 
 # include <unistd.h>
 #endif
 
-
 #include "starwars.h"
 #define DEFAULTS "*delay:    40000     \n" \
                 "*showFPS:  False     \n" \
 #include "starwars.h"
 #define DEFAULTS "*delay:    40000     \n" \
                 "*showFPS:  False     \n" \
@@ -1046,6 +1045,12 @@ release_sws (ModeInfo *mi)
 }
 
 
 }
 
 
+#ifdef __GNUC__
+ __extension__ /* don't warn about "string length is greater than the length
+                  ISO C89 compilers are required to support" when including
+                  "starwars.txt" in the defaults... */
+#endif
+
 XSCREENSAVER_MODULE_2 ("StarWars", starwars, sws)
 
 #endif /* USE_GL */
 XSCREENSAVER_MODULE_2 ("StarWars", starwars, sws)
 
 #endif /* USE_GL */
index 4091c704a68754395f1a18da3f3d9eb8d48828a3..ea75d4f3e3c7b526e6fcbabda9963b9e17e0a640 100644 (file)
@@ -78,7 +78,9 @@ xpm_to_ximage_1 (Display *dpy, Visual *visual, Colormap cmap,
   if (!initted)
     {
 #ifdef HAVE_GTK2
   if (!initted)
     {
 #ifdef HAVE_GTK2
+#if !GLIB_CHECK_VERSION(2, 36 ,0)
       g_type_init ();
       g_type_init ();
+#endif
 #endif
       gdk_pixbuf_xlib_init (dpy, DefaultScreen (dpy));
       xlib_rgb_init (dpy, DefaultScreenOfDisplay (dpy));
 #endif
       gdk_pixbuf_xlib_init (dpy, DefaultScreen (dpy));
       xlib_rgb_init (dpy, DefaultScreenOfDisplay (dpy));
index 444298e6833a99fda302d4193e3f90d071d88320..70c138168aa1135a0026cea29519d28361453b31 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 2002-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2002-2014 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
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -349,6 +349,9 @@ more_bits (state *st, scroller *sc)
          from earlier days before the advent of virtual memory management."
             -- sbrk(2) man page on MacOS
        */
          from earlier days before the advent of virtual memory management."
             -- sbrk(2) man page on MacOS
        */
+#  if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)) /* gcc >= 4.2 */
+#   pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#  endif
       himem = ((unsigned char *) sbrk(0)) - (2 * sizeof(void *));
 # endif
 
       himem = ((unsigned char *) sbrk(0)) - (2 * sizeof(void *));
 # endif
 
index 3e9acbc50e3a5e95d0d892537fd70adab94af867..dfcc2897cab5cacf51cb1c4c0d2c1cec183b4e31 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1992-2013 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-2014 Jamie Zawinski <jwz@jwz.org>
  *
  *  reaction/diffusion textures
  *  Copyright (c) 1997 Scott Draves spot@transmeta.com
  *
  *  reaction/diffusion textures
  *  Copyright (c) 1997 Scott Draves spot@transmeta.com
@@ -100,6 +100,9 @@ pixack_init(struct state *st, int *size_h, int *size_v)
   if (st->width  <= 0) st->width  = 48 + BELLRAND(256);
   if (st->height <= 0) st->height = 48 + BELLRAND(256);
 
   if (st->width  <= 0) st->width  = 48 + BELLRAND(256);
   if (st->height <= 0) st->height = 48 + BELLRAND(256);
 
+  if (st->width  > st->xgwa.width)  st->width  = st->xgwa.width;
+  if (st->height > st->xgwa.height) st->height = st->xgwa.height;
+
   /* jwz: when (and only when) XSHM is in use on an SGI 8-bit visual,
      we get shear unless st->width is a multiple of 4.  I don't understand
      why.  This is undoubtedly the wrong fix... */
   /* jwz: when (and only when) XSHM is in use on an SGI 8-bit visual,
      we get shear unless st->width is a multiple of 4.  I don't understand
      why.  This is undoubtedly the wrong fix... */
index 6298b34e0fd1ce8f3ab2a06202fa0e5245d08ddc..b0c81fab157eac22adbf998eaeca8dbfb0c135c7 100644 (file)
@@ -10,6 +10,8 @@
  * implied warranty.
  */
 
  * implied warranty.
  */
 
+/* (circle-mode by jwz, 4-Jun-2014; not finished yet.) */
+
 /*
  * Options:
  *
 /*
  * Options:
  *
@@ -18,6 +20,7 @@
  * -n <num>    number of zoomboxes
  * -move       enable mobile zoomboxes
  * -sweep      enable sweep mode
  * -n <num>    number of zoomboxes
  * -move       enable mobile zoomboxes
  * -sweep      enable sweep mode
+ * -circle     enable circle mode
  * -anim       enable snapshot mode
  * -no-anim    enable snapshot mode
  * -delay      delay in milliseconds
  * -anim       enable snapshot mode
  * -no-anim    enable snapshot mode
  * -delay      delay in milliseconds
@@ -57,6 +60,7 @@ struct state {
   int num_zoom;
   int move;
   int sweep;
   int num_zoom;
   int move;
   int sweep;
+  int circle;
   int delay;
   int anim;
   int duration;
   int delay;
   int anim;
   int duration;
@@ -77,16 +81,39 @@ rotzoom (struct state *st, struct zoom_area *za)
   int x, y, c, s, zoom, z;
   int x2 = za->x + za->w - 1, y2 = za->y + za->h - 1;
   int ox = 0, oy = 0;
   int x, y, c, s, zoom, z;
   int x2 = za->x + za->w - 1, y2 = za->y + za->h - 1;
   int ox = 0, oy = 0;
+  int w2 = (za->w/2) * (za->w/2);
 
   z = 8100 * sin (M_PI * za->a2 / 8192);
   zoom = 8192 + z;
 
 
   z = 8100 * sin (M_PI * za->a2 / 8192);
   zoom = 8192 + z;
 
-  c = zoom * cos (M_PI * za->a1 / 8192);
-  s = zoom * sin (M_PI * za->a1 / 8192);
   for (y = za->y; y <= y2; y++) {
     for (x = za->x; x <= x2; x++) {
   for (y = za->y; y <= y2; y++) {
     for (x = za->x; x <= x2; x++) {
-      ox = (x * c + y * s) >> 13;
-      oy = (-x * s + y * c) >> 13;
+      c = zoom * cos (M_PI * za->a1 / 8192);
+      s = zoom * sin (M_PI * za->a1 / 8192);
+      if (st->circle) {
+        int cx = za->x + za->w / 2;
+        int cy = za->y + za->h / 2;
+        int dx = x - cx;
+        int dy = y - cy;
+        int d2 = (dx*dx) + (dy*dy);
+
+        ox = x;
+        oy = y;
+
+        if (d2 > w2) {
+          ox = x;
+          oy = y;
+        } else {
+          double r = sqrt ((double) d2);
+          double th = atan ((double)dy / (double) (dx == 0 ? 1 : dx));
+          th += M_PI * (za->a1 / 300.0);
+          ox = 10 + cx + (int) (r * cos(th));
+          oy = 10 + cy + (int) (r * sin(th));
+        }
+      } else {
+        ox = (x * c + y * s) >> 13;
+        oy = (-x * s + y * c) >> 13;
+      }
 
       while (ox < 0)
         ox += st->width;
 
       while (ox < 0)
         ox += st->width;
@@ -102,7 +129,7 @@ rotzoom (struct state *st, struct zoom_area *za)
   }
 
   za->a1 += za->inc1;          /* Rotation angle */
   }
 
   za->a1 += za->inc1;          /* Rotation angle */
-  za->a1 &= 0x3fff;;
+  za->a1 &= 0x3fff;
 
   za->a2 += za->inc2;          /* Zoom */
   za->a2 &= 0x3fff;
 
   za->a2 += za->inc2;          /* Zoom */
   za->a2 &= 0x3fff;
@@ -166,6 +193,38 @@ reset_zoom (struct state *st, struct zoom_area *za)
     za->a2 = 0;
     za->inc1 = ((2 * (random() & 1)) - 1) * (1 + random () % 7);
     za->inc2 = ((2 * (random() & 1)) - 1) * (1 + random () % 7);
     za->a2 = 0;
     za->inc1 = ((2 * (random() & 1)) - 1) * (1 + random () % 7);
     za->inc2 = ((2 * (random() & 1)) - 1) * (1 + random () % 7);
+  } else if (st->circle) {
+
+    za->w = 50 + random() % 300;
+    if (za->w > st->width / 3)
+      za->w = st->width / 3;
+    if (za->w > st->height / 3)
+      za->w = st->height / 3;
+    za->h = za->w;
+
+    za->ww = st->width - za->w;
+    za->hh = st->height - za->h;
+
+    za->x = (za->ww ? random() % za->ww : 0);
+    za->y = (za->hh ? random() % za->hh : 0);
+
+    za->dx = 0;
+    za->dy = 0;
+    za->inc1 = ((2 * (random() & 1)) - 1) * (random () % 30);
+
+    if (st->anim) {
+      za->n = 50 + random() % 1000;
+      za->a1 = 0;
+      za->a2 = 0;
+    } else {
+      za->n = 5 + random() % 10;
+      za->a1 = random ();
+      za->a2 = random ();
+    }
+
+    za->inc1 = ((2 * (random() & 1)) - 1) * (random () % 30);
+    za->inc2 = ((2 * (random() & 1)) - 1) * (random () % 30);
+
   } else {
     za->w = 50 + random() % 300;
     za->h = 50 + random() % 300;
   } else {
     za->w = 50 + random() % 300;
     za->h = 50 + random() % 300;
@@ -403,6 +462,8 @@ rotzoomer_init (Display *dpy, Window window)
     st->move = True;
   else if (!strcasecmp (s, "sweep"))
     st->sweep = True;
     st->move = True;
   else if (!strcasecmp (s, "sweep"))
     st->sweep = True;
+  else if (!strcasecmp (s, "circle"))
+    st->circle = True;
   else
     fprintf (stderr, "%s: bogus mode: \"%s\"\n", progname, s);
 
   else
     fprintf (stderr, "%s: bogus mode: \"%s\"\n", progname, s);
 
@@ -420,6 +481,11 @@ rotzoomer_init (Display *dpy, Window window)
   if (!st->anim)
     st->sweep = 0;
 
   if (!st->anim)
     st->sweep = 0;
 
+  if (st->circle) {
+    st->move = 0;
+    st->sweep = 0;
+  }
+
   st->start_time = time ((time_t) 0);
 
   setup_X (st);
   st->start_time = time ((time_t) 0);
 
   setup_X (st);
@@ -474,6 +540,7 @@ static XrmOptionDescRec rotzoomer_options[] = {
   { "-mode",   ".mode",        XrmoptionSepArg, 0      },
   { "-move",   ".mode",        XrmoptionNoArg, "move"  },
   { "-sweep",  ".mode",        XrmoptionNoArg, "sweep" },
   { "-mode",   ".mode",        XrmoptionSepArg, 0      },
   { "-move",   ".mode",        XrmoptionNoArg, "move"  },
   { "-sweep",  ".mode",        XrmoptionNoArg, "sweep" },
+  { "-circle", ".mode",        XrmoptionNoArg, "circle"},
   { "-anim",   ".anim",        XrmoptionNoArg, "True"  },
   { "-no-anim",        ".anim",        XrmoptionNoArg, "False" },
   { "-delay",  ".delay",       XrmoptionSepArg, 0      },
   { "-anim",   ".anim",        XrmoptionNoArg, "True"  },
   { "-no-anim",        ".anim",        XrmoptionNoArg, "False" },
   { "-delay",  ".delay",       XrmoptionSepArg, 0      },
index c506400cd5cd63a45936367d8fb46155a3af96ca..5fd681e1a35f10a2c8cffe4c7627eacc9335927e 100644 (file)
@@ -573,11 +573,12 @@ tessellate (struct state *st)
 
   if (ticked_p && st->cache[st->thresh])
     {
 
   if (ticked_p && st->cache[st->thresh])
     {
-      XCopyArea (st->dpy, 
-                 st->cache[st->thresh],
-                 st->output, st->pgc,
-                 0, 0, st->delta->width, st->delta->height, 
-                 0, 0);
+      if (st->output)
+        XCopyArea (st->dpy, 
+                   st->cache[st->thresh],
+                   st->output, st->pgc,
+                   0, 0, st->delta->width, st->delta->height, 
+                   0, 0);
     }
   else if (ticked_p)
     {
     }
   else if (ticked_p)
     {
@@ -753,12 +754,13 @@ tessellate (struct state *st)
               fprintf (stderr, "%s: out of memory\n", progname);
               abort();
             }
               fprintf (stderr, "%s: out of memory\n", progname);
               abort();
             }
-          XCopyArea (st->dpy, 
-                     st->output,
-                     st->cache[st->thresh],
-                     st->pgc,
-                     0, 0, st->delta->width, st->delta->height, 
-                     0, 0);
+          if (st->output)
+            XCopyArea (st->dpy, 
+                       st->output,
+                       st->cache[st->thresh],
+                       st->pgc,
+                       0, 0, st->delta->width, st->delta->height, 
+                       0, 0);
         }
     }
 
         }
     }
 
@@ -916,8 +918,8 @@ tessellimage_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
   flush_cache (st);
 {
   struct state *st = (struct state *) closure;
   flush_cache (st);
-  XFreeGC (dpy, st->wgc);
-  XFreeGC (dpy, st->pgc);
+  if (st->wgc) XFreeGC (dpy, st->wgc);
+  if (st->pgc) XFreeGC (dpy, st->pgc);
   if (st->image)  XFreePixmap (dpy, st->image);
   if (st->output) XFreePixmap (dpy, st->output);
   if (st->delta)  XDestroyImage (st->delta);
   if (st->image)  XFreePixmap (dpy, st->image);
   if (st->output) XFreePixmap (dpy, st->output);
   if (st->delta)  XDestroyImage (st->delta);
index 5f91ff077f4e0049f513b66b2a2d18c2c30455b4..6aea5f25405b497b0ff3cd75c5e9304a0988614a 100755 (executable)
@@ -57,7 +57,7 @@ use bytes;
 
 
 my $progname = $0; $progname =~ s@.*/@@g;
 
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my ($version) = ('$Revision: 1.164 $' =~ m/\s(\d[.\d]+)\s/s);
+my ($version) = ('$Revision: 1.165 $' =~ m/\s(\d[.\d]+)\s/s);
 my $copyright = "WebCollage $version, Copyright (c) 1999-2014" .
     " Jamie Zawinski <jwz\@jwz.org>\n" .
     "            http://www.jwz.org/webcollage/\n";
 my $copyright = "WebCollage $version, Copyright (c) 1999-2014" .
     " Jamie Zawinski <jwz\@jwz.org>\n" .
     "            http://www.jwz.org/webcollage/\n";
@@ -1494,10 +1494,7 @@ sub pick_from_google_image_photos($) {
 #
 ############################################################################
 
 #
 ############################################################################
 
-my $bing_images_url =  "http://www.bing.com/images/async" .
-                       "?CW=0" .
-                       "&CH=0" .
-                       "&q=";
+my $bing_images_url =  "http://www.bing.com/images/async?q=";
 
 
 # bingimgs
 
 
 # bingimgs
index e6e2da7a81b5c9476cad96dc377b55dd9f752595..673e8b4260109165172325da8febdb57ca503990 100644 (file)
@@ -85,7 +85,7 @@ bevel_image (GdkPixbuf **pbP, int bevel_pct,
   if (! gdk_pixbuf_get_has_alpha (pb))
     {
       GdkPixbuf *pb2 = gdk_pixbuf_add_alpha (pb, FALSE, 0, 0, 0);
   if (! gdk_pixbuf_get_has_alpha (pb))
     {
       GdkPixbuf *pb2 = gdk_pixbuf_add_alpha (pb, FALSE, 0, 0, 0);
-      gdk_pixbuf_unref (pb);
+      g_object_unref (pb);
       pb = pb2;
     }
 
       pb = pb2;
     }
 
@@ -205,7 +205,7 @@ paste (const char *paste_file,
       int new_h = paste_h * from_scale;
       GdkPixbuf *new_pb = gdk_pixbuf_scale_simple (paste_pb, new_w, new_h,
                                                    GDK_INTERP_HYPER);
       int new_h = paste_h * from_scale;
       GdkPixbuf *new_pb = gdk_pixbuf_scale_simple (paste_pb, new_w, new_h,
                                                    GDK_INTERP_HYPER);
-      gdk_pixbuf_unref (paste_pb);
+      g_object_unref (paste_pb);
       paste_pb = new_pb;
       paste_w = gdk_pixbuf_get_width (paste_pb);
       paste_h = gdk_pixbuf_get_height (paste_pb);
       paste_pb = new_pb;
       paste_w = gdk_pixbuf_get_width (paste_pb);
       paste_h = gdk_pixbuf_get_height (paste_pb);
@@ -323,9 +323,9 @@ paste (const char *paste_file,
     fprintf (stderr, "%s: pasted %dx%d from %d,%d to %d,%d\n",
              progname, paste_w, paste_h, from_x, from_y, to_x, to_y);
 
     fprintf (stderr, "%s: pasted %dx%d from %d,%d to %d,%d\n",
              progname, paste_w, paste_h, from_x, from_y, to_x, to_y);
 
-  gdk_pixbuf_unref (paste_pb);
+  g_object_unref (paste_pb);
   write_pixbuf (base_pb, base_file);
   write_pixbuf (base_pb, base_file);
-  gdk_pixbuf_unref (base_pb);
+  g_object_unref (base_pb);
 }
 
 
 }
 
 
@@ -491,7 +491,9 @@ main (int argc, char **argv)
   if (h < 0) usage();
 
 #ifdef HAVE_GTK2
   if (h < 0) usage();
 
 #ifdef HAVE_GTK2
+#if !GLIB_CHECK_VERSION(2, 36 ,0)
   g_type_init ();
   g_type_init ();
+#endif
 #endif /* HAVE_GTK2 */
 
   paste (paste_file, base_file,
 #endif /* HAVE_GTK2 */
 
   paste (paste_file, base_file,
index 23c12b6dc33fb1d75f412609fe6a77dac461a6a3..c90be11f87f3f7c39fbc0eff9ccd8fe384756598 100644 (file)
@@ -1,5 +1,5 @@
 /* xlockmore.c --- xscreensaver compatibility layer for xlockmore modules.
 /* xlockmore.c --- xscreensaver compatibility layer for xlockmore modules.
- * xscreensaver, Copyright (c) 1997-2013 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1997-2014 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
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -295,25 +295,13 @@ xlockmore_init (Display *dpy, Window window,
 #ifdef HAVE_COCOA
   
   /* In Cocoa-based xscreensaver, all hacks run in the same address space,
 #ifdef HAVE_COCOA
   
   /* In Cocoa-based xscreensaver, all hacks run in the same address space,
-     so each one needs to get its own screen number.  We just use a global
-     counter for that, instead of actually trying to figure out which
-     monitor each window is on.  Also, the embedded "preview" view counts
-     as a screen as well.
-    
-     Note that the screen number will increase each time the saver is
-     restarted (e.g., each time preferences are changed!)  So we just
-     keep pushing the num_screens number up as needed, and assume that
-     no more than 10 simultanious copies will be running at once...
+     so each one needs to get its own screen number.  Believe what jwxyz
+     says about screen counts and numbers.
    */
    */
-  {
-    static int screen_tick = 0;
-    mi->num_screens = 10;
-    mi->screen_number = screen_tick++;
-    if (screen_tick >= mi->num_screens)
-      mi->num_screens += 10;
-  }
-  
+  mi->num_screens = ScreenCount (dpy);
+  mi->screen_number = XScreenNumberOfScreen (mi->xgwa.screen);
   root_p = True;
   root_p = True;
+
 #else /* !HAVE_COCOA -- real Xlib */
   
   /* In Xlib-based xscreensaver, each hack runs in its own address space,
 #else /* !HAVE_COCOA -- real Xlib */
   
   /* In Xlib-based xscreensaver, each hack runs in its own address space,
index 9493e093583823a41d29348d7699bb8f240d7e35..5e13a18e22ed487de49ee384b3a7586238585769 100644 (file)
@@ -61,7 +61,9 @@ xpm_to_pixmap_1 (Display *dpy, Window window,
   if (!initted)
     {
 #ifdef HAVE_GTK2
   if (!initted)
     {
 #ifdef HAVE_GTK2
+#if !GLIB_CHECK_VERSION(2, 36 ,0)
       g_type_init ();
       g_type_init ();
+#endif
 #endif /* HAVE_GTK2 */
       gdk_pixbuf_xlib_init (dpy, screen_number (xgwa.screen));
       xlib_rgb_init (dpy, xgwa.screen);
 #endif /* HAVE_GTK2 */
       gdk_pixbuf_xlib_init (dpy, screen_number (xgwa.screen));
       xlib_rgb_init (dpy, xgwa.screen);
index 8fc246cb510ef0f4b4f95f1b2c055f330c8e958c..28d93134f6dc6bd378a9c73fda0dce99a86df227 100644 (file)
@@ -151,6 +151,7 @@ DISTFILES = $(DISTFILES_1) $(GETTEXT_PACKAGE).pot \
 TARFILES = $(DISTFILES_1) $(POFILES) $(SOURCES)
 
 POTFILES = \
 TARFILES = $(DISTFILES_1) $(POFILES) $(SOURCES)
 
 POTFILES = \
+# This comment gets stripped out
 
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
index e10c35e5f925b7d030085baa02269e4c173b7225..a5688d094ea69b7fa4eb09144d93b1311f28b92f 100644 (file)
@@ -1,7 +1,5 @@
-# Auto-generated: Mon Dec  9 03:01:47 PST 2013
+# Auto-generated: Sun Jun  8 14:43:58 PDT 2014
 driver/demo-Gtk-conf.c
 driver/demo-Gtk-conf.c
-driver/demo-Gtk-support.c
-driver/demo-Gtk-widgets.c
 driver/demo-Gtk.c
 driver/screensaver-properties.desktop.in
 driver/xscreensaver-demo.glade2
 driver/demo-Gtk.c
 driver/screensaver-properties.desktop.in
 driver/xscreensaver-demo.glade2
@@ -166,6 +164,7 @@ hacks/config/polyominoes.xml
 hacks/config/polytopes.xml
 hacks/config/pong.xml
 hacks/config/popsquares.xml
 hacks/config/polytopes.xml
 hacks/config/pong.xml
 hacks/config/popsquares.xml
+hacks/config/projectiveplane.xml
 hacks/config/providence.xml
 hacks/config/pulsar.xml
 hacks/config/pyro.xml
 hacks/config/providence.xml
 hacks/config/pulsar.xml
 hacks/config/pyro.xml
@@ -207,6 +206,7 @@ hacks/config/surfaces.xml
 hacks/config/swirl.xml
 hacks/config/t3d.xml
 hacks/config/tangram.xml
 hacks/config/swirl.xml
 hacks/config/t3d.xml
 hacks/config/tangram.xml
+hacks/config/tessellimage.xml
 hacks/config/thornbird.xml
 hacks/config/timetunnel.xml
 hacks/config/topblock.xml
 hacks/config/thornbird.xml
 hacks/config/timetunnel.xml
 hacks/config/topblock.xml
index d045455f114815aa479dbc3199f1c9b7acdc5200..d445bcffb7443b19cdd0ae1519127d144b038349 100644 (file)
@@ -1,2 +1,2 @@
 static const char screensaver_id[] =
 static const char screensaver_id[] =
-       "@(#)xscreensaver 5.27 (27-May-2014), by Jamie Zawinski (jwz@jwz.org)";
+       "@(#)xscreensaver 5.29 (08-Jun-2014), by Jamie Zawinski (jwz@jwz.org)";
index 911abba3352dd1bacaf91ea70aa497a82cf8c7b3..b47f08cba1bec602ef5f0290fbe5928a0e59df3f 100644 (file)
@@ -1,5 +1,5 @@
 %define        name xscreensaver
 %define        name xscreensaver
-%define        version 5.27
+%define        version 5.29
 
 Summary:       X screen saver and locker
 Name:          %{name}
 
 Summary:       X screen saver and locker
 Name:          %{name}
index 25df834bfe78ea5977152a3e2cf7db4d8f60a47c..b8b74294eb35f42da5639b744396c29fe91acadc 100644 (file)
                                        /Users/jwz/src/xscreensaver/OSX,
                                );
                                INFOPLIST_FILE = "$(SRCROOT)/OSX/Updater.plist";
                                        /Users/jwz/src/xscreensaver/OSX,
                                );
                                INFOPLIST_FILE = "$(SRCROOT)/OSX/Updater.plist";
-                               "OTHER_CFLAGS[sdk=macosx*]" = "";
+                               "OTHER_CFLAGS[sdk=macosx*]" = "-fno-objc-gc";
                                PRODUCT_NAME = "$(TARGET_NAME)";
                                WRAPPER_EXTENSION = app;
                        };
                                PRODUCT_NAME = "$(TARGET_NAME)";
                                WRAPPER_EXTENSION = app;
                        };
                                        /Users/jwz/src/xscreensaver/OSX,
                                );
                                INFOPLIST_FILE = "$(SRCROOT)/OSX/Updater.plist";
                                        /Users/jwz/src/xscreensaver/OSX,
                                );
                                INFOPLIST_FILE = "$(SRCROOT)/OSX/Updater.plist";
-                               "OTHER_CFLAGS[sdk=macosx*]" = "";
+                               "OTHER_CFLAGS[sdk=macosx*]" = "-fno-objc-gc";
                                PRODUCT_NAME = "$(TARGET_NAME)";
                                WRAPPER_EXTENSION = app;
                        };
                                PRODUCT_NAME = "$(TARGET_NAME)";
                                WRAPPER_EXTENSION = app;
                        };
                                LIBRARY_SEARCH_PATHS = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
                                MACOSX_DEPLOYMENT_TARGET = 10.4;
                                OTHER_CFLAGS = "";
                                LIBRARY_SEARCH_PATHS = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
                                MACOSX_DEPLOYMENT_TARGET = 10.4;
                                OTHER_CFLAGS = "";
-                               "OTHER_CFLAGS[sdk=macosx*]" = "";
+                               "OTHER_CFLAGS[sdk=macosx*]" = "-fobjc-gc";
                                PRODUCT_NAME = "$(TARGET_NAME)";
                                SDKROOT = macosx;
                                "SDKROOT[arch=arm*]" = iphoneos;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                                SDKROOT = macosx;
                                "SDKROOT[arch=arm*]" = iphoneos;
                                "LLVM_LTO[sdk=macosx*]" = YES;
                                MACOSX_DEPLOYMENT_TARGET = 10.4;
                                OTHER_CFLAGS = "";
                                "LLVM_LTO[sdk=macosx*]" = YES;
                                MACOSX_DEPLOYMENT_TARGET = 10.4;
                                OTHER_CFLAGS = "";
-                               "OTHER_CFLAGS[sdk=macosx*]" = "";
+                               "OTHER_CFLAGS[sdk=macosx*]" = "-fobjc-gc";
                                PRODUCT_NAME = "$(TARGET_NAME)";
                                SDKROOT = macosx;
                                "SDKROOT[arch=arm*]" = iphoneos;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                                SDKROOT = macosx;
                                "SDKROOT[arch=arm*]" = iphoneos;