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@
@@ -95,6 +95,7 @@ tar::
 # of autoconf other than the ones I've tried (2.12 and 2.13.)
 #
 configure::
+       aclocal
        autoconf
        autoheader
        @TMP=configure.$$$$ ;                                                \
@@ -372,8 +373,8 @@ www::
   fi ;                                                                     \
                                                                            \
   git commit -m "$$VERS" . ;                                               \
-  git tag -a "v$$VERS" -m "$$VERS" . ;                                     \
-  git push . ;                                                             \
+  git tag -a "v$$VERS" -m "$$VERS" ;                                       \
+  git push ;                                                               \
 
 
 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)'
-THUMBDIR   = $(HOME)/www/xscreensaver/screenshots/
 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 is from osxutils1.7.pkg
 
 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 \
@@ -27,10 +34,10 @@ distdepend:: Sparkle.framework
 distdepend:: update_plist_version
 
 debug: distdepend
-       cd ..; $(XCODEBUILD) $(ARCH) $(TARGETS) -configuration Debug   build
+       cd ..; $(XCODEBUILD) $(ARCH) -target "$(TARGETS)" -configuration Debug   build
 
 release:: distdepend
-       cd ..; $(XCODEBUILD) $(ARCH) $(TARGETS) -configuration Release build
+       cd ..; $(XCODEBUILD) $(ARCH) -target "$(TARGETS)" -configuration Release build
 
 release:: check_versions
 release:: update_thumbs
@@ -66,6 +73,25 @@ check_versions:
   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
 
@@ -167,7 +193,7 @@ build/Release/installer.pkg: installer.rtf installer.xml installer.sh installer.
 
 
 # -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 ;                                                   \
index c3fe9c3b951bba14a6bfb676ce75d1c7567b73ec..c7664a16b5719fa22ddc1275626047a6c26ed26f 100644 (file)
@@ -7,7 +7,7 @@
        <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>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>
-       <string>5.27</string>
+       <string>5.29</string>
        <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>
-       <string>5.27</string>
+       <string>5.29</string>
        <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>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>CFBundleIconFile</key>
        <string>SaverRunner</string>
        <key>CFBundleIdentifier</key>
@@ -15,7 +15,7 @@
        <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>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
-       <string>5.27</string>
+       <string>5.29</string>
        <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>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>NSMainNibFile</key>
        <string>Updater</string>
        <key>NSPrincipalClass</key>
index b1f166e29e92434cff7e2232664498d63be74ee0..dd549bd6d50d711e7c005f9a04b723b236d464bd 100644 (file)
        <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>
-       <string>5.27</string>
+       <string>5.29</string>
        <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);
+    // NSAssert(xdata, @"no xdata from init");
+    if (! xdata) abort();
 
     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
+  // 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
index 1b7d6fd98f0858fde0e6b50615c99bb3410876d1..af58145b8d7da9117dd535e7867782ce698fbb3a 100644 (file)
@@ -16,8 +16,8 @@
 \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
index f8d2d9c205a5c9337ce6d60db6877696bde27f23..c585bf66ed12f7323b6c29aad78c435d237f780f 100644 (file)
  * 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.
  * 
- * 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.
  * 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>
index 89418cbac12b0f4a1c063f38cdc00f9df522f668..736a5274be28f8b9eb84ea2acb0deaec6638091b 100644 (file)
@@ -5,11 +5,11 @@
        <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>
-       <string>5.27</string>
+       <string>5.29</string>
        <key>NSMainNibFile</key>
        <string>iSaverRunner</string>
        <key>CFBundlePackageType</key>
@@ -19,7 +19,7 @@
        <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>
@@ -37,7 +37,7 @@
                <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>
@@ -65,6 +65,6 @@
        <key>CFBundleDisplayName</key>
        <string>${PRODUCT_NAME}</string>
        <key>CFBundleGetInfoString</key>
-       <string>5.27</string>
+       <string>5.29</string>
 </dict>
 </plist>
index 06a1a135fe9f0df872030315bfa1b72b259c25f7..120dd9d9b8bed3aa76d89da48b0afe36103a0c9d 100755 (executable)
@@ -1,5 +1,5 @@
 #!/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
 #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"
 
-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
 
-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"
@@ -41,16 +58,6 @@ DST2="$DSTVOLUME/Applications"
 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!"
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
@@ -269,6 +269,9 @@ typedef unsigned long                       XtInputMask;
 #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);
index 2703bdca23076d20219e59fca6d815c7b0ea3378..ef3068c4ef3de11cee3fd6edcf8eabf8fdc4ac2a 100644 (file)
@@ -77,6 +77,7 @@ struct jwxyz_Drawable {
 struct jwxyz_Display {
   Window main_window;
   Screen *screen;
+  int screen_count;
   struct jwxyz_sources_data *timers_data;
 
 # ifndef USE_IPHONE
@@ -93,6 +94,7 @@ struct jwxyz_Display {
 struct jwxyz_Screen {
   Display *dpy;
   Visual *visual;
+  int screen_number;
 };
 
 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)
 {
@@ -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_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;
@@ -187,6 +227,21 @@ jwxyz_free_display (Display *dpy)
   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);
@@ -336,7 +391,13 @@ XDisplayNumberOfScreen (Screen *s)
 int
 XScreenNumberOfScreen (Screen *s)
 {
-  return 0;
+  return s->screen_number;
+}
+
+int
+jwxyz_ScreenCount (Display *dpy)
+{
+  return dpy->screen_count;
 }
 
 int
index 8fe8b71d3054a3e763eb439eec50ace0c900b3c8..5c6181ce66ffbbb997b2a4eeab930626edbe9f2c 100755 (executable)
@@ -27,7 +27,7 @@ use IO::Compress::Gzip qw(gzip $GzipError);
 
 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
 
@@ -391,7 +391,7 @@ sub update($) {
 
   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>
+  <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>
     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>
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.
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.
-# 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 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
 
-         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
+  
+      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])
-    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
-      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
         : ;
@@ -252,15 +293,12 @@ AC_DEFUN(AM_GLIB_WITH_NLS,
 
     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
-        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
-    dnl in configure.in.
+    dnl in configure.ac.
     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(INTLDEPS)
     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_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=
-       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)
@@ -320,38 +370,16 @@ strdup __argz_count __argz_stringify __argz_next])
      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=
-#
-# 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
-
-   # 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
@@ -371,73 +399,296 @@ strdup __argz_count __argz_stringify __argz_next])
        < $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
-  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
-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 --- 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 
 /* 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
 
    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 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 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 <malloc.h> header file. */
-#undef HAVE_MALLOC_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
 
-/* Define to 1 if you have a working `mmap' system call. */
-#undef HAVE_MMAP
-
 /* 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 <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 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 <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
 
    */
 #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 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 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 `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
 
index c12874b0cf366260b175710dc10b44251a66360c..1139ff82a94c617bbbd012a32c06d8bc2ffc6b75 100755 (executable)
--- a/configure
+++ b/configure
@@ -619,7 +619,6 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_header_list=
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
 DEPEND_DEFINES
@@ -697,21 +696,51 @@ login_manager_tmp
 MKINSTALLDIRS
 POSUB
 POFILES
-INTLOBJS
+PO_IN_DATADIR_FALSE
+PO_IN_DATADIR_TRUE
 INTLLIBS
-INTLDEPS
 INSTOBJEXT
 GMOFILES
-DATADIRNAME
 CATOBJEXT
 CATALOGS
-XGETTEXT
+MSGFMT_OPTS
+GETTEXT_PACKAGE
+DATADIRNAME
+ALL_LINGUAS
 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
-ALLOCA
-RANLIB
-GETTEXT_PACKAGE
 X_EXTRA_LIBS
 X_LIBS
 X_PRE_LIBS
@@ -789,6 +818,7 @@ with_x_app_defaults
 with_pthread
 enable_largefile
 with_x
+enable_nls
 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-nls           do not use Native Language Support
 
 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
 
-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
@@ -4228,10 +4256,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
       $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.
@@ -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; }
-if ${ac_cv_prog_RANLIB+:} false; then :
+if ${ac_cv_path_INTLTOOL_UPDATE+:} false; then :
   $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
-    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
@@ -7057,39 +7103,39 @@ done
   done
 IFS=$as_save_IFS
 
+  ;;
+esac
 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
 
 
-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; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+if ${ac_cv_path_INTLTOOL_MERGE+:} false; then :
   $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
-    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
@@ -7097,460 +7143,446 @@ done
   done
 IFS=$as_save_IFS
 
+  ;;
+esac
 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
 
-  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
+  { $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
 
-# 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
-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
-  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
-{ $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
 
+
+# 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
+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.  */
-$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 ()
 {
-  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
-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
-  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
 
+    ;;
+    *)
+    DATADIRNAME=lib
+    ;;
+    esac
+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_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
 
-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 :
-  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
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define HAVE_LOCALE_H 1
 _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 :
@@ -7586,28 +7618,65 @@ $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
      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 :
-  { $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.  */
+
 #include <libintl.h>
+
 int
 main ()
 {
-return (int) dgettext ("","")
+return !dgettext ("","")
   ;
   return 0;
 }
@@ -7619,12 +7688,34 @@ else
 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
+
+      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
@@ -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}: 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
+  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 "$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
-  gt_cv_func_dgettext_libintl=no
+  :
 fi
 
+else
+  :
 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
+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
+
+      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
 
-           # 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; }
@@ -7752,15 +7999,17 @@ else
 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
-           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 :
@@ -7771,7 +8020,36 @@ _ACEOF
 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; }
@@ -7812,7 +8090,7 @@ $as_echo "no" >&6; }
 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; }
@@ -7840,7 +8118,7 @@ else
 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
@@ -7848,53 +8126,61 @@ else
 $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;
-                            return _nl_msg_cat_cntr
+                        return _nl_msg_cat_cntr
   ;
   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
-                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
-             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
 
 
 
-      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
 
-    else
-            CATOBJEXT=
     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=
-       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
@@ -7952,38 +8254,14 @@ $as_echo "$LINGUAS" >&6; }
      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=
-#
-# 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
 
-   # 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
@@ -12831,7 +13109,7 @@ if ${ac_cv_mesagl_version_string+:} false; then :
   $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
@@ -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
@@ -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" ;;
+    "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;;
 
   *) 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*)
-        rm -f po/stamp-it po/stamp-it.tmp
-        > po/stamp-it.tmp
         sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
-        mv po/stamp-it.tmp po/stamp-it
       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
@@ -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'
-  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
 
@@ -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 'was not.'
+    warn2 'library was not.'
   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 '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
@@ -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 "      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,"
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)
@@ -15,7 +15,7 @@ echo "command line was: $0 $@"
 ###############################################################################
 
 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 
@@ -368,10 +368,6 @@ AC_DEFUN([AC_PROG_CC_PTHREAD],
     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
 ])
@@ -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'
-  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
 
@@ -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 'was not.'
+    warn2 'library was not.'
   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 '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
@@ -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 "      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,"
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
 
-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
@@ -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 \
-                 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 \
@@ -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
 
-# What was this for? Now it's undefined.
-# @INTLTOOL_DESKTOP_RULE@
+@INTLTOOL_DESKTOP_RULE@
 
 # 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)
@@ -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: $(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
@@ -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-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
index 4cfe82c4d088858bf4976c4ca50e2db020cf9820..4bbe5f24fce21f61fefd2c02cb0597c1363b2b79 100644 (file)
@@ -4,8 +4,8 @@
 !            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/
@@ -421,7 +421,7 @@ XScreenSaver.bourneShell:           /bin/sh
 *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
index e4e6fe91253a799e2b0f136b4fa47881dabb1042..10be94f676b046f206a394c040bf63b8a37a7d07 100644 (file)
 "*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",
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"
 
-#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>
@@ -4721,7 +4716,7 @@ delayed_scroll_kludge (gpointer data)
 
 #ifdef HAVE_GTK2
 
-GtkWidget *
+static GtkWidget *
 create_xscreensaver_demo (void)
 {
   GtkWidget *nb;
@@ -4732,7 +4727,7 @@ create_xscreensaver_demo (void)
   return name_to_widget (global_state_kludge, "xscreensaver_demo");
 }
 
-GtkWidget *
+static GtkWidget *
 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
@@ -778,9 +778,10 @@ void
 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;
+  if (!sp) return;
+  ssi = sp->prompt_screen;
 
   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");
+      char *npath;
       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, ":");
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
@@ -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 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) {}
@@ -80,7 +81,6 @@ idle_timer (XtPointer closure, XtIntervalId *id)
   XPutBackEvent (si->dpy, &fake_event);
 }
 
-
 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
+# if !GLIB_CHECK_VERSION(2, 36 ,0)
   g_type_init();
+# endif
 # 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@
@@ -31,6 +31,9 @@ DEFS          = -DSTANDALONE @DEFS@
 LIBS           = @LIBS@
 PERL           = @PERL@
 
+THREAD_LIBS    = @PTHREAD_LIBS@
+THREAD_CFLAGS  = @PTHREAD_CFLAGS@
+
 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)
-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
 
@@ -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)
 
-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)
@@ -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   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)
-       $(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)
@@ -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) $(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)
@@ -841,7 +845,7 @@ m6502.h:
 
 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)
@@ -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)/xdbe.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)/xdbe.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)/xdbe.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)/xdbe.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)/xdbe.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)/xdbe.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)/xdbe.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)/xdbe.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)/xdbe.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)/xdbe.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)/xdbe.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)/xdbe.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
 
-                              version 5.27
-                               27-May-2014
+                              version 5.29
+                               08-Jun-2014
 
                      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"
-            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"
 
     <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"
-            low="1.0" high="5.0" default="2.0"/>
+            low="1.0" high="5.0" default="3.0"/>
 
    </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"
-             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"
index e57e77bd7829c946b24f5238484290075d19dbd7..a5ea9aef72e5693220ccffa834de1f697112b6c5 100644 (file)
@@ -87,9 +87,9 @@ circumcircle (double xp,double yp,
   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);
 }
 
@@ -115,7 +115,7 @@ delaunay (int nv,XYZ *pxyz,ITRIANGLE *v,int *ntri)
 
   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;
 
index 8173c43b96bcdc61a1ff92217abc3b2cc52e5003..6903c8c7472c9096fe4aa37555d2e4686656f9ae 100644 (file)
@@ -1,5 +1,5 @@
 /* -*- 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
@@ -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:
- * -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 50 -number 3 -speed 2 -reflect
+ * -radius 125 -number 3 -speed 2 -reflect
  * 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 */);
@@ -178,74 +178,70 @@ distort_init (Display *dpy, Window window)
 
                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->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->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->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->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->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->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->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->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->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->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->radius=50;st->number=4;st->speed=2;
+                               st->radius=125;st->number=4;st->speed=2;
                                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:
-                               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:
-                               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:
-                               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;
                }
-
-        /* 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
      */
-    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 --
@@ -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;
+    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));
@@ -677,6 +674,7 @@ static void new_rnd_coo(struct state *st, int k)
                                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 <math.h>
 
 #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
@@ -90,6 +90,12 @@ ENTRYPOINT ModeSpecOpt lament_opts = {countof(opts), opts, countof(vars), vars,
 #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
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);
-  double r, ps;
+  double r=0, ps=0;
   int i;
 
   if (!bp->glx_context)
index 3845f2e2f0e38b36aec0cb315ca5bd7c1fc2bec9..ada87e94933e13a533a0980fcc96695a0e0b27ba 100644 (file)
@@ -36,7 +36,6 @@
 # include <unistd.h>
 #endif
 
-
 #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 */
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 !GLIB_CHECK_VERSION(2, 36 ,0)
       g_type_init ();
+#endif
 #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
@@ -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
        */
+#  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
 
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
@@ -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  > 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... */
index 6298b34e0fd1ce8f3ab2a06202fa0e5245d08ddc..b0c81fab157eac22adbf998eaeca8dbfb0c135c7 100644 (file)
@@ -10,6 +10,8 @@
  * implied warranty.
  */
 
+/* (circle-mode by jwz, 4-Jun-2014; not finished yet.) */
+
 /*
  * Options:
  *
@@ -18,6 +20,7 @@
  * -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
@@ -57,6 +60,7 @@ struct state {
   int num_zoom;
   int move;
   int sweep;
+  int circle;
   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 w2 = (za->w/2) * (za->w/2);
 
   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++) {
-      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;
@@ -102,7 +129,7 @@ rotzoom (struct state *st, struct zoom_area *za)
   }
 
   za->a1 += za->inc1;          /* Rotation angle */
-  za->a1 &= 0x3fff;;
+  za->a1 &= 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);
+  } 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;
@@ -403,6 +462,8 @@ rotzoomer_init (Display *dpy, Window window)
     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);
 
@@ -420,6 +481,11 @@ rotzoomer_init (Display *dpy, Window window)
   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);
@@ -474,6 +540,7 @@ static XrmOptionDescRec rotzoomer_options[] = {
   { "-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      },
index c506400cd5cd63a45936367d8fb46155a3af96ca..5fd681e1a35f10a2c8cffe4c7627eacc9335927e 100644 (file)
@@ -573,11 +573,12 @@ tessellate (struct state *st)
 
   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)
     {
@@ -753,12 +754,13 @@ tessellate (struct state *st)
               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);
-  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);
index 5f91ff077f4e0049f513b66b2a2d18c2c30455b4..6aea5f25405b497b0ff3cd75c5e9304a0988614a 100755 (executable)
@@ -57,7 +57,7 @@ use bytes;
 
 
 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";
@@ -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
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);
-      gdk_pixbuf_unref (pb);
+      g_object_unref (pb);
       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);
-      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);
@@ -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);
 
-  gdk_pixbuf_unref (paste_pb);
+  g_object_unref (paste_pb);
   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 !GLIB_CHECK_VERSION(2, 36 ,0)
   g_type_init ();
+#endif
 #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.
- * 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
@@ -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,
-     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;
+
 #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 !GLIB_CHECK_VERSION(2, 36 ,0)
       g_type_init ();
+#endif
 #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 = \
+# This comment gets stripped out
 
 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-support.c
-driver/demo-Gtk-widgets.c
 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/projectiveplane.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/tessellimage.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[] =
-       "@(#)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        version 5.27
+%define        version 5.29
 
 Summary:       X screen saver and locker
 Name:          %{name}
index 25df834bfe78ea5977152a3e2cf7db4d8f60a47c..b8b74294eb35f42da5639b744396c29fe91acadc 100644 (file)
                                        /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;
                        };
                                        /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;
                        };
                                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;
                                "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;