From 96bdd7cf6ea60c418a76921acaf0e34d6f5be930 Mon Sep 17 00:00:00 2001 From: Zygo Blaxell Date: Mon, 2 Mar 2009 00:43:07 -0500 Subject: [PATCH] http://www.uw-madison.lkams.kernel.org/pub/mirrors/fink/distfiles/xscreensaver-4.11.tar.gz -rw-r--r-- 1 zblaxell zblaxell 3744413 Sep 3 2003 xscreensaver-4.11.tar.gz 35ed2910975fe5fd565f48519b90ba6c47726145 xscreensaver-4.11.tar.gz --- Makefile.in | 13 + README | 13 +- configure | 150 ++- configure.in | 64 +- driver/Makefile.in | 38 +- driver/XScreenSaver.ad.in | 18 +- driver/XScreenSaver_ad.h | 14 +- driver/demo-Gtk-support.c | 67 +- driver/demo-Gtk-widgets.c | 10 +- driver/demo-Gtk.c | 4 +- driver/demo-Xm-widgets.c | 114 +- driver/demo-Xm.c | 122 +- driver/lock.c | 40 +- driver/passwd-kerberos.c | 2 +- driver/passwd-pam.c | 17 +- driver/prefs.c | 6 +- driver/subprocs.c | 14 +- driver/xscreensaver-command.man | 2 +- driver/xscreensaver-demo.glade | 10 +- driver/xscreensaver-demo.glade2 | 10 +- driver/xscreensaver-demo.man | 2 +- driver/xscreensaver-getimage-file.man | 2 +- driver/xscreensaver-getimage-video.man | 2 +- driver/xscreensaver-getimage.man | 2 +- driver/xscreensaver.c | 2 +- driver/xscreensaver.h | 8 +- driver/xscreensaver.man | 2 +- hacks/Makefile.in | 6 +- hacks/bsod.c | 12 +- hacks/cloudlife.c | 75 +- hacks/cloudlife.man | 89 ++ hacks/config/README | 4 +- hacks/config/blocktube.xml | 32 + hacks/config/cloudlife.xml | 2 +- hacks/config/cubestorm.xml | 35 + hacks/config/engine.xml | 1 + hacks/config/flyingtoasters.xml | 2 + hacks/config/glknots.xml | 48 + hacks/config/glmatrix.xml | 52 + hacks/config/glslideshow.xml | 23 +- hacks/config/hypertorus.xml | 99 ++ hacks/config/xmatrix.xml | 7 +- hacks/glx/Makefile.in | 41 +- hacks/glx/blocktube.c | 419 +++++++ hacks/glx/blocktube.man | 73 ++ hacks/glx/cubestorm.c | 423 +++++++ hacks/glx/cubestorm.man | 77 ++ hacks/glx/dangerball.c | 4 +- hacks/glx/engine.c | 274 +++-- hacks/glx/engine.man | 4 + hacks/glx/flurry.h | 2 +- hacks/glx/fps.c | 43 +- hacks/glx/glknots.c | 467 ++++++++ hacks/glx/glknots.man | 81 ++ hacks/glx/glmatrix.c | 1021 ++++++++++++++++ hacks/glx/glmatrix.man | 95 ++ hacks/glx/glslideshow.c | 974 ++++++++++----- hacks/glx/glslideshow.man | 74 +- hacks/glx/glsnake.c | 10 +- hacks/glx/gltext.c | 4 +- hacks/glx/hypertorus.c | 820 +++++++++++++ hacks/glx/hypertorus.man | 167 +++ hacks/glx/jigglypuff.c | 28 +- hacks/glx/klein.c | 848 ++++++------- hacks/glx/molecule.c | 2 +- hacks/glx/tube.c | 76 +- hacks/glx/tube.h | 6 +- hacks/glx/xpm-ximage.c | 3 +- hacks/ifs.c | 6 +- hacks/images/blocktube.xpm | 320 +++++ hacks/images/matrix0.xbm | 1261 -------------------- hacks/images/matrix0.xpm | 387 ------ hacks/images/matrix0b.xbm | 308 ----- hacks/images/matrix0b.xpm | 201 ---- hacks/images/matrix3.xpm | 692 +++++++++++ hacks/moire.man | 4 +- hacks/screenhack.c | 10 +- hacks/sonar.c | 55 +- hacks/whirlygig.c | 11 +- hacks/xlockmore.h | 6 +- hacks/xmatrix.c | 607 ++++++---- hacks/xmatrix.man | 23 +- po/POTFILES.in | 7 +- po/es.po | 4 + po/ja.po | 4 + po/ko.po | 4 + utils/Makefile.in | 1 + utils/images/screensaver-cmndln.png | Bin 0 -> 1040 bytes utils/images/screensaver-cmndln.xpm | 357 ------ utils/images/screensaver-colorselector.png | Bin 0 -> 1104 bytes utils/images/screensaver-colorselector.xpm | 250 ---- utils/images/screensaver-diagnostic.png | Bin 0 -> 1307 bytes utils/images/screensaver-diagnostic.xpm | 296 ----- utils/images/screensaver-locking.png | Bin 0 -> 944 bytes utils/images/screensaver-locking.xpm | 206 ---- utils/images/screensaver-power.png | Bin 0 -> 973 bytes utils/images/screensaver-power.xpm | 230 ---- utils/images/screensaver-snap.png | Bin 0 -> 1272 bytes utils/images/screensaver-snap.xpm | 227 ---- utils/version.h | 2 +- xscreensaver.lsm | 18 +- xscreensaver.lsm.sh | 2 +- xscreensaver.spec | 6 +- 103 files changed, 7634 insertions(+), 5142 deletions(-) create mode 100644 hacks/cloudlife.man create mode 100644 hacks/config/blocktube.xml create mode 100644 hacks/config/cubestorm.xml create mode 100644 hacks/config/glknots.xml create mode 100644 hacks/config/glmatrix.xml create mode 100644 hacks/config/hypertorus.xml create mode 100644 hacks/glx/blocktube.c create mode 100644 hacks/glx/blocktube.man create mode 100644 hacks/glx/cubestorm.c create mode 100644 hacks/glx/cubestorm.man create mode 100644 hacks/glx/glknots.c create mode 100644 hacks/glx/glknots.man create mode 100644 hacks/glx/glmatrix.c create mode 100644 hacks/glx/glmatrix.man create mode 100644 hacks/glx/hypertorus.c create mode 100644 hacks/glx/hypertorus.man create mode 100644 hacks/images/blocktube.xpm delete mode 100644 hacks/images/matrix0.xbm delete mode 100644 hacks/images/matrix0.xpm delete mode 100644 hacks/images/matrix0b.xbm delete mode 100644 hacks/images/matrix0b.xpm create mode 100644 hacks/images/matrix3.xpm create mode 100644 utils/images/screensaver-cmndln.png delete mode 100644 utils/images/screensaver-cmndln.xpm create mode 100644 utils/images/screensaver-colorselector.png delete mode 100644 utils/images/screensaver-colorselector.xpm create mode 100644 utils/images/screensaver-diagnostic.png delete mode 100644 utils/images/screensaver-diagnostic.xpm create mode 100644 utils/images/screensaver-locking.png delete mode 100644 utils/images/screensaver-locking.xpm create mode 100644 utils/images/screensaver-power.png delete mode 100644 utils/images/screensaver-power.xpm create mode 100644 utils/images/screensaver-snap.png delete mode 100644 utils/images/screensaver-snap.xpm diff --git a/Makefile.in b/Makefile.in index 5711b063..f6f2efb5 100644 --- a/Makefile.in +++ b/Makefile.in @@ -155,6 +155,10 @@ bump-version:: echo "overwrote $$SRC"; \ ls -lFd $$SRC +bump_version:: bump-version +tick-version:: bump-version +tick_version:: bump-version + update_spec_version:: @S=$(srcdir)/xscreensaver.spec ; \ U=$(srcdir)/utils/version.h ; \ @@ -307,3 +311,12 @@ www:: fi ; \ \ cvs commit -m "$$VERS" + +count:: + @ \ + echo -n "Current hack count: " ; \ + ( ( cd hacks; make -s INSTALL=true install-program install-scripts ) ; \ + ( cd hacks/glx; make -s INSTALL=true install-program ) ) | \ + grep true | \ + grep -v helper | \ + wc -l diff --git a/README b/README index 9f7aa97a..7f656b94 100644 --- a/README +++ b/README @@ -59,7 +59,7 @@ there's no need to recompile or reinstall anything. Along with the xscreensaver daemon itself, this package also includes numerous graphics hacks for use as screensavers. There is nothing magic about these: they are just programs that draw on the root window. -More than 150 such programs are included. For details, see the +More than 160 such programs are included. For details, see the xscreensaver web page, or the enclosed manual pages. The latest version of xscreensaver is always available on the web at @@ -70,12 +70,21 @@ the XScreenSaver FAQ about that: http://www.jwz.org/xscreensaver/faq.html ============ +Changes since 4.10: * New hacks, `hypertorus', `cubestorm', `glknots', + `blocktube', and `glmatrix'. + * Updates to `cloudlife', `engine', `xmatrix', and + `sonar'. + * Rewrote `glslideshow': it should work on somewhat + wimpier video cards now. + * Various portability tweaks. Changes since 4.09: * New hacks, `cloudlife' and `klein'. * Added Apple ][+, HPUX, and OS/390 sessions to BSOD. * Added some Matrix Reloaded text to `xmatrix'. * Updates to `webcollage', `eruption', `jigglypuff', `metaballs', and `endgame'. - * Completely ignore the `memoryLimit' setting now. + * Completely ignore the `memoryLimit' setting now, + since it was still causing people GL grief. + * Various minor fixes. Changes since 4.08: * New hacks, `flyingtoasters', `bouncingcow', `jigglypuff', and `glslideshow'. * More models in `engine'. diff --git a/configure b/configure index a3ee8c5d..fc5b9fdd 100755 --- a/configure +++ b/configure @@ -6050,7 +6050,7 @@ case "$host" in # if test -f /usr/dt/include/Xm/Xm.h ; then X_CFLAGS="$X_CFLAGS -I/usr/dt/include" - X_LIBS="$X_LIBS -L/usr/dt/lib -R:/usr/dt/lib" + MOTIF_LIBS="$MOTIF_LIBS -L/usr/dt/lib -R/usr/dt/lib" # Some versions of Slowlaris Motif require -lgen. But not all. Why? echo "$as_me:$LINENO: checking for regcmp in -lgen" >&5 @@ -6109,7 +6109,7 @@ fi echo "$as_me:$LINENO: result: $ac_cv_lib_gen_regcmp" >&5 echo "${ECHO_T}$ac_cv_lib_gen_regcmp" >&6 if test $ac_cv_lib_gen_regcmp = yes; then - X_LIBS="$X_LIBS -lgen" + MOTIF_LIBS="$MOTIF_LIBS -lgen" fi fi @@ -9362,6 +9362,7 @@ else #line $LINENO "configure" #include "confdefs.h" #include + #include #include _ACEOF @@ -11151,16 +11152,115 @@ _ACEOF fi if test "$ac_cv_kerberos5" = yes ; then - have_kerberos=yes - have_kerberos5=yes - cat >>confdefs.h <<\_ACEOF + + # Andrew Snare wrote: + # + # You were assuming that if kerberosV (krb5) was found, then kerberosIV + # (krb4) was also available. This turns out not to be the case with + # mit-krb-1.2.7; apparently backwards-compatibility with KerberosIV + # is optional. + # + # So, disable kerberosV support if libkrb4 can't be found. + # This is not the best solution, but it makes the compile not fail. + # + + ac_save_CPPFLAGS="$CPPFLAGS" + ac_save_LDFLAGS="$LDFLAGS" +# ac_save_LIBS="$LIBS" + + if test \! -z "$includedir" ; then + CPPFLAGS="$CPPFLAGS -I$includedir" + fi + # note: $X_CFLAGS includes $x_includes + CPPFLAGS="$CPPFLAGS $X_CFLAGS" + + if test \! -z "$libdir" ; then + LDFLAGS="$LDFLAGS -L$libdir" + fi + # note: $X_LIBS includes $x_libraries + LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" + + echo "$as_me:$LINENO: checking for krb_get_tf_realm in -lkrb4" >&5 +echo $ECHO_N "checking for krb_get_tf_realm in -lkrb4... $ECHO_C" >&6 +if test "${ac_cv_lib_krb4_krb_get_tf_realm+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lkrb4 $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char krb_get_tf_realm (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +krb_get_tf_realm (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_krb4_krb_get_tf_realm=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_krb4_krb_get_tf_realm=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_krb4_krb_get_tf_realm" >&5 +echo "${ECHO_T}$ac_cv_lib_krb4_krb_get_tf_realm" >&6 +if test $ac_cv_lib_krb4_krb_get_tf_realm = yes; then + have_kerberos=yes +else + have_kerberos=no +fi + + CPPFLAGS="$ac_save_CPPFLAGS" + LDFLAGS="$ac_save_LDFLAGS" +# LIBS="$ac_save_LIBS" + + if test "$have_kerberos" = yes ; then + have_kerberos5=yes + cat >>confdefs.h <<\_ACEOF #define HAVE_KERBEROS 1 _ACEOF - cat >>confdefs.h <<\_ACEOF + cat >>confdefs.h <<\_ACEOF #define HAVE_KERBEROS5 1 _ACEOF + else + have_kerberos5=no + { echo "$as_me:$LINENO: WARNING: Cannot find compat lib (libkrb4) needed to use Kerberos 5" >&5 +echo "$as_me: WARNING: Cannot find compat lib (libkrb4) needed to use Kerberos 5" >&2;} + fi + fi if test "$have_kerberos5" = yes ; then @@ -12684,7 +12784,6 @@ done # the new way... # run pkg-config based tests. # - pkgs='' pkg_check_version() { if test "$ok" = yes ; then @@ -12714,11 +12813,15 @@ echo "${ECHO_T}no" >&6 fi } + echo "$as_me:$LINENO: result: checking for GTK 2.x with pkg-config based tests..." >&5 +echo "${ECHO_T}checking for GTK 2.x with pkg-config based tests..." >&6 + ok="yes" - pkg_check_version gtk+-2.0 2.0.1 ; ac_gtk_version_string="$vers" - pkg_check_version gmodule-2.0 2.0.0 - pkg_check_version libxml-2.0 2.4.6 - pkg_check_version libglade-2.0 1.99.0 + pkg_check_version gtk+-2.0 2.0.1 ; ac_gtk_version_string="$vers" + pkg_check_version gmodule-2.0 2.0.0 + pkg_check_version libxml-2.0 2.4.6 + pkg_check_version libglade-2.0 1.99.0 +# pkg_check_version gdk_pixbuf 0.1 have_gtk="$ok" if test "$have_gtk" = yes; then @@ -12738,10 +12841,14 @@ _ACEOF # # we don't have GTK 2. Let's look for GTK 1. # + echo "$as_me:$LINENO: result: checking for GTK 1.x with pkg-config based tests..." >&5 +echo "${ECHO_T}checking for GTK 1.x with pkg-config based tests..." >&6 + pkgs='' ok="yes" - pkg_check_version gtk+ 1.2 ; ac_gtk_version_string="$vers" - pkg_check_version glib 1.0 + pkg_check_version gtk+ 1.2 ; ac_gtk_version_string="$vers" + pkg_check_version glib 1.0 + pkg_check_version gdk_pixbuf 0.1 have_gtk="$ok" # Now check for Gnome... @@ -12803,6 +12910,8 @@ echo "${ECHO_T}$ac_cv_gtk_config_libs" >&6 # the old way... # run {gnome,gtk}-config based tests. # + echo "$as_me:$LINENO: result: checking for GTK 1.x with gtk-config based tests..." >&5 +echo "${ECHO_T}checking for GTK 1.x with gtk-config based tests..." >&6 for ac_prog in glib12-config glib-config do @@ -14760,7 +14869,7 @@ if test "${ac_cv_mesagl_version_string+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat > conftest.$ac_ext < #ifndef MESA_MAJOR_VERSION @@ -15668,6 +15777,8 @@ if test "$with_gdk_pixbuf" = yes; then # # we don't have Gtk; or we have Gtk 2.x. Check for pixbuf 2.x. # + echo "$as_me:$LINENO: result: checking for gdk_pixbuf 2.x with gtk-config based tests..." >&5 +echo "${ECHO_T}checking for gdk_pixbuf 2.x with gtk-config based tests..." >&6 pkg_check_version gdk-pixbuf-2.0 2.0.0 pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0 have_gdk_pixbuf="$ok" @@ -15682,8 +15793,10 @@ if test "$with_gdk_pixbuf" = yes; then if test "$have_gdk_pixbuf2" = no; then pkgs='' ok="yes" - pkg_check_version gdk-pixbuf 0.0 - pkg_check_version gdk-pixbuf-xlib 0.0 + echo "$as_me:$LINENO: result: checking for gdk_pixbuf 1.x with gtk-config based tests..." >&5 +echo "${ECHO_T}checking for gdk_pixbuf 1.x with gtk-config based tests..." >&6 + pkg_check_version gdk_pixbuf 0.0 + pkg_check_version gdk_pixbuf_xlib 0.0 have_gdk_pixbuf="$ok" fi fi @@ -15722,6 +15835,9 @@ echo "${ECHO_T}$ac_cv_gdk_pixbuf_config_libs" >&6 # pkg-config exists, but doesn't know about pixbuf. # + echo "$as_me:$LINENO: result: checking for gdk_pixbuf with gdk-pixbuf-config based tests..." >&5 +echo "${ECHO_T}checking for gdk_pixbuf with gdk-pixbuf-config based tests..." >&6 + # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then # look in /foo/bin/ for for gdk-pixbuf-config. # @@ -19637,7 +19753,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 (150+ different executables) will" + echo " The various graphics demos (160+ different executables) will" echo " be installed in ${HACKDIR}/." echo "" echo " If you would prefer the demos to be installed elsewhere," diff --git a/configure.in b/configure.in index a2337930..411df4ac 100644 --- a/configure.in +++ b/configure.in @@ -617,10 +617,10 @@ AC_DEFUN(AC_X_RANDOM_PATHS, # if test -f /usr/dt/include/Xm/Xm.h ; then X_CFLAGS="$X_CFLAGS -I/usr/dt/include" - X_LIBS="$X_LIBS -L/usr/dt/lib -R:/usr/dt/lib" + MOTIF_LIBS="$MOTIF_LIBS -L/usr/dt/lib -R/usr/dt/lib" # Some versions of Slowlaris Motif require -lgen. But not all. Why? - AC_CHECK_LIB(gen, regcmp, [X_LIBS="$X_LIBS -lgen"]) + AC_CHECK_LIB(gen, regcmp, [MOTIF_LIBS="$MOTIF_LIBS -lgen"]) fi ;; @@ -1180,7 +1180,8 @@ if test "$with_dpms" = yes; then # first check for dpms.h AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes],, - [#include ]) + [#include + #include ]) # if that succeeded, then check for the DPMS code in the libraries if test "$have_dpms" = yes; then @@ -1591,10 +1592,29 @@ if test "$enable_locking" = yes -a "$with_kerberos" = yes; then fi if test "$ac_cv_kerberos5" = yes ; then - have_kerberos=yes - have_kerberos5=yes - AC_DEFINE(HAVE_KERBEROS) - AC_DEFINE(HAVE_KERBEROS5) + + # Andrew Snare wrote: + # + # You were assuming that if kerberosV (krb5) was found, then kerberosIV + # (krb4) was also available. This turns out not to be the case with + # mit-krb-1.2.7; apparently backwards-compatibility with KerberosIV + # is optional. + # + # So, disable kerberosV support if libkrb4 can't be found. + # This is not the best solution, but it makes the compile not fail. + # + AC_CHECK_X_LIB(krb4, krb_get_tf_realm, + [have_kerberos=yes], + [have_kerberos=no]) + if test "$have_kerberos" = yes ; then + have_kerberos5=yes + AC_DEFINE(HAVE_KERBEROS) + AC_DEFINE(HAVE_KERBEROS5) + else + have_kerberos5=no + AC_MSG_WARN([Cannot find compat lib (libkrb4) needed to use Kerberos 5]) + fi + fi if test "$have_kerberos5" = yes ; then @@ -1979,7 +1999,6 @@ if test "$with_gtk" = yes; then # the new way... # run pkg-config based tests. # - pkgs='' pkg_check_version() { if test "$ok" = yes ; then @@ -2005,11 +2024,14 @@ if test "$with_gtk" = yes; then fi } + AC_MSG_RESULT(checking for GTK 2.x with pkg-config based tests...) + ok="yes" - pkg_check_version gtk+-2.0 2.0.1 ; ac_gtk_version_string="$vers" - pkg_check_version gmodule-2.0 2.0.0 - pkg_check_version libxml-2.0 2.4.6 - pkg_check_version libglade-2.0 1.99.0 + pkg_check_version gtk+-2.0 2.0.1 ; ac_gtk_version_string="$vers" + pkg_check_version gmodule-2.0 2.0.0 + pkg_check_version libxml-2.0 2.4.6 + pkg_check_version libglade-2.0 1.99.0 +# pkg_check_version gdk_pixbuf 0.1 have_gtk="$ok" if test "$have_gtk" = yes; then @@ -2026,10 +2048,13 @@ if test "$with_gtk" = yes; then # # we don't have GTK 2. Let's look for GTK 1. # + AC_MSG_RESULT(checking for GTK 1.x with pkg-config based tests...) + pkgs='' ok="yes" - pkg_check_version gtk+ 1.2 ; ac_gtk_version_string="$vers" - pkg_check_version glib 1.0 + pkg_check_version gtk+ 1.2 ; ac_gtk_version_string="$vers" + pkg_check_version glib 1.0 + pkg_check_version gdk_pixbuf 0.1 have_gtk="$ok" # Now check for Gnome... @@ -2074,6 +2099,7 @@ if test "$with_gtk" = yes; then # the old way... # run {gnome,gtk}-config based tests. # + AC_MSG_RESULT(checking for GTK 1.x with gtk-config based tests...) AC_PATH_PROGS(glib_config, glib12-config glib-config,, $gtk_path) AC_PATH_PROGS(gtk_config, gtk12-config gtk-config,, $gtk_path) @@ -2893,6 +2919,7 @@ if test "$with_gdk_pixbuf" = yes; then # # we don't have Gtk; or we have Gtk 2.x. Check for pixbuf 2.x. # + AC_MSG_RESULT(checking for gdk_pixbuf 2.x with gtk-config based tests...) pkg_check_version gdk-pixbuf-2.0 2.0.0 pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0 have_gdk_pixbuf="$ok" @@ -2907,8 +2934,9 @@ if test "$with_gdk_pixbuf" = yes; then if test "$have_gdk_pixbuf2" = no; then pkgs='' ok="yes" - pkg_check_version gdk-pixbuf 0.0 - pkg_check_version gdk-pixbuf-xlib 0.0 + AC_MSG_RESULT(checking for gdk_pixbuf 1.x with gtk-config based tests...) + pkg_check_version gdk_pixbuf 0.0 + pkg_check_version gdk_pixbuf_xlib 0.0 have_gdk_pixbuf="$ok" fi fi @@ -2933,6 +2961,8 @@ if test "$with_gdk_pixbuf" = yes; then # pkg-config exists, but doesn't know about pixbuf. # + AC_MSG_RESULT(checking for gdk_pixbuf with gdk-pixbuf-config based tests...) + # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then # look in /foo/bin/ for for gdk-pixbuf-config. # @@ -4060,7 +4090,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 (150+ different executables) will" + echo " The various graphics demos (160+ different executables) will" echo " be installed in ${HACKDIR}/." echo "" echo " If you would prefer the demos to be installed elsewhere," diff --git a/driver/Makefile.in b/driver/Makefile.in index 4e0977c6..6ef65ed9 100644 --- a/driver/Makefile.in +++ b/driver/Makefile.in @@ -31,6 +31,7 @@ GNOME_PANELDIR1 = $(GNOME_DATADIR)/gnome/apps/Settings/Desktop GNOME_PANELDIR2 = $(GNOME_DATADIR)/applications GNOME_PANELDIR = @GNOME_PANELDIR@ GLADE_DATADIR = @GLADE_DATADIR@ +GNOME_ICONDIR = $(GNOME_DATADIR)/pixmaps GNOME_BINDIR = $(bindir) HACK_CONF_DIR = @HACK_CONF_DIR@ @@ -141,7 +142,7 @@ GL_LIBS = @SAVER_GL_LIBS@ ICON_SRC = $(UTILS_SRC)/images LOGO = $(ICON_SRC)/logo-50.xpm -GTK_ICONS = $(ICON_SRC)/screensaver-*.xpm +GTK_ICONS = $(ICON_SRC)/screensaver-*.png DEMO_UTIL_SRCS = $(UTILS_SRC)/resources.c $(UTILS_SRC)/usleep.c \ $(UTILS_SRC)/visual.c @@ -556,20 +557,27 @@ install-gnome:: screensaver-properties-capplet fi # xscreensaver.xpm +# into /usr/share/pixmaps/ install-gnome:: $(LOGO) - @if [ "$(GLADE_DATADIR)" != "" ]; then \ - if [ ! -d "$(install_prefix)$(GLADE_DATADIR)" ]; then \ - echo $(INSTALL_DIRS) "$(install_prefix)$(GLADE_DATADIR)" ;\ - $(INSTALL_DIRS) "$(install_prefix)$(GLADE_DATADIR)" ;\ + @if [ "$(GNOME_DATADIR)" != "" ]; then \ + if [ ! -d "$(install_prefix)$(GNOME_ICONDIR)" ]; then \ + echo $(INSTALL_DIRS) "$(install_prefix)$(GNOME_ICONDIR)" ;\ + $(INSTALL_DIRS) "$(install_prefix)$(GNOME_ICONDIR)" ;\ fi ;\ target=xscreensaver.xpm ;\ echo $(INSTALL_DATA) $(LOGO) \ - $(install_prefix)$(GLADE_DATADIR)/$$target ;\ + $(install_prefix)$(GNOME_ICONDIR)/$$target ;\ $(INSTALL_DATA) $(LOGO) \ - $(install_prefix)$(GLADE_DATADIR)/$$target ;\ + $(install_prefix)$(GNOME_ICONDIR)/$$target ;\ fi -# ../utils/images/screensaver-*.xpm +# ../utils/images/screensaver-*.png +# into /usr/share/xscreensaver/ +# +# Should these really go in GLADE_DATADIR (/usr/share/xscreensaver/) +# or should they instead go in GNOME_ICONDIR (/usr/share/pixmaps/)? +# Does it matter? +# install-gnome:: @if [ "$(GLADE_DATADIR)" != "" ]; then \ if [ ! -d "$(install_prefix)$(GLADE_DATADIR)" ]; then \ @@ -586,6 +594,7 @@ install-gnome:: fi # xscreensaver-demo.glade2 +# into /usr/share/xscreensaver/ install-gnome:: xscreensaver-demo.glade2 @if [ "$(GLADE_DATADIR)" != "" ]; then \ if [ ! -d "$(install_prefix)$(GLADE_DATADIR)" ]; then \ @@ -614,6 +623,7 @@ install-gnome:: xscreensaver-demo.glade2 # screensaver-properties.desktop +# into /usr/share/gnome/apps/Settings/Desktop/ uninstall-gnome:: @if [ "$(GNOME_DATADIR)" != "" ]; then \ f=screensaver-properties.desktop ;\ @@ -628,6 +638,7 @@ uninstall-gnome:: fi # screensaver-properties-capplet +# into /usr/X11R6/bin/ uninstall-gnome:: @if [ "$(GNOME_DATADIR)" != "" ]; then \ program=screensaver-properties-capplet ;\ @@ -636,14 +647,16 @@ uninstall-gnome:: fi # xscreensaver.xpm +# into /usr/share/pixmaps/ uninstall-gnome:: - @if [ "$(GLADE_DATADIR)" != "" ]; then \ + @if [ "$(GNOME_ICONDIR)" != "" ]; then \ target=xscreensaver.xpm ;\ - echo rm -f $(install_prefix)$(GLADE_DATADIR)/$$target ;\ - rm -f $(install_prefix)$(GLADE_DATADIR)/$$target ;\ + echo rm -f $(install_prefix)$(GNOME_ICONDIR)/$$target ;\ + rm -f $(install_prefix)$(GNOME_ICONDIR)/$$target ;\ fi -# xscreensaver.xpm +# ../utils/images/screensaver-*.png +# into /usr/share/xscreensaver/ uninstall-gnome:: @if [ "$(GLADE_DATADIR)" != "" ]; then \ for target in $(GTK_ICONS) ; do \ @@ -653,6 +666,7 @@ uninstall-gnome:: done ;\ fi +# xscreensaver.kss install-kde: @src="xscreensaver.kss" ; \ if [ "$$KDEDIR" != "" ]; then \ diff --git a/driver/XScreenSaver.ad.in b/driver/XScreenSaver.ad.in index ff59ab96..47c798f0 100644 --- a/driver/XScreenSaver.ad.in +++ b/driver/XScreenSaver.ad.in @@ -4,8 +4,8 @@ ! a screen saver and locker for the X window system ! by Jamie Zawinski ! -! version 4.10 -! 20-May-2003 +! version 4.11 +! 23-Jun-2003 ! ! See "man xscreensaver" for more info. The latest version is always ! available at http://www.jwz.org/xscreensaver/ @@ -348,6 +348,12 @@ @GL_KLUDGE@ GL: bouncingcow -root \n\ @GL_KLUDGE@ GL: jigglypuff -root -random \n\ @GL_KLUDGE@ GL: klein -root -random \n\ +@GL_KLUDGE@ GL: "HyperTorus (striped)" hypertorus -root \n\ +@GL_KLUDGE@ GL: "HyperTorus (solid)" hypertorus -root -solid -transp \n\ +@GL_KLUDGE@ GL: glmatrix -root \n\ +@GL_KLUDGE@ GL: cubestorm -root \n\ +@GL_KLUDGE@ GL: glknots -root \n\ +@GL_KLUDGE@ GL: blocktube -root \n\ - GL: glslideshow -root \n\ \ - xdaliclock -root -builtin3 -cycle \n\ @@ -620,7 +626,6 @@ XScreenSaver*doc.fontList: *-helvetica-medium-r-*-*-*-100-*-*-*-iso8859-1 *hacks.vidwhacker.name: VidWhacker *hacks.morph3d.name: Morph3D *hacks.bubble3d.name: Bubble3D -*hacks.glplanet.name: GLPlanet *hacks.sierpinski3d.name: Sierpinski3D *hacks.gflux.name: GFlux *hacks.xrayswarm.name: XRaySwarm @@ -628,12 +633,9 @@ XScreenSaver*doc.fontList: *-helvetica-medium-r-*-*-*-100-*-*-*-iso8859-1 *hacks.rotzoomer.name: RotZoomer *hacks.stonerview.name: StonerView *hacks.starwars.name: StarWars -*hacks.glblur.name: GLBlur -*hacks.gltext.name: GLText *hacks.dangerball.name: DangerBall *hacks.whirlygig.name: WhirlyGig *hacks.speedmine.name: SpeedMine -*hacks.glsnake.name: GLSnake *hacks.glforestfire.name: GLForestFire *hacks.sballs.name: SBalls *hacks.xdaliclock.name: XDaliClock @@ -646,7 +648,9 @@ XScreenSaver*doc.fontList: *-helvetica-medium-r-*-*-*-100-*-*-*-iso8859-1 *hacks.flyingtoasters.name: FlyingToasters *hacks.bouncingcow.name: BouncingCow *hacks.jigglypuff.name: JigglyPuff -*hacks.glslideshow.name: GLSlideshow +*hacks.hypertorus.name: HyperTorus +*hacks.cubestorm.name: CubeStorm +*hacks.blocktube.name: BlockTube ! obsolete, but still used by xscreensaver-demo-Xm. *hacks.documentation.isInstalled: True diff --git a/driver/XScreenSaver_ad.h b/driver/XScreenSaver_ad.h index 67450449..5a6ffa97 100644 --- a/driver/XScreenSaver_ad.h +++ b/driver/XScreenSaver_ad.h @@ -250,6 +250,12 @@ GL: bouncingcow -root \\n\ GL: jigglypuff -root -random \\n\ GL: klein -root -random \\n\ + GL: \"HyperTorus (striped)\" hypertorus -root \\n\ + GL: \"HyperTorus (solid)\" hypertorus -root -solid -transp \\n\ + GL: glmatrix -root \\n\ + GL: cubestorm -root \\n\ + GL: glknots -root \\n\ + GL: blocktube -root \\n\ - GL: glslideshow -root \\n\ \ - xdaliclock -root -builtin3 -cycle \\n\ @@ -431,7 +437,6 @@ "*hacks.vidwhacker.name: VidWhacker", "*hacks.morph3d.name: Morph3D", "*hacks.bubble3d.name: Bubble3D", -"*hacks.glplanet.name: GLPlanet", "*hacks.sierpinski3d.name: Sierpinski3D", "*hacks.gflux.name: GFlux", "*hacks.xrayswarm.name: XRaySwarm", @@ -439,12 +444,9 @@ "*hacks.rotzoomer.name: RotZoomer", "*hacks.stonerview.name: StonerView", "*hacks.starwars.name: StarWars", -"*hacks.glblur.name: GLBlur", -"*hacks.gltext.name: GLText", "*hacks.dangerball.name: DangerBall", "*hacks.whirlygig.name: WhirlyGig", "*hacks.speedmine.name: SpeedMine", -"*hacks.glsnake.name: GLSnake", "*hacks.glforestfire.name: GLForestFire", "*hacks.sballs.name: SBalls", "*hacks.xdaliclock.name: XDaliClock", @@ -457,5 +459,7 @@ "*hacks.flyingtoasters.name: FlyingToasters", "*hacks.bouncingcow.name: BouncingCow", "*hacks.jigglypuff.name: JigglyPuff", -"*hacks.glslideshow.name: GLSlideshow", +"*hacks.hypertorus.name: HyperTorus", +"*hacks.cubestorm.name: CubeStorm", +"*hacks.blocktube.name: BlockTube", "*hacks.documentation.isInstalled: True", diff --git a/driver/demo-Gtk-support.c b/driver/demo-Gtk-support.c index ce5ea475..881129c4 100644 --- a/driver/demo-Gtk-support.c +++ b/driver/demo-Gtk-support.c @@ -1,5 +1,6 @@ /* * DO NOT EDIT THIS FILE - it is generated by Glade. + WARNING: I did edit this file! Be careful! -jwz */ #ifdef HAVE_CONFIG_H @@ -15,6 +16,16 @@ #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 +# else /* !HAVE_GTK2 */ +# include +# 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); @@ -86,16 +97,19 @@ add_pixmap_directory (const gchar *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; - GdkPixmap *gdkpixmap; - GdkBitmap *mask; - GtkWidget *pixmap; - GList *elem; + GdkColormap *colormap = 0; + GdkPixmap *gdkpixmap = 0; + GdkBitmap *mask = 0; + GtkWidget *pixmap = 0; + GList *elem = 0; if (!filename || !filename[0]) return create_dummy_pixmap (widget); @@ -123,6 +137,9 @@ create_pixmap (GtkWidget *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) @@ -131,10 +148,50 @@ create_pixmap (GtkWidget *widget, 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; } diff --git a/driver/demo-Gtk-widgets.c b/driver/demo-Gtk-widgets.c index 65a9d9ba..e2c9be77 100644 --- a/driver/demo-Gtk-widgets.c +++ b/driver/demo-Gtk-widgets.c @@ -718,7 +718,7 @@ create_xscreensaver_demo (void) 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.xpm"); + 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, @@ -807,7 +807,7 @@ create_xscreensaver_demo (void) 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.xpm"); + 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, @@ -953,7 +953,7 @@ create_xscreensaver_demo (void) 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.xpm"); + 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, @@ -1134,7 +1134,7 @@ create_xscreensaver_demo (void) 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.xpm"); + 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, @@ -1502,7 +1502,7 @@ create_xscreensaver_settings_dialog (void) gtk_widget_show (opt_table); gtk_container_add (GTK_CONTAINER (opt_notebook), opt_table); - cmd_logo = create_pixmap (xscreensaver_settings_dialog, "screensaver-cmndln.xpm"); + 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, diff --git a/driver/demo-Gtk.c b/driver/demo-Gtk.c index 1d7e91fd..b2620a4f 100644 --- a/driver/demo-Gtk.c +++ b/driver/demo-Gtk.c @@ -431,7 +431,8 @@ warning_dialog (GtkWidget *parent, const char *message, while (parent && !parent->window) parent = parent->parent; - if (!GTK_WIDGET (parent)->window) /* too early to pop up transient dialogs */ + if (!parent || + !GTK_WIDGET (parent)->window) /* too early to pop up transient dialogs */ { fprintf (stderr, "%s: too early for dialog?\n", progname); return; @@ -769,7 +770,6 @@ doc_menu_cb (GtkMenuItem *menuitem, gpointer user_data) sprintf (help_command + strlen(help_command), p->load_url_command, p->help_url, p->help_url); strcat (help_command, " ) &"); -fprintf(stderr, "## %s\n", help_command); system (help_command); free (help_command); } diff --git a/driver/demo-Xm-widgets.c b/driver/demo-Xm-widgets.c index 09199d9f..cbe33934 100644 --- a/driver/demo-Xm-widgets.c +++ b/driver/demo-Xm-widgets.c @@ -1,5 +1,5 @@ /* demo-Xm.c --- implements the interactive demo-mode and options dialogs. - * xscreensaver, Copyright (c) 1999 Jamie Zawinski + * xscreensaver, Copyright (c) 1999, 2003 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -70,7 +70,7 @@ tab_cb (Widget button, XtPointer client_data, XtPointer ignored) Cardinal nkids = 0; if (!tabber) abort(); - XtVaGetValues (tabber, XmNnumChildren, &nkids, XmNchildren, &kids, 0); + XtVaGetValues (tabber, XmNnumChildren, &nkids, XmNchildren, &kids, NULL); if (!kids) abort(); if (nkids > 0) XtUnmanageChildren (kids, nkids); @@ -105,7 +105,7 @@ create_xscreensaver_demo (Widget parent) XmNtopAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, - 0); + NULL); { Widget menu = 0, item = 0; @@ -128,7 +128,7 @@ create_xscreensaver_demo (Widget parent) item = XmCreateCascadeButtonGadget (menubar, menus[i]+1, av, ac); if (!strcmp (menus[i]+1, "help")) - XtVaSetValues(menubar, XmNmenuHelpWidget, item, 0); + XtVaSetValues(menubar, XmNmenuHelpWidget, item, NULL); } XtManageChild (item); } @@ -140,7 +140,7 @@ create_xscreensaver_demo (Widget parent) XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, menubar, - 0); + NULL); options_tab = XmCreatePushButtonGadget (form, "optionsTab", av, ac); XtVaSetValues (options_tab, @@ -150,7 +150,7 @@ create_xscreensaver_demo (Widget parent) XmNtopWidget, demo_tab, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, demo_tab, - 0); + NULL); hr = XmCreateSeparatorGadget (form, "hr", av, ac); XtVaSetValues (hr, @@ -158,7 +158,7 @@ create_xscreensaver_demo (Widget parent) XmNrightAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, demo_tab, - 0); + NULL); tabber = XmCreateForm (form, "folder", av, ac); XtVaSetValues (tabber, @@ -167,7 +167,7 @@ create_xscreensaver_demo (Widget parent) XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - 0); + NULL); demos = create_demos_page (tabber); options = create_options_page (tabber); @@ -234,7 +234,7 @@ create_demos_page (Widget parent) XmNtopAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - 0); + NULL); scroller = XmCreateScrolledWindow (form2, "scroller", av, ac); XtVaSetValues (scroller, @@ -242,7 +242,7 @@ create_demos_page (Widget parent) XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_WIDGET, - 0); + NULL); list = XmCreateList (scroller, "list", av, ac); buttonbox1 = XmCreateForm (form2, "buttonbox1", av, ac); @@ -250,22 +250,22 @@ create_demos_page (Widget parent) XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - 0); - XtVaSetValues (scroller, XmNbottomWidget, buttonbox1, 0); + NULL); + XtVaSetValues (scroller, XmNbottomWidget, buttonbox1, NULL); down = XmCreatePushButton (buttonbox1, "down", av, ac); XtVaSetValues (down, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - 0); + NULL); up = XmCreatePushButton (buttonbox1, "up", av, ac); XtVaSetValues (up, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, down, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - 0); + NULL); form3 = XmCreateForm (form1, "form3", av, ac); XtVaSetValues (form3, @@ -274,7 +274,7 @@ create_demos_page (Widget parent) XmNleftWidget, form2, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - 0); + NULL); frame = XmCreateFrame (form3, "frame", av, ac); ac = 0; @@ -287,7 +287,7 @@ create_demos_page (Widget parent) XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_WIDGET, - 0); + NULL); ac = 0; XtSetArg (av [ac], XmNchildType, XmFRAME_WORKAREA_CHILD); ac++; @@ -300,45 +300,45 @@ create_demos_page (Widget parent) XmNwordWrap, TRUE, XmNeditMode, XmMULTI_LINE_EDIT, XmNshadowThickness, 0, - 0); + NULL); cmd_label = XmCreateLabelGadget (form3, "cmdLabel", av, ac); XtVaSetValues (cmd_label, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_WIDGET, - 0); - XtVaSetValues (frame, XmNbottomWidget, cmd_label, 0); + NULL); + XtVaSetValues (frame, XmNbottomWidget, cmd_label, NULL); cmd_text = XmCreateTextField (form3, "cmdText", av, ac); XtVaSetValues (cmd_text, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_WIDGET, - 0); - XtVaSetValues (cmd_label, XmNbottomWidget, cmd_text, 0); + NULL); + XtVaSetValues (cmd_label, XmNbottomWidget, cmd_text, NULL); form4 = XmCreateForm (form3, "form4", av, ac); XtVaSetValues (form4, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_WIDGET, - 0); - XtVaSetValues (cmd_text, XmNbottomWidget, form4, 0); + NULL); + XtVaSetValues (cmd_text, XmNbottomWidget, form4, NULL); enabled = XmCreateToggleButtonGadget (form4, "enabled", av, ac); XtVaSetValues (enabled, XmNtopAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - 0); + NULL); vis_label = XmCreateLabelGadget (form4, "visLabel", av, ac); XtVaSetValues (vis_label, XmNtopAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, enabled, XmNbottomAttachment, XmATTACH_FORM, - 0); + NULL); #ifdef HAVE_XMCOMBOBOX { Widget list; @@ -352,8 +352,8 @@ create_demos_page (Widget parent) XmComboBoxAddItem (combo, xs, 0, False); XmStringFree (xs); } - XtVaGetValues (combo, XmNlist, &list, 0); - XtVaSetValues (list, XmNvisibleItemCount, i, 0); + XtVaGetValues (combo, XmNlist, &list, NULL); + XtVaSetValues (list, XmNvisibleItemCount, i, NULL); } #else /* !HAVE_XMCOMBOBOX */ { @@ -384,36 +384,36 @@ create_demos_page (Widget parent) XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, vis_label, XmNbottomAttachment, XmATTACH_FORM, - 0); + NULL); hr = XmCreateSeparatorGadget (form3, "hr", av, ac); XtVaSetValues (hr, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_WIDGET, - 0); - XtVaSetValues (form4, XmNbottomWidget, hr, 0); + NULL); + XtVaSetValues (form4, XmNbottomWidget, hr, NULL); buttonbox2 = XmCreateForm (form3, "buttonbox2", av, ac); XtVaSetValues (buttonbox2, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - 0); - XtVaSetValues (hr, XmNbottomWidget, buttonbox2, 0); + NULL); + XtVaSetValues (hr, XmNbottomWidget, buttonbox2, NULL); demo = XmCreatePushButtonGadget (buttonbox2, "demo", av, ac); XtVaSetValues (demo, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - 0); + NULL); man = XmCreatePushButtonGadget (buttonbox2, "man", av, ac); XtVaSetValues (man, XmNrightAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - 0); + NULL); XtManageChild (demo); XtManageChild (man); @@ -448,7 +448,7 @@ create_demos_page (Widget parent) XmNrightAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - 0); + NULL); return form1; } @@ -654,7 +654,7 @@ create_options_page (Widget parent) XmNrightAttachment, XmATTACH_WIDGET, XmNrightOffset, 4, XmNrightWidget, timeout_text, - 0); + NULL); XtVaSetValues (cycle_label, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, @@ -668,7 +668,7 @@ create_options_page (Widget parent) XmNrightAttachment, XmATTACH_WIDGET, XmNrightOffset, 4, XmNrightWidget, cycle_text, - 0); + NULL); XtVaSetValues (fade_seconds_label, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, @@ -682,7 +682,7 @@ create_options_page (Widget parent) XmNrightAttachment, XmATTACH_WIDGET, XmNrightOffset, 4, XmNrightWidget, fade_text, - 0); + NULL); XtVaSetValues (fade_ticks_label, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, @@ -696,7 +696,7 @@ create_options_page (Widget parent) XmNrightAttachment, XmATTACH_WIDGET, XmNrightOffset, 4, XmNrightWidget, fade_ticks_text, - 0); + NULL); XtVaSetValues (lock_label, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, @@ -710,7 +710,7 @@ create_options_page (Widget parent) XmNrightAttachment, XmATTACH_WIDGET, XmNrightOffset, 4, XmNrightWidget, lock_timeout_text, - 0); + NULL); XtVaSetValues (passwd_label, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, @@ -724,14 +724,14 @@ create_options_page (Widget parent) XmNrightAttachment, XmATTACH_WIDGET, XmNrightOffset, 4, XmNrightWidget, passwd_timeout_text, - 0); + NULL); XtVaSetValues (timeout_text, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 4, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 141, - 0); + NULL); XtVaSetValues (cycle_text, XmNtopAttachment, XmATTACH_WIDGET, @@ -740,7 +740,7 @@ create_options_page (Widget parent) XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET, XmNleftOffset, 0, XmNleftWidget, timeout_text, - 0); + NULL); XtVaSetValues (fade_text, XmNtopAttachment, XmATTACH_WIDGET, @@ -749,7 +749,7 @@ create_options_page (Widget parent) XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET, XmNleftOffset, 0, XmNleftWidget, cycle_text, - 0); + NULL); XtVaSetValues (fade_ticks_text, XmNtopAttachment, XmATTACH_WIDGET, @@ -758,7 +758,7 @@ create_options_page (Widget parent) XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET, XmNleftOffset, 0, XmNleftWidget, fade_text, - 0); + NULL); XtVaSetValues (lock_timeout_text, XmNtopAttachment, XmATTACH_WIDGET, @@ -767,7 +767,7 @@ create_options_page (Widget parent) XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET, XmNleftOffset, 0, XmNleftWidget, fade_ticks_text, - 0); + NULL); XtVaSetValues (passwd_timeout_text, XmNtopAttachment, XmATTACH_WIDGET, @@ -776,7 +776,7 @@ create_options_page (Widget parent) XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET, XmNleftOffset, 0, XmNleftWidget, lock_timeout_text, - 0); + NULL); XtVaSetValues (verbose_toggle, XmNtopAttachment, XmATTACH_FORM, @@ -789,7 +789,7 @@ create_options_page (Widget parent) XmNleftWidget, timeout_text, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 20, - 0); + NULL); XtVaSetValues (install_cmap_toggle, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, @@ -803,7 +803,7 @@ create_options_page (Widget parent) XmNleftWidget, verbose_toggle, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 20, - 0); + NULL); XtVaSetValues (fade_toggle, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, @@ -817,7 +817,7 @@ create_options_page (Widget parent) XmNleftWidget, install_cmap_toggle, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 20, - 0); + NULL); XtVaSetValues (unfade_toggle, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, @@ -831,7 +831,7 @@ create_options_page (Widget parent) XmNleftWidget, fade_toggle, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 20, - 0); + NULL); XtVaSetValues (lock_toggle, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, @@ -845,7 +845,7 @@ create_options_page (Widget parent) XmNleftWidget, unfade_toggle, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 20, - 0); + NULL); XtVaSetValues (hr, XmNtopWidget, passwd_timeout_text, @@ -853,20 +853,20 @@ create_options_page (Widget parent) XmNbottomOffset, 4, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, - 0); + NULL); XtVaSetValues (prefs_done, XmNleftAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - 0); + NULL); XtVaSetValues (prefs_cancel, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - 0); + NULL); XtVaSetValues (hr, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, prefs_done, - 0); + NULL); ac = 0; children[ac++] = timeout_label; @@ -901,7 +901,7 @@ create_options_page (Widget parent) XmNrightAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - 0); + NULL); return preferences_form; } diff --git a/driver/demo-Xm.c b/driver/demo-Xm.c index b1b08f86..f8d0de28 100644 --- a/driver/demo-Xm.c +++ b/driver/demo-Xm.c @@ -1,5 +1,5 @@ /* demo-Xm.c --- implements the interactive demo-mode and options dialogs. - * xscreensaver, Copyright (c) 1993-2001 Jamie Zawinski + * xscreensaver, Copyright (c) 1993-2003 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -157,7 +157,7 @@ ensure_selected_item_visible (Widget list) XtVaGetValues (list, XmNtopItemPosition, &top, XmNvisibleItemCount, &visible, - 0); + NULL); if (pos_list[0] >= top + visible) { int pos = pos_list[0] - visible + 1; @@ -554,16 +554,16 @@ apply_changes_and_save (Widget widget) if (which < 0) return -1; # ifdef HAVE_XMCOMBOBOX - XtVaGetValues (vis, XmNtextField, &text, 0); + XtVaGetValues (vis, XmNtextField, &text, NULL); if (!text) /* If we can't get at the text field of this combo box, we're screwed. */ abort(); - XtVaGetValues (text, XmNvalue, &visual, 0); + XtVaGetValues (text, XmNvalue, &visual, NULL); # else /* !HAVE_XMCOMBOBOX */ - XtVaGetValues (vis, XmNsubMenuId, &menu, 0); - XtVaGetValues (menu, XmNnumChildren, &nkids, XmNchildren, &kids, 0); - XtVaGetValues (menu, XmNmenuHistory, &selected_item, 0); + XtVaGetValues (vis, XmNsubMenuId, &menu, NULL); + XtVaGetValues (menu, XmNnumChildren, &nkids, XmNchildren, &kids, NULL); + XtVaGetValues (menu, XmNmenuHistory, &selected_item, NULL); if (selected_item) for (i = 0; i < nkids; i++) if (kids[i] == selected_item) @@ -572,8 +572,8 @@ apply_changes_and_save (Widget widget) visual = visual_menu[i]; # endif /* !HAVE_XMCOMBOBOX */ - XtVaGetValues (enabled, XmNset, &enabled_p, 0); - XtVaGetValues (cmd, XtNvalue, &command, 0); + XtVaGetValues (enabled, XmNset, &enabled_p, NULL); + XtVaGetValues (cmd, XtNvalue, &command, NULL); if (maybe_reload_init_file (widget, pair) != 0) return 1; @@ -789,18 +789,18 @@ prefs_ok_cb (Widget button, XtPointer client_data, XtPointer ignored) # define SECONDS(field, name) \ v = 0; \ - XtVaGetValues (name_to_widget (button, (name)), XtNvalue, &v, 0); \ + XtVaGetValues (name_to_widget (button, (name)), XtNvalue, &v, NULL); \ hack_time_text (button, v, (field), True) # define MINUTES(field, name) \ v = 0; \ - XtVaGetValues (name_to_widget (button, (name)), XtNvalue, &v, 0); \ + XtVaGetValues (name_to_widget (button, (name)), XtNvalue, &v, NULL); \ hack_time_text (button, v, (field), False) # define INTEGER(field, name) do { \ unsigned int value; \ char c; \ - XtVaGetValues (name_to_widget (button, (name)), XtNvalue, &v, 0); \ + XtVaGetValues (name_to_widget (button, (name)), XtNvalue, &v, NULL); \ if (! *v) \ ; \ else if (sscanf (v, "%u%c", &value, &c) != 1) \ @@ -814,7 +814,7 @@ prefs_ok_cb (Widget button, XtPointer client_data, XtPointer ignored) } while(0) # define CHECKBOX(field, name) \ - XtVaGetValues (name_to_widget (button, (name)), XmNset, &field, 0) + XtVaGetValues (name_to_widget (button, (name)), XmNset, &field, NULL) MINUTES (&p2->timeout, "timeoutText"); MINUTES (&p2->cycle, "cycleText"); @@ -981,28 +981,28 @@ populate_prefs_page (Widget top, prefs_pair *pair) char s[100]; format_time (s, p->timeout); - XtVaSetValues (name_to_widget (top, "timeoutText"), XmNvalue, s, 0); + XtVaSetValues (name_to_widget (top, "timeoutText"), XmNvalue, s, NULL); format_time (s, p->cycle); - XtVaSetValues (name_to_widget (top, "cycleText"), XmNvalue, s, 0); + XtVaSetValues (name_to_widget (top, "cycleText"), XmNvalue, s, NULL); format_time (s, p->lock_timeout); - XtVaSetValues (name_to_widget (top, "lockText"), XmNvalue, s, 0); + XtVaSetValues (name_to_widget (top, "lockText"), XmNvalue, s, NULL); format_time (s, p->passwd_timeout); - XtVaSetValues (name_to_widget (top, "passwdText"), XmNvalue, s, 0); + XtVaSetValues (name_to_widget (top, "passwdText"), XmNvalue, s, NULL); format_time (s, p->fade_seconds); - XtVaSetValues (name_to_widget (top, "fadeSecondsText"), XmNvalue, s, 0); + XtVaSetValues (name_to_widget (top, "fadeSecondsText"), XmNvalue, s, NULL); sprintf (s, "%u", p->fade_ticks); - XtVaSetValues (name_to_widget (top, "fadeTicksText"), XmNvalue, s, 0); + XtVaSetValues (name_to_widget (top, "fadeTicksText"), XmNvalue, s, NULL); XtVaSetValues (name_to_widget (top, "verboseToggle"), - XmNset, p->verbose_p, 0); + XmNset, p->verbose_p, NULL); XtVaSetValues (name_to_widget (top, "cmapToggle"), - XmNset, p->install_cmap_p, 0); + XmNset, p->install_cmap_p, NULL); XtVaSetValues (name_to_widget (top, "fadeToggle"), - XmNset, p->fade_p, 0); + XmNset, p->fade_p, NULL); XtVaSetValues (name_to_widget (top, "unfadeToggle"), - XmNset, p->unfade_p, 0); + XmNset, p->unfade_p, NULL); XtVaSetValues (name_to_widget (top, "lockToggle"), - XmNset, p->lock_p, 0); + XmNset, p->lock_p, NULL); { @@ -1025,19 +1025,19 @@ populate_prefs_page (Widget top, prefs_pair *pair) #endif XtVaSetValues (name_to_widget (top, "fadeSecondsLabel"), XtNsensitive, - found_any_writable_cells, 0); + found_any_writable_cells, NULL); XtVaSetValues (name_to_widget (top, "fadeTicksLabel"), XtNsensitive, - found_any_writable_cells, 0); + found_any_writable_cells, NULL); XtVaSetValues (name_to_widget (top, "fadeSecondsText"), XtNsensitive, - found_any_writable_cells, 0); + found_any_writable_cells, NULL); XtVaSetValues (name_to_widget (top, "fadeTicksText"), XtNsensitive, - found_any_writable_cells, 0); + found_any_writable_cells, NULL); XtVaSetValues (name_to_widget (top, "cmapToggle"), XtNsensitive, - found_any_writable_cells, 0); + found_any_writable_cells, NULL); XtVaSetValues (name_to_widget (top, "fadeToggle"), XtNsensitive, - found_any_writable_cells, 0); + found_any_writable_cells, NULL); XtVaSetValues (name_to_widget (top, "unfadeToggle"), XtNsensitive, - found_any_writable_cells, 0); + found_any_writable_cells, NULL); } } @@ -1051,7 +1051,7 @@ sensitize_demo_widgets (Widget toplevel, Bool sensitive_p) for (i = 0; i < sizeof(names)/countof(*names); i++) { Widget w = name_to_widget (toplevel, names[i]); - XtVaSetValues (w, XtNsensitive, sensitive_p, 0); + XtVaSetValues (w, XtNsensitive, sensitive_p, NULL); } /* I don't know how to handle these yet... */ @@ -1060,7 +1060,7 @@ sensitize_demo_widgets (Widget toplevel, Bool sensitive_p) for (i = 0; i < sizeof(names2)/countof(*names2); i++) { Widget w = name_to_widget (toplevel, names2[i]); - XtVaSetValues (w, XtNsensitive, FALSE, 0); + XtVaSetValues (w, XtNsensitive, FALSE, NULL); } } } @@ -1150,7 +1150,7 @@ pixmapify_buttons (Widget toplevel) symbols[0].name = "background"; symbols[0].pixel = 0; symbols[1].name = 0; - XtVaGetValues (up, XmNbackground, &xc, 0); + XtVaGetValues (up, XmNbackground, &xc, NULL); XQueryColor (dpy, xgwa.colormap, &xc); sprintf (color, "#%04X%04X%04X", xc.red, xc.green, xc.blue); symbols[0].value = color; @@ -1194,8 +1194,8 @@ pixmapify_buttons (Widget toplevel) return; } - XtVaSetValues (up, XmNlabelType, XmPIXMAP, XmNlabelPixmap, up_pixmap, 0); - XtVaSetValues (dn, XmNlabelType, XmPIXMAP, XmNlabelPixmap, down_pixmap, 0); + XtVaSetValues (up, XmNlabelType, XmPIXMAP, XmNlabelPixmap, up_pixmap, NULL); + XtVaSetValues (dn, XmNlabelType, XmPIXMAP, XmNlabelPixmap, down_pixmap,NULL); #endif /* HAVE_XPM */ } @@ -1330,13 +1330,13 @@ populate_demo_window (Widget toplevel, int which, prefs_pair *pair) XmString xmstr; xmstr = XmStringCreate (pretty_name, XmSTRING_DEFAULT_CHARSET); - XtVaSetValues (frameL, XmNlabelString, xmstr, 0); + XtVaSetValues (frameL, XmNlabelString, xmstr, NULL); XmStringFree (xmstr); - XtVaSetValues (doc, XmNvalue, doc_string, 0); - XtVaSetValues (cmd, XmNvalue, (hack ? hack->command : ""), 0); + XtVaSetValues (doc, XmNvalue, doc_string, NULL); + XtVaSetValues (cmd, XmNvalue, (hack ? hack->command : ""), NULL); - XtVaSetValues (enabled, XmNset, (hack ? hack->enabled_p : False), 0); + XtVaSetValues (enabled, XmNset, (hack ? hack->enabled_p : False), NULL); i = 0; if (hack && hack->visual && *hack->visual) @@ -1348,21 +1348,21 @@ populate_demo_window (Widget toplevel, int which, prefs_pair *pair) { # ifdef HAVE_XMCOMBOBOX Widget text = 0; - XtVaGetValues (vis, XmNtextField, &text, 0); - XtVaSetValues (vis, XmNselectedPosition, i, 0); + XtVaGetValues (vis, XmNtextField, &text, NULL); + XtVaSetValues (vis, XmNselectedPosition, i, NULL); if (i < 0) - XtVaSetValues (text, XmNvalue, hack->visual, 0); + XtVaSetValues (text, XmNvalue, hack->visual, NULL); # else /* !HAVE_XMCOMBOBOX */ Cardinal nkids; Widget *kids; Widget menu; - XtVaGetValues (vis, XmNsubMenuId, &menu, 0); + XtVaGetValues (vis, XmNsubMenuId, &menu, NULL); if (!menu) abort (); - XtVaGetValues (menu, XmNnumChildren, &nkids, XmNchildren, &kids, 0); + XtVaGetValues (menu, XmNnumChildren, &nkids, XmNchildren, &kids, NULL); if (!kids) abort(); if (i < nkids) - XtVaSetValues (vis, XmNmenuHistory, kids[i], 0); + XtVaSetValues (vis, XmNmenuHistory, kids[i], NULL); # endif /* !HAVE_XMCOMBOBOX */ } @@ -1407,7 +1407,7 @@ maybe_reload_init_file (Widget widget, prefs_pair *pair) which = selected_hack_number (widget); list = name_to_widget (widget, "list"); - XtVaSetValues (list, XmNitemCount, 0, 0); + XtVaSetValues (list, XmNitemCount, 0, NULL); populate_hack_list (widget, pair); @@ -1478,12 +1478,12 @@ sanity_check_resources (Widget toplevel) const char *name = XtName(w); XmString xm = 0; char *label = 0; - XtVaGetValues (w, XmNlabelString, &xm, 0); + XtVaGetValues (w, XmNlabelString, &xm, NULL); if (xm) XmStringGetLtoR (xm, XmSTRING_DEFAULT_CHARSET, &label); if (w && (!label || !strcmp (name, label))) { xm = XmStringCreate ("ERROR", XmSTRING_DEFAULT_CHARSET); - XtVaSetValues (w, XmNlabelString, xm, 0); + XtVaSetValues (w, XmNlabelString, xm, NULL); } } } @@ -1501,17 +1501,17 @@ hack_button_sizes (Widget toplevel) Widget down = name_to_widget (toplevel, "down"); Dimension w1, w2; - XtVaGetValues (demo, XmNwidth, &w1, 0); - XtVaGetValues (man, XmNwidth, &w2, 0); - XtVaSetValues ((w1 > w2 ? man : demo), XmNwidth, (w1 > w2 ? w1 : w2), 0); + XtVaGetValues (demo, XmNwidth, &w1, NULL); + XtVaGetValues (man, XmNwidth, &w2, NULL); + XtVaSetValues ((w1 > w2 ? man : demo), XmNwidth, (w1 > w2 ? w1 : w2), NULL); - XtVaGetValues (ok, XmNwidth, &w1, 0); - XtVaGetValues (can, XmNwidth, &w2, 0); - XtVaSetValues ((w1 > w2 ? can : ok), XmNwidth, (w1 > w2 ? w1 : w2), 0); + XtVaGetValues (ok, XmNwidth, &w1, NULL); + XtVaGetValues (can, XmNwidth, &w2, NULL); + XtVaSetValues ((w1 > w2 ? can : ok), XmNwidth, (w1 > w2 ? w1 : w2), NULL); - XtVaGetValues (up, XmNwidth, &w1, 0); - XtVaGetValues (down, XmNwidth, &w2, 0); - XtVaSetValues ((w1 > w2 ? down : up), XmNwidth, (w1 > w2 ? w1 : w2), 0); + XtVaGetValues (up, XmNwidth, &w1, NULL); + XtVaGetValues (down, XmNwidth, &w2, NULL); + XtVaSetValues ((w1 > w2 ? down : up), XmNwidth, (w1 > w2 ? w1 : w2), NULL); } @@ -1808,7 +1808,7 @@ main (int argc, char **argv) *s2 = 0; *s4 = 0; sprintf (title, "%.50s %.50s, %.50s", progclass, s1, s3); - XtVaSetValues (toplevel_shell, XtNtitle, title, 0); + XtVaSetValues (toplevel_shell, XtNtitle, title, NULL); free (v); } @@ -1828,7 +1828,7 @@ main (int argc, char **argv) ensure_selected_item_visible (name_to_widget (toplevel_shell, "list")); XSync (dpy, False); - XtVaSetValues (toplevel_shell, XmNallowShellResize, False, 0); + XtVaSetValues (toplevel_shell, XmNallowShellResize, False, NULL); /* Handle the -prefs command-line argument. */ @@ -1841,7 +1841,7 @@ main (int argc, char **argv) Cardinal nkids = 0; if (!tabber) abort(); - XtVaGetValues (tabber, XmNnumChildren, &nkids, XmNchildren, &kids, 0); + XtVaGetValues (tabber, XmNnumChildren, &nkids, XmNchildren, &kids, NULL); if (!kids) abort(); if (nkids > 0) XtUnmanageChildren (kids, nkids); diff --git a/driver/lock.c b/driver/lock.c index 529bf862..6a73ee0c 100644 --- a/driver/lock.c +++ b/driver/lock.c @@ -882,6 +882,16 @@ destroy_passwd_window (saver_info *si) } +static Bool error_handler_hit_p = False; + +static int +ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error) +{ + error_handler_hit_p = True; + return 0; +} + + #ifdef HAVE_XHPDISABLERESET /* This function enables and disables the C-Sh-Reset hot-key, which normally resets the X server (logging out the logged-in user.) @@ -927,7 +937,16 @@ static void xfree_lock_grab_smasher (saver_info *si, Bool lock_p) { saver_preferences *p = &si->prefs; - int status = XF86MiscSetGrabKeysState (si->dpy, !lock_p); + int status; + + XErrorHandler old_handler; + XSync (si->dpy, False); + error_handler_hit_p = False; + old_handler = XSetErrorHandler (ignore_all_errors_ehandler); + XSync (si->dpy, False); + status = XF86MiscSetGrabKeysState (si->dpy, !lock_p); + XSync (si->dpy, False); + if (error_handler_hit_p) status = 666; if (p->verbose_p && status != MiscExtGrabStateSuccess) fprintf (stderr, "%s: error: XF86MiscSetGrabKeysState returned %s\n", @@ -935,7 +954,12 @@ xfree_lock_grab_smasher (saver_info *si, Bool lock_p) (status == MiscExtGrabStateSuccess ? "MiscExtGrabStateSuccess" : status == MiscExtGrabStateLocked ? "MiscExtGrabStateLocked" : status == MiscExtGrabStateAlready ? "MiscExtGrabStateAlready" : + status == 666 ? "an X error" : "unknown value")); + + XSync (si->dpy, False); + XSetErrorHandler (old_handler); + XSync (si->dpy, False); } #endif /* HAVE_XF86MISCSETGRABKEYSSTATE */ @@ -1011,9 +1035,6 @@ linux_lock_vt_switch (saver_info *si, Bool lock_p) */ #ifdef HAVE_XF86VMODE -static int ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error); -static Bool vp_got_error = False; - static void xfree_lock_mode_switch (saver_info *si, Bool lock_p) { @@ -1033,10 +1054,11 @@ xfree_lock_mode_switch (saver_info *si, Bool lock_p) { XSync (si->dpy, False); old_handler = XSetErrorHandler (ignore_all_errors_ehandler); + error_handler_hit_p = False; status = XF86VidModeLockModeSwitch (si->dpy, screen, lock_p); XSync (si->dpy, False); XSetErrorHandler (old_handler); - if (vp_got_error) status = False; + if (error_handler_hit_p) status = False; if (status) any_mode_locked_p = lock_p; @@ -1052,14 +1074,6 @@ xfree_lock_mode_switch (saver_info *si, Bool lock_p) blurb(), screen, (lock_p ? "locked" : "unlocked")); } } - -static int -ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error) -{ - vp_got_error = True; - return 0; -} - #endif /* HAVE_XF86VMODE */ diff --git a/driver/passwd-kerberos.c b/driver/passwd-kerberos.c index 1fbe2af9..196e3bc5 100644 --- a/driver/passwd-kerberos.c +++ b/driver/passwd-kerberos.c @@ -31,7 +31,7 @@ Might __APPLE__ be defined if this is apple hardware, but not an Apple OS? - Thanks to Jan Kujawa for the MacOS X code. + Thanks to Alexei Kosut for the MacOS X code. */ #ifdef __APPLE__ # define HAVE_DARWIN diff --git a/driver/passwd-pam.c b/driver/passwd-pam.c index d6966bdb..7560d1a4 100644 --- a/driver/passwd-pam.c +++ b/driver/passwd-pam.c @@ -1,7 +1,7 @@ /* passwd-pam.c --- verifying typed passwords with PAM * (Pluggable Authentication Modules.) * written by Bill Nottingham (and jwz) for - * xscreensaver, Copyright (c) 1993-2002 Jamie Zawinski + * xscreensaver, Copyright (c) 1993-2003 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -52,10 +52,12 @@ extern char *blurb(void); #include #include #include +#include +#include #include -extern void block_sigchld (void); +extern sigset_t block_sigchld (void); extern void unblock_sigchld (void); /* blargh */ @@ -179,6 +181,8 @@ pam_passwd_valid_p (const char *typed_passwd, Bool verbose_p) struct pam_conv pc; struct pam_closure c; char *user = 0; + sigset_t set; + struct timespec timeout; struct passwd *p = getpwuid (getuid ()); if (!p) return False; @@ -242,8 +246,10 @@ pam_passwd_valid_p (const char *typed_passwd, Bool verbose_p) PAM_NO_DELAY(pamh); - block_sigchld(); + timeout.tv_nsec = 1; + set = block_sigchld(); status = pam_authenticate (pamh, 0); + sigtimedwait (&set, NULL, &timeout); unblock_sigchld(); if (verbose_p) @@ -279,7 +285,12 @@ pam_passwd_valid_p (const char *typed_passwd, Bool verbose_p) if (status != PAM_SUCCESS) goto DONE; PAM_NO_DELAY(pamh); + + set = block_sigchld(); status = pam_authenticate (pamh, 0); + sigtimedwait(&set, NULL, &timeout); + unblock_sigchld(); + if (verbose_p) fprintf (stderr, "%s: pam_authenticate (...) ==> %d (%s)\n", blurb(), status, PAM_STRERROR(pamh, status)); diff --git a/driver/prefs.c b/driver/prefs.c index 04bd856d..9b446987 100644 --- a/driver/prefs.c +++ b/driver/prefs.c @@ -1,5 +1,5 @@ /* dotfile.c --- management of the ~/.xscreensaver file. - * xscreensaver, Copyright (c) 1998 Jamie Zawinski + * xscreensaver, Copyright (c) 1998, 2003 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -1320,6 +1320,10 @@ make_hack_name (const char *shell_command) s[0] -= 'a'-'A'; if (s[0] == 'X' && s[1] >= 'a' && s[1] <= 'z') /* (magic leading X) */ s[1] -= 'a'-'A'; + if (s[0] == 'G' && s[1] == 'l' && + s[2] >= 'a' && s[2] <= 'z') /* (magic leading GL) */ + s[1] -= 'a'-'A', + s[2] -= 'a'-'A'; return s; } diff --git a/driver/subprocs.c b/driver/subprocs.c index 527f379d..463b3189 100644 --- a/driver/subprocs.c +++ b/driver/subprocs.c @@ -294,17 +294,28 @@ static void describe_dead_child (saver_info *, pid_t, int wait_status); static int block_sigchld_handler = 0; -void +#ifdef HAVE_SIGACTION + sigset_t +#else /* !HAVE_SIGACTION */ + int +#endif /* !HAVE_SIGACTION */ block_sigchld (void) { #ifdef HAVE_SIGACTION sigset_t child_set; sigemptyset (&child_set); sigaddset (&child_set, SIGCHLD); + sigaddset (&child_set, SIGPIPE); sigprocmask (SIG_BLOCK, &child_set, 0); #endif /* HAVE_SIGACTION */ block_sigchld_handler++; + +#ifdef HAVE_SIGACTION + return child_set; +#else /* !HAVE_SIGACTION */ + return 0; +#endif /* !HAVE_SIGACTION */ } void @@ -314,6 +325,7 @@ unblock_sigchld (void) sigset_t child_set; sigemptyset(&child_set); sigaddset(&child_set, SIGCHLD); + sigaddset(&child_set, SIGPIPE); sigprocmask(SIG_UNBLOCK, &child_set, 0); #endif /* HAVE_SIGACTION */ diff --git a/driver/xscreensaver-command.man b/driver/xscreensaver-command.man index 18484e90..1823ad09 100644 --- a/driver/xscreensaver-command.man +++ b/driver/xscreensaver-command.man @@ -11,7 +11,7 @@ .if n .sp 1 .if t .sp .5 .. -.TH XScreenSaver 1 "20-May-2003 (4.10)" "X Version 11" +.TH XScreenSaver 1 "23-Jun-2003 (4.11)" "X Version 11" .SH NAME xscreensaver-command - control a running xscreensaver process .SH SYNOPSIS diff --git a/driver/xscreensaver-demo.glade b/driver/xscreensaver-demo.glade index 71f91d4d..e3480016 100644 --- a/driver/xscreensaver-demo.glade +++ b/driver/xscreensaver-demo.glade @@ -906,7 +906,7 @@ Random Screen Saver GtkPixmap diag_logo - screensaver-diagnostic.xpm + screensaver-diagnostic.png 0.5 0 0 @@ -1040,7 +1040,7 @@ Random Screen Saver GtkPixmap cmap_logo - screensaver-colorselector.xpm + screensaver-colorselector.png 0.5 0 0 @@ -1286,7 +1286,7 @@ Random Screen Saver GtkPixmap dpms_logo - screensaver-power.xpm + screensaver-power.png 0.5 0 0 @@ -1685,7 +1685,7 @@ Random Screen Saver GtkPixmap img_logo - screensaver-snap.xpm + screensaver-snap.png 0.5 0 0 @@ -2105,7 +2105,7 @@ Random Screen Saver GtkPixmap cmd_logo - screensaver-cmndln.xpm + screensaver-cmndln.png 0.5 0.5 4 diff --git a/driver/xscreensaver-demo.glade2 b/driver/xscreensaver-demo.glade2 index ae5a73fc..f0828d0b 100644 --- a/driver/xscreensaver-demo.glade2 +++ b/driver/xscreensaver-demo.glade2 @@ -880,7 +880,7 @@ Installed True - screensaver-snap.xpm + screensaver-snap.png 0 0 4 @@ -1085,7 +1085,7 @@ Installed