Alexander Pyhalov
2020-05-01 3d92d85ece18cad5579fe53f2aa50b373ea73f37
xscreensaver: update to 5.44
4 files deleted
11 files modified
651 ■■■■■ changed files
components/desktop/xscreensaver/Makefile 5 ●●●●● patch | view | raw | blame | history
components/desktop/xscreensaver/manifests/sample-manifest.p5m 18 ●●●●● patch | view | raw | blame | history
components/desktop/xscreensaver/patches/02-Solaris.app-defaults.patch 32 ●●●● patch | view | raw | blame | history
components/desktop/xscreensaver/patches/04-solaris-paths.patch 35 ●●●●● patch | view | raw | blame | history
components/desktop/xscreensaver/patches/05-atoms.patch 69 ●●●●● patch | view | raw | blame | history
components/desktop/xscreensaver/patches/06-gtk-lock.patch 234 ●●●●● patch | view | raw | blame | history
components/desktop/xscreensaver/patches/12-barcode-hack.patch 78 ●●●●● patch | view | raw | blame | history
components/desktop/xscreensaver/patches/15-bug-6583181.patch 45 ●●●●● patch | view | raw | blame | history
components/desktop/xscreensaver/patches/17-bug-6583247.patch 37 ●●●●● patch | view | raw | blame | history
components/desktop/xscreensaver/patches/18-bug-4802301.patch 27 ●●●●● patch | view | raw | blame | history
components/desktop/xscreensaver/patches/21-verbose.patch 43 ●●●●● patch | view | raw | blame | history
components/desktop/xscreensaver/patches/22-bug-7033508.patch 12 ●●●● patch | view | raw | blame | history
components/desktop/xscreensaver/xscreensaver.p5m 1 ●●●● patch | view | raw | blame | history
components/desktop/xscreensaver/xscreensaver_hacks.p5m 3 ●●●●● patch | view | raw | blame | history
components/desktop/xscreensaver/xscreensaver_hacks_gl.p5m 12 ●●●●● patch | view | raw | blame | history
components/desktop/xscreensaver/Makefile
@@ -20,13 +20,12 @@
include ../../../make-rules/shared-macros.mk
COMPONENT_NAME=        xscreensaver
COMPONENT_VERSION=    5.42
COMPONENT_REVISION=    1
COMPONENT_VERSION=    5.44
COMPONENT_PROJECT_URL=    https://www.jwz.org/xscreensaver/
COMPONENT_SRC=        $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE=    $(COMPONENT_SRC).tar.gz
COMPONENT_ARCHIVE_HASH=    \
    sha256:441daa033b214bfdd82b1991fbf7dc9360466bff542ce0f6002d0071a4d5cbe1
    sha256:73d8089cfc7d7363b5dac99b5b01dffb3429d0a855e6af16ce9a4b7777017b95
COMPONENT_ARCHIVE_URL=    https://www.jwz.org/xscreensaver/$(COMPONENT_ARCHIVE)
COMPONENT_FMRI=        desktop/xscreensaver
components/desktop/xscreensaver/manifests/sample-manifest.p5m
@@ -10,7 +10,7 @@
#
#
# Copyright 2018 <contributor>
# Copyright 2020 <contributor>
#
set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
@@ -82,6 +82,7 @@
file path=usr/lib/xscreensaver/config/control-center-2.0/dangerball.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/decayscreen.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/deco.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/deepstars.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/deluxe.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/demon.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/discoball.xml
@@ -95,6 +96,7 @@
file path=usr/lib/xscreensaver/config/control-center-2.0/epicycle.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/eruption.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/esper.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/etruscanvenus.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/euler2d.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/fadeplot.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/fiberlamp.xml
@@ -115,6 +117,7 @@
file path=usr/lib/xscreensaver/config/control-center-2.0/geodesic.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/geodesicgears.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/gflux.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/gibson.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/glblur.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/glcells.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/gleidescope.xml
@@ -129,6 +132,7 @@
file path=usr/lib/xscreensaver/config/control-center-2.0/gltext.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/goop.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/grav.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/gravitywell.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/greynetic.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/halftone.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/halo.xml
@@ -211,6 +215,7 @@
file path=usr/lib/xscreensaver/config/control-center-2.0/rubik.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/rubikblocks.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/sballs.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/scooter.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/shadebobs.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/sierpinski.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/sierpinski3d.xml
@@ -320,6 +325,7 @@
file path=usr/lib/xscreensaver/hacks/dangerball
file path=usr/lib/xscreensaver/hacks/decayscreen
file path=usr/lib/xscreensaver/hacks/deco
file path=usr/lib/xscreensaver/hacks/deepstars
file path=usr/lib/xscreensaver/hacks/deluxe
file path=usr/lib/xscreensaver/hacks/demon
file path=usr/lib/xscreensaver/hacks/discoball
@@ -333,6 +339,7 @@
file path=usr/lib/xscreensaver/hacks/epicycle
file path=usr/lib/xscreensaver/hacks/eruption
file path=usr/lib/xscreensaver/hacks/esper
file path=usr/lib/xscreensaver/hacks/etruscanvenus
file path=usr/lib/xscreensaver/hacks/euler2d
file path=usr/lib/xscreensaver/hacks/fadeplot
file path=usr/lib/xscreensaver/hacks/fiberlamp
@@ -353,6 +360,7 @@
file path=usr/lib/xscreensaver/hacks/geodesic
file path=usr/lib/xscreensaver/hacks/geodesicgears
file path=usr/lib/xscreensaver/hacks/gflux
file path=usr/lib/xscreensaver/hacks/gibson
file path=usr/lib/xscreensaver/hacks/glblur
file path=usr/lib/xscreensaver/hacks/glcells
file path=usr/lib/xscreensaver/hacks/gleidescope
@@ -367,6 +375,7 @@
file path=usr/lib/xscreensaver/hacks/gltext
file path=usr/lib/xscreensaver/hacks/goop
file path=usr/lib/xscreensaver/hacks/grav
file path=usr/lib/xscreensaver/hacks/gravitywell
file path=usr/lib/xscreensaver/hacks/greynetic
file path=usr/lib/xscreensaver/hacks/halftone
file path=usr/lib/xscreensaver/hacks/halo
@@ -450,6 +459,7 @@
file path=usr/lib/xscreensaver/hacks/rubik
file path=usr/lib/xscreensaver/hacks/rubikblocks
file path=usr/lib/xscreensaver/hacks/sballs
file path=usr/lib/xscreensaver/hacks/scooter
file path=usr/lib/xscreensaver/hacks/shadebobs
file path=usr/lib/xscreensaver/hacks/sierpinski
file path=usr/lib/xscreensaver/hacks/sierpinski3d
@@ -532,6 +542,7 @@
file path=usr/share/man/man1/xscreensaver-getimage-file.1
file path=usr/share/man/man1/xscreensaver-getimage-video.1
file path=usr/share/man/man1/xscreensaver-getimage.1
file path=usr/share/man/man1/xscreensaver-systemd.1
file path=usr/share/man/man1/xscreensaver-text.1
file path=usr/share/man/man1/xscreensaver.1
file path=usr/share/man/man6/abstractile.6
@@ -584,6 +595,7 @@
file path=usr/share/man/man6/dangerball.6
file path=usr/share/man/man6/decayscreen.6
file path=usr/share/man/man6/deco.6
file path=usr/share/man/man6/deepstars.6
file path=usr/share/man/man6/deluxe.6
file path=usr/share/man/man6/demon.6
file path=usr/share/man/man6/discoball.6
@@ -597,6 +609,7 @@
file path=usr/share/man/man6/epicycle.6
file path=usr/share/man/man6/eruption.6
file path=usr/share/man/man6/esper.6
file path=usr/share/man/man6/etruscanvenus.6
file path=usr/share/man/man6/euler2d.6
file path=usr/share/man/man6/extrusion.6
file path=usr/share/man/man6/fadeplot.6
@@ -618,6 +631,7 @@
file path=usr/share/man/man6/geodesic.6
file path=usr/share/man/man6/geodesicgears.6
file path=usr/share/man/man6/gflux.6
file path=usr/share/man/man6/gibson.6
file path=usr/share/man/man6/glblur.6
file path=usr/share/man/man6/glcells.6
file path=usr/share/man/man6/gleidescope.6
@@ -632,6 +646,7 @@
file path=usr/share/man/man6/gltext.6
file path=usr/share/man/man6/goop.6
file path=usr/share/man/man6/grav.6
file path=usr/share/man/man6/gravitywell.6
file path=usr/share/man/man6/greynetic.6
file path=usr/share/man/man6/halftone.6
file path=usr/share/man/man6/halo.6
@@ -713,6 +728,7 @@
file path=usr/share/man/man6/rubik.6
file path=usr/share/man/man6/rubikblocks.6
file path=usr/share/man/man6/sballs.6
file path=usr/share/man/man6/scooter.6
file path=usr/share/man/man6/shadebobs.6
file path=usr/share/man/man6/sierpinski.6
file path=usr/share/man/man6/sierpinski3d.6
components/desktop/xscreensaver/patches/02-Solaris.app-defaults.patch
@@ -34,8 +34,8 @@
6526791 xscreensaver and Xorg need to change timeouts for MOU4
6652454 xscreensaver does not invoke after IDLE time expires from a Sun Ray DTU
---
--- driver/XScreenSaver.ad.in.~1~    2015-06-25 21:58:53.000000000 +0300
+++ driver/XScreenSaver.ad.in    2015-08-21 14:14:24.384543641 +0300
--- driver/XScreenSaver.ad.in.~1~    2020-03-21 02:52:58.000000000 +0000
+++ driver/XScreenSaver.ad.in    2020-05-01 19:25:30.376129621 +0000
@@ -28,41 +28,41 @@
 
 ! /* (xrdb prevention kludge: whole file)
@@ -77,7 +77,7 @@
+*splash:        False
 *splashDuration:    0:00:05
 *visualID:        default
 *captureStderr:     True
 *installColormap:    True
 *ignoreUninstalledPrograms: False
 *authWarningSlack:    20
 
@@ -89,8 +89,8 @@
+*textProgram:        date
 *textURL:        https://en.wikipedia.org/w/index.php?title=Special:NewPages&feed=rss
 
 *overlayTextForeground:    #FFFF00
@@ -76,7 +76,7 @@
 ! When a saver writes an error message to stdout/stderr, it can be printed
@@ -80,7 +80,7 @@
 *procInterrupts:    True
 
 ! Turning this on makes pointerHysteresis not work.
@@ -99,7 +99,7 @@
 
 ! Set this to True if you are experiencing longstanding XFree86 bug #421
 ! (xscreensaver not covering the whole screen)
@@ -162,23 +162,23 @@
@@ -347,23 +347,23 @@
 @GL_KLUDGE@ GL:                 superquadrics -root                \n\
                 attraction -root                \n\
                 blitspin -root                    \n\
@@ -129,7 +129,7 @@
                 deco -root                    \n\
                 drift -root                    \n\
 -                fadeplot -root                    \n\
@@ -187,13 +187,13 @@
@@ -372,13 +372,13 @@
                 grav -root                    \n\
                 ifs -root                    \n\
 @GL_KLUDGE@ GL:                 jigsaw -root                    \n\
@@ -146,7 +146,7 @@
                 penrose -root                    \n\
 @GL_KLUDGE@ GL:                 pipes -root                    \n\
                 rd-bomb -root                    \n\
@@ -208,7 +208,7 @@
@@ -393,7 +393,7 @@
                 xjack -root                    \n\
                 xlyap -root                    \n\
 @GL_KLUDGE@ GL:                 atlantis -root                    \n\
@@ -155,7 +155,7 @@
 @GL_KLUDGE@ GL:                 bubble3d -root                    \n\
 @GL_KLUDGE@ GL:                 cage -root                    \n\
 -                crystal -root                    \n\
@@ -221,7 +221,7 @@
@@ -406,7 +406,7 @@
                 interference -root                \n\
                 kumppa -root                    \n\
 @GL_KLUDGE@ GL:                 lament -root                    \n\
@@ -164,7 +164,7 @@
 @GL_KLUDGE@ GL:                 sonar -root                    \n\
 @GL_KLUDGE@ GL:                 stairs -root                    \n\
                 truchet -root                    \n\
@@ -229,9 +229,9 @@
@@ -414,9 +414,9 @@
                 blaster -root                    \n\
                 bumps -root                    \n\
                 ccurve -root                    \n\
@@ -176,7 +176,7 @@
 @GLE_KLUDGE@ GL:                 extrusion -root                    \n\
 -                loop -root                    \n\
                 penetrate -root                    \n\
@@ -245,7 +245,7 @@
@@ -430,7 +430,7 @@
                 squiral -root                    \n\
                 wander -root                    \n\
 -                webcollage -root                \n\
@@ -185,10 +185,10 @@
                 xmatrix -root                    \n\
 @GL_KLUDGE@ GL:                 gflux -root                    \n\
 -                nerverot -root                    \n\
@@ -260,14 +260,14 @@
 @GL_KLUDGE@ GL:                 menger -root                    \n\
@@ -446,14 +446,14 @@
 @GL_KLUDGE@ GL:                 molecule -root                    \n\
                 rotzoomer -root                    \n\
                 scooter -root                    \n\
-                speedmine -root                    \n\
+-                speedmine -root                    \n\
 @GL_KLUDGE@ GL:                 starwars -root                    \n\
@@ -202,7 +202,7 @@
 @GL_KLUDGE@ GL:                 boxed -root                    \n\
 @GL_KLUDGE@ GL:                 cubenetic -root                    \n\
 @GL_KLUDGE@ GL:                 endgame -root                    \n\
@@ -296,12 +296,11 @@
@@ -482,12 +482,11 @@
 @GL_KLUDGE@ GL:                 cubestorm -root                    \n\
                 eruption -root                    \n\
 @GL_KLUDGE@ GL:                 flipflop -root                    \n\
@@ -216,7 +216,7 @@
 @GL_KLUDGE@ GL:                 hypertorus -root                \n\
 - GL:                 jigglypuff -root                \n\
                 metaballs -root                    \n\
@@ -321,7 +320,6 @@
@@ -507,7 +506,6 @@
                 intermomentary -root                \n\
                 memscroller -root                \n\
 @GL_KLUDGE@ GL:                 noof -root                    \n\
@@ -224,7 +224,7 @@
 @GL_KLUDGE@ GL:                 pinion -root                    \n\
 @GL_KLUDGE@ GL:                 polyhedra -root                    \n\
 - GL:                 providence -root                \n\
@@ -467,7 +465,6 @@
@@ -624,7 +622,6 @@
 *hacks.flipscreen3d.name:   FlipScreen3D
 *hacks.fliptext.name:       FlipText
 *hacks.fluidballs.name:     FluidBalls
components/desktop/xscreensaver/patches/04-solaris-paths.patch
@@ -9,8 +9,6 @@
- Find helper programs even though they are not in $PATH
- Show author names when reading RSS feeds from sites like blogs.sun.com
- Show Solaris package names in demo app when hacks are not installed
- Use gnome-help to display man pages nicely, without requiring internet
@@ -247,39 +245,6 @@
                                 <property name="use_underline">False</property>
                                 <property name="use_markup">False</property>
                                 <property name="justify">GTK_JUSTIFY_CENTER</property>
diff --git a/driver/xscreensaver-text b/driver/xscreensaver-text
index 8199829..921d5c7 100755
--- driver/xscreensaver-text
+++ driver/xscreensaver-text
@@ -569,12 +569,15 @@ sub reformat_rss($) {
     $i++;
     my ($title, $body1, $body2, $body3);
+    my $author;
     $title = $3 if (m@<((TITLE)       [^<>\s]*)[^<>]*>\s*(.*?)\s*</\1>@xsi);
     $body1 = $3 if (m@<((DESCRIPTION) [^<>\s]*)[^<>]*>\s*(.*?)\s*</\1>@xsi);
     $body2 = $3 if (m@<((CONTENT)     [^<>\s]*)[^<>]*>\s*(.*?)\s*</\1>@xsi);
     $body3 = $3 if (m@<((SUMMARY)     [^<>\s]*)[^<>]*>\s*(.*?)\s*</\1>@xsi);
+    $author = $3 if (m@<((DC:CREATOR) [^<>\s]*)[^<>]*>\s*(.*?)\s*</\1>@xsi);
+
     # If there are both <description> and <content> or <content:encoded>,
     # use whichever one contains more text.
     #
@@ -598,10 +601,11 @@ sub reformat_rss($) {
     $title = rss_field_to_html ($title || '');
     $body1 = rss_field_to_html ($body1 || '');
+    $author = rss_field_to_html ($author || '');
     $title = '' if ($body1 eq $title);  # Identical in Twitter's atom feed.
-    $out .= reformat_html ("$title<P>$body1", $wiki_p ? 'wiki' : 'rss');
+    $out .= reformat_html ("$title<BR>$author<P>$body1", $wiki_p ? 'wiki' : 'rss');
     $out .= "\n";
   }
--- driver/xscreensaver.man    2018-04-10 21:26:46.000000000 +0000
+++ driver/xscreensaver.man    2018-06-04 08:22:25.429087341 +0000
@@ -97,9 +97,8 @@ xscreensaver-command -restart
components/desktop/xscreensaver/patches/05-atoms.patch
@@ -78,7 +78,7 @@
           xscreensaver-text.man \
--- /dev/null
+++ driver/atoms.c
@@ -0,0 +1,114 @@
@@ -0,0 +1,115 @@
+/* xscreensaver, Copyright (c) 1991-2010 Jamie Zawinski <jwz@jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
@@ -111,7 +111,7 @@
+/* Atoms to send commands to remote daemon */
+Atom XA_ACTIVATE, XA_BLANK, XA_CYCLE, XA_DEACTIVATE, XA_DEMO,
+  XA_EXIT, XA_LOCK, XA_NEXT, XA_PREFS, XA_PREV, XA_RESTART,
+  XA_SELECT, XA_THROTTLE, XA_UNTHROTTLE, XA_NET_WM_USER_TIME;
+  XA_SELECT, XA_SUSPEND, XA_THROTTLE, XA_UNTHROTTLE, XA_NET_WM_USER_TIME;
+
+static const struct atom_request remote_control_atom_list[] =
+{
@@ -132,6 +132,7 @@
+    { &XA_PREV, "PREV" },
+    { &XA_RESTART, "RESTART" },
+    { &XA_SELECT, "SELECT" },
+    { &XA_SUSPEND, "SUSPEND" },
+    { &XA_THROTTLE, "THROTTLE" },
+    { &XA_UNTHROTTLE, "UNTHROTTLE" },
+    { &XA_NET_WM_USER_TIME, "_NET_WM_USER_TIME" },
@@ -228,13 +229,13 @@
+/* Atoms to send commands to remote daemon */
+extern Atom XA_ACTIVATE, XA_BLANK, XA_CYCLE, XA_DEACTIVATE, XA_DEMO,
+  XA_EXIT, XA_LOCK, XA_NEXT, XA_PREFS, XA_PREV, XA_RESTART,
+  XA_SELECT, XA_THROTTLE, XA_UNTHROTTLE, XA_NET_WM_USER_TIME;
+  XA_SELECT, XA_SUSPEND, XA_THROTTLE, XA_UNTHROTTLE, XA_NET_WM_USER_TIME;
+
+#endif /* _XSCREENSAVER_ATOMS_H_ */
diff --git driver/demo-Gtk.c driver/demo-Gtk.c
--- driver/demo-Gtk.c
+++ driver/demo-Gtk.c
@@ -118,6 +118,7 @@
--- driver/demo-Gtk.c.~3~    2020-05-01 19:54:00.818785589 +0000
+++ driver/demo-Gtk.c    2020-05-01 19:55:06.937194585 +0000
@@ -117,6 +117,7 @@
 #include "resources.h"        /* for parse_time() */
 #include "visual.h"        /* for has_writable_cells() */
 #include "remote.h"        /* for xscreensaver_command() */
@@ -242,20 +243,21 @@
 #include "usleep.h"
 
 #include "logo-50.xpm"
@@ -252,12 +253,6 @@ typedef struct {
@@ -246,13 +247,6 @@
    a closure object of our own down into the various widget callbacks. */
 static state *global_state_kludge;
 
-Atom XA_VROOT;
-Atom XA_SCREENSAVER, XA_SCREENSAVER_RESPONSE, XA_SCREENSAVER_VERSION;
-Atom XA_SCREENSAVER_ID, XA_SCREENSAVER_STATUS, XA_SELECT, XA_DEMO;
-Atom XA_ACTIVATE, XA_BLANK, XA_LOCK, XA_RESTART, XA_EXIT;
-Atom XA_ACTIVATE, XA_SUSPEND, XA_BLANK, XA_LOCK, XA_RESTART, XA_EXIT;
-Atom XA_NEXT, XA_PREV;
-
-
 static void populate_demo_window (state *, int list_elt);
 static void populate_prefs_page (state *);
 static void populate_popup_window (state *);
@@ -5050,20 +5045,11 @@ main (int argc, char **argv)
@@ -5069,22 +5063,11 @@
 
   /* Intern the atoms that xscreensaver_command() needs.
    */
@@ -268,22 +270,24 @@
-  XA_SELECT = XInternAtom (dpy, "SELECT", False);
-  XA_DEMO = XInternAtom (dpy, "DEMO", False);
-  XA_ACTIVATE = XInternAtom (dpy, "ACTIVATE", False);
-  XA_SUSPEND = XInternAtom (dpy, "SUSPEND", False);
-  XA_BLANK = XInternAtom (dpy, "BLANK", False);
-  XA_LOCK = XInternAtom (dpy, "LOCK", False);
-  XA_NEXT = XInternAtom (dpy, "NEXT", False);
-  XA_PREV = XInternAtom (dpy, "PREV", False);
-  XA_EXIT = XInternAtom (dpy, "EXIT", False);
-  XA_RESTART = XInternAtom (dpy, "RESTART", False);
-
+  {
+    const struct atom_request *atom_lists[2] = { NULL, NULL };
+    atom_lists[0] = remote_control_atoms;
+    request_atoms (dpy, atom_lists);
+  }
 
   /* Create the window and all its widgets.
    */
diff --git driver/demo-Xm.c driver/demo-Xm.c
--- driver/demo-Xm.c
+++ driver/demo-Xm.c
--- driver/demo-Xm.c.~1~    2019-06-04 01:52:44.000000000 +0000
+++ driver/demo-Xm.c    2020-05-01 19:53:00.167687999 +0000
@@ -82,6 +82,7 @@
 #include "resources.h"        /* for parse_time() */
 #include "visual.h"        /* for has_writable_cells() */
@@ -292,20 +296,20 @@
 #include "usleep.h"
 
 #include <stdio.h>
@@ -110,12 +111,6 @@ extern const char *visual_menu[];
@@ -110,12 +111,6 @@
 
 static char *short_version = 0;
 
-Atom XA_VROOT;
-Atom XA_SCREENSAVER, XA_SCREENSAVER_RESPONSE, XA_SCREENSAVER_VERSION;
-Atom XA_SCREENSAVER_ID, XA_SCREENSAVER_STATUS, XA_SELECT, XA_DEMO;
-Atom XA_ACTIVATE, XA_BLANK, XA_LOCK, XA_RESTART, XA_EXIT;
-Atom XA_ACTIVATE, XA_SUSPEND, XA_BLANK, XA_LOCK, XA_RESTART, XA_EXIT;
-
-
 static void populate_demo_window (Widget toplevel,
                                   int which, prefs_pair *pair);
 static void populate_prefs_page (Widget top, prefs_pair *pair);
@@ -1791,19 +1786,11 @@ main (int argc, char **argv)
@@ -1791,20 +1786,11 @@
 
   /* Intern the atoms that xscreensaver_command() needs.
    */
@@ -318,6 +322,7 @@
-  XA_SELECT = XInternAtom (dpy, "SELECT", False);
-  XA_DEMO = XInternAtom (dpy, "DEMO", False);
-  XA_ACTIVATE = XInternAtom (dpy, "ACTIVATE", False);
-  XA_SUSPEND = XInternAtom (dpy, "SUSPEND", False);
-  XA_BLANK = XInternAtom (dpy, "BLANK", False);
-  XA_LOCK = XInternAtom (dpy, "LOCK", False);
-  XA_EXIT = XInternAtom (dpy, "EXIT", False);
@@ -341,9 +346,9 @@
 #undef ABS
 #define ABS(x)((x)<0?-(x):(x))
diff --git driver/remote.c driver/remote.c
--- driver/remote.c
+++ driver/remote.c
@@ -34,15 +34,13 @@
--- driver/remote.c.~1~    2020-05-01 19:59:02.063077824 +0000
+++ driver/remote.c    2020-05-01 20:00:35.059773302 +0000
@@ -34,17 +34,13 @@
 #include <X11/Xos.h>
 
 #include "remote.h"
@@ -357,9 +362,11 @@
-extern Atom XA_SCREENSAVER, XA_SCREENSAVER_VERSION, XA_SCREENSAVER_RESPONSE;
-extern Atom XA_SCREENSAVER_ID, XA_SCREENSAVER_STATUS, XA_EXIT;
-extern Atom XA_VROOT, XA_SELECT, XA_DEMO, XA_BLANK, XA_LOCK;
-extern Atom XA_ACTIVATE, XA_SUSPEND, XA_NEXT, XA_PREV, XA_EXIT;
-
 
 static XErrorHandler old_handler = 0;
 static Bool got_badwindow = False;
diff --git driver/windows.c driver/windows.c
--- driver/windows.c
+++ driver/windows.c
@@ -379,8 +386,8 @@
 
 extern saver_info *global_si_kludge;    /* I hate C so much... */
 
--- driver/xscreensaver-command.c
+++ driver/xscreensaver-command.c
--- driver/xscreensaver-command.c.~1~    2019-06-04 01:01:59.000000000 +0000
+++ driver/xscreensaver-command.c    2020-05-01 20:18:20.899693388 +0000
@@ -40,6 +40,7 @@
 typedef long PROP32;
 
@@ -389,21 +396,21 @@
 #include "version.h"
 
 #ifdef _VROOT_H_
@@ -48,13 +49,6 @@ ERROR! you must not include vroot.h in this file
@@ -48,13 +49,6 @@
 
 char *progname;
 
-Atom XA_VROOT;
-Atom XA_SCREENSAVER, XA_SCREENSAVER_VERSION, XA_SCREENSAVER_RESPONSE;
-Atom XA_SCREENSAVER_ID, XA_SCREENSAVER_STATUS, XA_SELECT, XA_DEMO, XA_EXIT;
-Atom XA_BLANK, XA_LOCK;
-static Atom XA_ACTIVATE, XA_DEACTIVATE, XA_CYCLE, XA_NEXT, XA_PREV;
-Atom XA_BLANK, XA_LOCK, XA_ACTIVATE, XA_SUSPEND, XA_NEXT, XA_PREV;
-static Atom XA_DEACTIVATE, XA_CYCLE;
-static Atom XA_RESTART, XA_PREFS, XA_THROTTLE, XA_UNTHROTTLE;
-
 static char *screensaver_version;
 # ifdef __GNUC__
   __extension__   /* don't warn about "string length is greater than the
@@ -285,28 +279,11 @@ main (int argc, char **argv)
@@ -298,29 +292,11 @@
       exit (1);
     }
 
@@ -415,6 +422,7 @@
-  XA_SCREENSAVER_RESPONSE = XInternAtom (dpy, "_SCREENSAVER_RESPONSE", False);
-  XA_ACTIVATE = XInternAtom (dpy, "ACTIVATE", False);
-  XA_DEACTIVATE = XInternAtom (dpy, "DEACTIVATE", False);
-  XA_SUSPEND = XInternAtom (dpy, "SUSPEND", False);
-  XA_RESTART = XInternAtom (dpy, "RESTART", False);
-  XA_CYCLE = XInternAtom (dpy, "CYCLE", False);
-  XA_NEXT = XInternAtom (dpy, "NEXT", False);
@@ -438,8 +446,8 @@
   if (cmd == &XA_WATCH)
     {
diff --git driver/xscreensaver.c driver/xscreensaver.c
--- driver/xscreensaver.c
+++ driver/xscreensaver.c
--- driver/xscreensaver.c.~1~    2020-03-19 23:38:00.000000000 +0000
+++ driver/xscreensaver.c    2020-05-01 19:36:16.064832824 +0000
@@ -232,6 +232,7 @@
 #include "visual.h"
 #include "usleep.h"
@@ -453,7 +461,7 @@
 
 
-static Atom XA_SCREENSAVER_RESPONSE;
-static Atom XA_ACTIVATE, XA_DEACTIVATE, XA_CYCLE, XA_NEXT, XA_PREV;
-static Atom XA_ACTIVATE, XA_DEACTIVATE, XA_SUSPEND, XA_CYCLE, XA_NEXT, XA_PREV;
-static Atom XA_RESTART, XA_SELECT;
-static Atom XA_THROTTLE, XA_UNTHROTTLE;
-Atom XA_DEMO, XA_PREFS, XA_EXIT, XA_LOCK, XA_BLANK;
@@ -461,7 +469,7 @@
 
 static XrmOptionDescRec options [] = {
 
@@ -657,31 +652,20 @@
@@ -673,32 +668,20 @@
 
   db = si->prefs.db;    /* resources.c needs this */
 
@@ -478,6 +486,7 @@
-  XA_NET_WM_USER_TIME = XInternAtom (si->dpy, "_NET_WM_USER_TIME", False);
-  XA_ACTIVATE = XInternAtom (si->dpy, "ACTIVATE", False);
-  XA_DEACTIVATE = XInternAtom (si->dpy, "DEACTIVATE", False);
-  XA_SUSPEND = XInternAtom (si->dpy, "SUSPEND", False);
-  XA_RESTART = XInternAtom (si->dpy, "RESTART", False);
-  XA_CYCLE = XInternAtom (si->dpy, "CYCLE", False);
-  XA_NEXT = XInternAtom (si->dpy, "NEXT", False);
components/desktop/xscreensaver/patches/06-gtk-lock.patch
@@ -160,9 +160,9 @@
     echo ""
     AC_MSG_ERROR([\"--with-hackdir=${bindir}/${bad_choice}\" won't work.
diff --git driver/Makefile.in driver/Makefile.in
--- driver/Makefile.in
+++ driver/Makefile.in
@@ -29,6 +29,7 @@ GTK_APPDIR    = $(GTK_DATADIR)/applications
--- driver/Makefile.in.~4~    2020-05-01 20:36:46.111597541 +0000
+++ driver/Makefile.in    2020-05-01 20:39:01.782966094 +0000
@@ -29,6 +29,7 @@
 GTK_ICONDIR    = $(GTK_DATADIR)/pixmaps
 GTK_GLADEDIR    = $(prefix)/lib/xscreensaver/config
 HACK_CONF_DIR    = @HACK_CONF_DIR@
@@ -170,7 +170,7 @@
 
 CC        = @CC@
 OBJCC        = @OBJCC@
@@ -42,6 +43,7 @@ SUBP_DEFS    = $(DEFS) -DHACK_PATH='"@HACKDIR@"' \
@@ -42,6 +43,7 @@
 GTK_DEFS    = $(DEFS) -DDEFAULT_ICONDIR='"$(GTK_GLADEDIR)"' \
             -DBINDIR='"$(bindir)"'
 CONF_DEFS    = -DHACK_CONFIGURATION_PATH='"$(HACK_CONF_DIR)"'
@@ -178,36 +178,36 @@
 
 LIBS        = @LIBS@
 INTL_LIBS    = @INTLLIBS@
@@ -100,6 +102,8 @@ 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
@@ -98,6 +100,8 @@
 GTK_SRCS    = demo-Gtk.c demo-Gtk-conf.c
 GTK_OBJS    = demo-Gtk.o demo-Gtk-conf.o @GTK_EXTRA_OBJS@
+GTK_LOCK_SRCS    = lock-Gtk.c atoms.c remote.c
+GTK_LOCK_OBJS    = lock-Gtk.o atoms.o remote.o
 
 PWENT_SRCS    = passwd-pwent.c
 PWENT_OBJS    = passwd-pwent.o
@@ -219,8 +223,8 @@ GETIMG_LIBS    = $(LIBS) $(X_LIBS) $(XPM_LIBS) $(JPEG_LIBS) \
@@ -223,8 +227,8 @@
           $(X_PRE_LIBS) -lXt -lX11 $(XMU_LIBS) -lXext $(X_EXTRA_LIBS)
 
 EXES        = xscreensaver xscreensaver-command xscreensaver-demo \
-          xscreensaver-getimage @EXES_OSX@
-          xscreensaver-getimage @EXES_OSX@ @EXES_SYSTEMD@
-EXES2        = @ALL_DEMO_PROGRAMS@
+          xscreensaver-getimage @EXES_OSX@ @LOCK_PROGRAM@
+          xscreensaver-getimage @EXES_OSX@ @EXES_SYSTEMD@ @LOCK_PROGRAM@
+EXES2        = @ALL_DEMO_PROGRAMS@ @ALL_LOCK_PROGRAMS@
 EXES_OSX    = pdf2jpeg
 EXES_SYSTEMD    = xscreensaver-systemd
 
 SCRIPTS_1    = xscreensaver-getimage-file xscreensaver-getimage-video \
@@ -250,7 +254,7 @@ VMSFILES    = compile_axp.com compile_decc.com link_axp.com link_decc.com \
@@ -255,7 +259,7 @@
           vms-getpwnam.c vms-pwd.h vms-hpwd.c vms-validate.c \
           vms_axp.opt vms_axp_12.opt vms_decc.opt vms_decc_12.opt
 
-TARFILES    = $(EXTRAS) $(VMSFILES) $(SAVER_SRCS_1) \
+TARFILES    = $(EXTRAS) $(VMSFILES) $(SAVER_SRCS_1) $(GTK_LOCK_SRCS) \
-TARFILES    = $(EXTRAS) $(VMSFILES) $(SAVER_SRCS_1) $(SYSTEMD_SRCS) \
+TARFILES    = $(EXTRAS) $(VMSFILES) $(SAVER_SRCS_1) $(GTK_LOCK_SRCS) $(SYSTEMD_SRCS) \
           $(MOTIF_SRCS) $(GTK_SRCS) $(PWENT_SRCS) $(PWHELPER_SRCS) \
           $(KERBEROS_SRCS) $(PAM_SRCS) $(LOCK_SRCS_1) $(DEMO_SRCS_1) \
           $(CMD_SRCS) $(GETIMG_SRCS_1) $(PDF2JPEG_SRCS) $(HDRS) \
@@ -263,7 +267,7 @@ all: $(EXES) $(EXES2)
@@ -268,7 +272,7 @@
 tests: $(TEST_EXES)
 
 install:   install-program   install-ad    install-scripts \
@@ -216,7 +216,7 @@
 uninstall: uninstall-program uninstall-ad  \
        uninstall-gnome   uninstall-man uninstall-xml  
 
@@ -275,6 +279,9 @@ install-program: $(EXES)
@@ -280,6 +284,9 @@
     @if [ ! -d $(install_prefix)$(bindir) ]; then            \
       $(INSTALL_DIRS) $(install_prefix)$(bindir) ;            \
      fi
@@ -226,7 +226,7 @@
     @inst="$(INSTALL_PROGRAM)" ;                    \
     if [ @NEED_SETUID@ = yes ]; then                \
        me=`PATH="$$PATH:/usr/ucb" whoami` ;                \
@@ -303,6 +310,12 @@ install-program: $(EXES)
@@ -308,6 +315,12 @@
       echo $(INSTALL_PROGRAM) $$exe $(install_prefix)$(bindir)/$$exe ; \
            $(INSTALL_PROGRAM) $$exe $(install_prefix)$(bindir)/$$exe ; \
      done
@@ -239,7 +239,7 @@
 
 install-ad: XScreenSaver.ad
     @if [ ! -d $(install_prefix)$(AD_DIR) ]; then                  \
@@ -738,7 +751,7 @@ $(SAVER_UTIL_OBJS):
@@ -755,7 +768,7 @@
 
 # How we build object files in this directory.
 .c.o:
@@ -248,7 +248,7 @@
 
 .m.o:
     $(OBJCC) -c $(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS) $<
@@ -764,6 +777,16 @@ demo-Gtk-conf.o: demo-Gtk-conf.c
@@ -781,6 +794,16 @@
     $(CC) -c $(INCLUDES) $(CONF_DEFS) $(GTK_DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS) \
       $(srcdir)/demo-Gtk-conf.c
 
@@ -265,7 +265,7 @@
 
 # How we build the default app-defaults file into the program.
 #
@@ -778,7 +801,8 @@ XScreenSaver_Xm_ad.h: XScreenSaver-Xm.ad
@@ -795,7 +818,8 @@
 # The executables linked in this directory.
 #
 xscreensaver: $(SAVER_OBJS)
@@ -275,7 +275,7 @@
 
 xscreensaver-command: $(CMD_OBJS)
     $(CC) $(LDFLAGS) -o $@ $(CMD_OBJS) $(CMD_LIBS)
@@ -794,6 +818,15 @@ xscreensaver-demo: @PREFERRED_DEMO_PROGRAM@
@@ -811,6 +835,15 @@
            cp -p @PREFERRED_DEMO_PROGRAM@@EXEEXT@ $@@EXEEXT@      ;    \
     fi
 
@@ -291,8 +291,8 @@
 xscreensaver-demo-Xm: $(DEMO_OBJS) $(MOTIF_OBJS)
     $(CC) $(LDFLAGS) -o $@ $(DEMO_OBJS) $(MOTIF_OBJS) $(LIBS) $(X_LIBS) \
     $(MOTIF_LIBS) $(INTL_LIBS) $(X_PRE_LIBS) -lXt -lX11 \
@@ -817,7 +850,7 @@ pdf2jpeg: $(PDF2JPEG_OBJS)
@@ -836,7 +869,7 @@
     $(CC) $(LDFLAGS) -o $@ $(SYSTEMD_OBJS) $(SYSTEMD_LIBS) -lm
 
 TEST_PASSWD_OBJS = test-passwd.o $(LOCK_OBJS_1) $(PASSWD_OBJS) \
-     subprocs.o setuid.o splash.o prefs.o mlstring.o exec.o \
@@ -300,7 +300,7 @@
     $(SAVER_UTIL_OBJS)
 test-passwd.o: XScreenSaver_ad.h
 
@@ -907,8 +940,14 @@ dpms.o: $(srcdir)/types.h
@@ -921,8 +954,14 @@
 dpms.o: $(srcdir)/xscreensaver.h
 exec.o: ../config.h
 exec.o: $(srcdir)/exec.h
@@ -315,8 +315,8 @@
 lock.o: $(srcdir)/mlstring.h
 lock.o: $(srcdir)/prefs.h
 lock.o: $(srcdir)/types.h
@@ -917,6 +956,8 @@ lock.o: $(srcdir)/xscreensaver.h
 mlstring.o: $(srcdir)/mlstring.h
@@ -936,6 +975,8 @@
 passwd-kerberos.o: ../config.h
 passwd.o: $(srcdir)/auth.h
 passwd.o: ../config.h
+passwd.o: $(srcdir)/dialog-data.h
@@ -324,16 +324,16 @@
 passwd.o: $(srcdir)/prefs.h
 passwd.o: $(srcdir)/types.h
 passwd.o: $(srcdir)/xscreensaver.h
@@ -984,6 +1025,8 @@ test-vp.o: ../config.h
 test-xdpms.o: ../config.h
 test-xinerama.o: ../config.h
@@ -1010,6 +1051,8 @@
 test-yarandom.o: ../config.h
 test-yarandom.o: $(UTILS_SRC)/yarandom.h
 timers.o: ../config.h
+timers.o: $(srcdir)/dialog-data.h
+timers.o: $(srcdir)/mlstring.h
 timers.o: $(srcdir)/prefs.h
 timers.o: $(srcdir)/types.h
 timers.o: $(srcdir)/xscreensaver.h
@@ -1011,6 +1054,8 @@ xscreensaver-getimage.o: $(UTILS_SRC)/yarandom.h
@@ -1037,6 +1080,8 @@
 xscreensaver.o: XScreenSaver_ad.h
 xscreensaver.o: $(srcdir)/auth.h
 xscreensaver.o: ../config.h
@@ -342,7 +342,6 @@
 xscreensaver.o: $(srcdir)/prefs.h
 xscreensaver.o: $(srcdir)/types.h
 xscreensaver.o: $(UTILS_SRC)/resources.h
diff --git driver/auth.h driver/auth.h
--- driver/auth.h
+++ driver/auth.h
@@ -51,4 +51,8 @@ xss_authenticate(saver_info *si, Bool verbose_p);
@@ -1261,8 +1260,8 @@
+}
+#endif /* HAVE_GTK2 */
diff --git driver/lock.c driver/lock.c
--- driver/lock.c
+++ driver/lock.c
--- driver/lock.c.~1~    2020-03-19 03:47:07.000000000 +0000
+++ driver/lock.c    2020-05-01 20:30:06.625437576 +0000
@@ -21,8 +21,13 @@
 #include <X11/Intrinsic.h>
 #include <X11/cursorfont.h>
@@ -1277,7 +1276,7 @@
 #include "xscreensaver.h"
 #include "resources.h"
 #include "mlstring.h"
@@ -83,125 +83,630 @@ vms_passwd_valid_p(char *pw, Bool verbos
@@ -83,125 +88,630 @@
 
 typedef struct info_dialog_data info_dialog_data;
 
@@ -2007,7 +2006,7 @@
   pw = (passwd_dialog_data *) calloc (1, sizeof(*pw));
   if (!pw)
     return -1;
@@ -211,17 +721,21 @@ new_passwd_window (saver_info *si)
@@ -210,17 +720,21 @@
    */
   pw->login_button_p = (si->prefs.new_login_command &&
                         *si->prefs.new_login_command);
@@ -2029,7 +2028,7 @@
   pw->heading_label = get_string_resource (si->dpy, "passwd.heading.label",
                        "Dialog.Label.Label");
   pw->body_label = get_string_resource (si->dpy, "passwd.body.label",
@@ -376,6 +890,7 @@ new_passwd_window (saver_info *si)
@@ -355,6 +869,7 @@
   if (pw->shadow_width == 0) pw->shadow_width = 4;
   if (pw->thermo_width == 0) pw->thermo_width = pw->shadow_width;
 
@@ -2037,7 +2036,7 @@
 
   /* We need to remember the mouse position and restore it afterward, or
      sometimes (perhaps only with Xinerama?) the mouse gets warped to
@@ -442,12 +957,16 @@ make_passwd_window (saver_info *si,
@@ -421,12 +936,16 @@
             const char *prompt,
             Bool echo)
 {
@@ -2054,7 +2053,7 @@
   saver_screen_info *ssi = &si->screens [mouse_screen (si)];
 
   cleanup_passwd_window (si);
@@ -455,7 +974,12 @@ make_passwd_window (saver_info *si,
@@ -434,7 +953,12 @@
   if (! ssi)   /* WTF?  Trying to prompt while no screens connected? */
     return -1;
 
@@ -2067,7 +2066,7 @@
     if (new_passwd_window (si) < 0)
       return -1;
 
@@ -470,6 +994,29 @@ make_passwd_window (saver_info *si,
@@ -449,6 +973,29 @@
              blurb(), pw->prompt_screen->number,
              info_msg ? info_msg : "");
 
@@ -2097,7 +2096,7 @@
   screen = pw->prompt_screen->screen;
   cmap = DefaultColormapOfScreen (screen);
 
@@ -716,11 +1263,13 @@ make_passwd_window (saver_info *si,
@@ -700,11 +1247,13 @@
   if (cmap)
     XInstallColormap (si->dpy, cmap);
   draw_passwd_window (si);
@@ -2111,7 +2110,7 @@
 static void
 draw_passwd_window (saver_info *si)
 {
@@ -1066,17 +1615,48 @@ draw_button(Display *dpy,
@@ -1051,17 +1600,48 @@
   draw_shaded_rectangle(dpy, dialog, x, y, width, height,
             shadow_width, shadow_light, shadow_dark);
 }
@@ -2160,7 +2159,7 @@
   gcv.foreground = pw->passwd_foreground;
   gcv.font = pw->passwd_font->fid;
   gc1 = XCreateGC (si->dpy, si->passwd_dialog, GCForeground|GCFont, &gcv);
@@ -1221,6 +1801,7 @@ update_passwd_window (saver_info *si, const char *printed_passwd, float ratio)
@@ -1207,6 +1787,7 @@
   XFreeGC (si->dpy, gc1);
   XFreeGC (si->dpy, gc2);
   XSync (si->dpy, False);
@@ -2168,7 +2167,7 @@
 }
 
 
@@ -1252,6 +1833,9 @@ cleanup_passwd_window (saver_info *si)
@@ -1238,6 +1819,9 @@
 {
   passwd_dialog_data *pw;
 
@@ -2178,7 +2177,7 @@
   if (!(pw = si->pw_data))
     return;
 
@@ -1269,7 +1853,13 @@ cleanup_passwd_window (saver_info *si)
@@ -1255,7 +1839,13 @@
 
   memset (pw->typed_passwd, 0, sizeof(pw->typed_passwd));
   memset (pw->typed_passwd_char_size, 0, sizeof(pw->typed_passwd_char_size));
@@ -2193,7 +2192,7 @@
 
   if (pw->timer)
     {
@@ -1292,8 +1882,10 @@ destroy_passwd_window (saver_info *si)
@@ -1278,8 +1868,10 @@
   passwd_dialog_data *pw = si->pw_data;
   saver_screen_info *ssi = pw->prompt_screen;
   Colormap cmap = DefaultColormapOfScreen (ssi->screen);
@@ -2204,7 +2203,7 @@
   XEvent event;
 
   cleanup_passwd_window (si);
@@ -1309,6 +1901,81 @@ destroy_passwd_window (saver_info *si)
@@ -1295,6 +1887,81 @@
       si->cached_passwd = NULL;
     }
 
@@ -2286,7 +2285,7 @@
   move_mouse_grab (si, RootWindowOfScreen (ssi->screen),
                    ssi->cursor, ssi->number);
 
@@ -1343,7 +2010,14 @@ destroy_passwd_window (saver_info *si)
@@ -1329,7 +1996,14 @@
         fprintf (stderr, "%s: %d: destroying password dialog.\n",
                  blurb(), pw->prompt_screen->number);
 
@@ -2301,7 +2300,7 @@
       si->passwd_dialog = 0;
     }
   
@@ -1354,6 +2028,7 @@ destroy_passwd_window (saver_info *si)
@@ -1340,6 +2014,7 @@
       pw->save_under = 0;
     }
 
@@ -2309,7 +2308,7 @@
   if (pw->heading_label) free (pw->heading_label);
   if (pw->body_label)    free (pw->body_label);
   if (pw->user_label)    free (pw->user_label);
@@ -1404,6 +2079,7 @@ destroy_passwd_window (saver_info *si)
@@ -1390,6 +2065,7 @@
       pw->logo_pixels = 0;
       pw->logo_npixels = 0;
     }
@@ -2317,7 +2316,7 @@
 
   if (pw->save_under)
     XFreePixmap (si->dpy, pw->save_under);
@@ -1411,9 +2087,12 @@ destroy_passwd_window (saver_info *si)
@@ -1397,9 +2073,12 @@
   if (cmap)
     XInstallColormap (si->dpy, cmap);
 
@@ -2327,12 +2326,12 @@
   free (pw);
   si->pw_data = 0;
+#endif
 }
 
@@ -1426,6 +2105,49 @@ ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error)
   return 0;
   si->unlock_dismiss_time = time((time_t *) 0);
 }
@@ -1418,6 +2097,49 @@
 #endif /* HAVE_XF86MISCSETGRABKEYSSTATE || HAVE_XF86VMODE */
 
+#ifdef HAVE_XSCREENSAVER_LOCK
+/* Catch errors from XRestackWindows, since there's an inherent race
@@ -2380,7 +2379,7 @@
 
 #ifdef HAVE_XHPDISABLERESET
 /* This function enables and disables the C-Sh-Reset hot-key, which
@@ -1627,6 +2349,17 @@ passwd_animate_timer (XtPointer closure, XtIntervalId *id)
@@ -1619,6 +2341,17 @@
 
   if (!pw) return;
 
@@ -2398,7 +2397,7 @@
   pw->ratio -= (1.0 / ((double) si->prefs.passwd_timeout / (double) tick));
   if (pw->ratio < 0)
     {
@@ -1646,6 +2379,7 @@ passwd_animate_timer (XtPointer closure, XtIntervalId *id)
@@ -1638,6 +2371,7 @@
   idle_timer ((XtPointer) si, 0);
 }
 
@@ -2406,7 +2405,7 @@
 
 static XComposeStatus *compose_status;
 
@@ -1723,6 +2457,7 @@ finished_typing_passwd (saver_info *si, passwd_dialog_data *pw)
@@ -1715,6 +2449,7 @@
       update_passwd_window (si, "", pw->ratio);
     }
 }
@@ -2414,7 +2413,7 @@
 
 static void
 handle_passwd_key (saver_info *si, XKeyEvent *event)
@@ -1730,7 +2465,8 @@ handle_passwd_key (saver_info *si, XKeyEvent *event)
@@ -1722,7 +2457,8 @@
   passwd_dialog_data *pw = si->pw_data;
   unsigned char decoded [MAX_BYTES_PER_CHAR * 10]; /* leave some slack */
   KeySym keysym = 0;
@@ -2424,7 +2423,7 @@
   /* XLookupString may return more than one character via XRebindKeysym;
      and on some systems it returns multi-byte UTF-8 characters (contrary
      to its documentation, which says it returns only Latin1.)
@@ -1764,11 +2500,40 @@ handle_passwd_key (saver_info *si, XKeyEvent *event)
@@ -1756,11 +2492,40 @@
 
   decoded[decoded_size] = 0;
   pw->passwd_changed_p = True;
@@ -2465,7 +2464,7 @@
   if (decoded_size == 1)        /* Handle single-char commands */
     {
       switch (*decoded)
@@ -1858,6 +2623,7 @@ handle_passwd_key (saver_info *si, XKeyEvent *event)
@@ -1850,6 +2615,7 @@
     {
       update_passwd_window (si, "", pw->ratio);
     }
@@ -2473,9 +2472,9 @@
 }
 
 
@@ -1880,7 +2646,9 @@ passwd_event_loop (saver_info *si)
@@ -1873,7 +2639,9 @@
   passwd_animate_timer ((XtPointer) si, 0);
   reset_watchdog_timer (si, False);    /* Disable watchdog while dialog up */
 
-  while (si->unlock_state == ul_read)
+  si->pw_data->got_passwd = FALSE;
@@ -2484,7 +2483,7 @@
     {
       XtAppNextEvent (si->app, &event.x_event);
 
@@ -1921,12 +2689,17 @@ passwd_event_loop (saver_info *si)
@@ -1914,12 +2682,17 @@
 
       if (event.x_event.xany.window == si->passwd_dialog && 
           event.x_event.xany.type == Expose)
@@ -2502,7 +2501,7 @@
       else if (event.x_event.xany.type == ButtonPress || 
                event.x_event.xany.type == ButtonRelease)
     {
@@ -1935,6 +2708,82 @@ passwd_event_loop (saver_info *si)
@@ -1928,6 +2701,82 @@
       if (si->pw_data->login_button_p)
         handle_login_button (si, &event.x_event);
     }
@@ -2585,7 +2584,7 @@
       else
     XtDispatchEvent (&event.x_event);
     }
@@ -1960,8 +2809,13 @@ passwd_event_loop (saver_info *si)
@@ -1953,8 +2802,13 @@
 
   if (msg)
     {
@@ -2599,7 +2598,7 @@
       XSync (si->dpy, False);
 
       /* Swallow all pending KeyPress/KeyRelease events. */
@@ -1977,6 +2831,10 @@ passwd_event_loop (saver_info *si)
@@ -1972,6 +2826,10 @@
 static void
 handle_typeahead (saver_info *si)
 {
@@ -2610,7 +2609,7 @@
   passwd_dialog_data *pw = si->pw_data;
   int i;
   if (!si->unlock_typeahead)
@@ -2004,6 +2862,7 @@ handle_typeahead (saver_info *si)
@@ -1999,6 +2857,7 @@
 
   free (si->unlock_typeahead);
   si->unlock_typeahead = 0;
@@ -2618,7 +2617,7 @@
 }
 
 
@@ -2109,9 +2968,11 @@ gui_auth_conv(int num_msg,
@@ -2104,9 +2963,11 @@
       free(prompt_trimmed);
       }
 
@@ -2630,7 +2629,7 @@
 
       si->unlock_state = ul_read;
 
@@ -2121,7 +2982,14 @@ gui_auth_conv(int num_msg,
@@ -2116,7 +2977,14 @@
       if (si->unlock_state == ul_cancel)
     goto fail;
 
@@ -2645,7 +2644,7 @@
 
       /* Cache the first response to a PROMPT_NOECHO to save prompting for
        * each auth mechanism. */
@@ -2129,8 +2997,10 @@ gui_auth_conv(int num_msg,
@@ -2124,8 +2992,10 @@
       auth_msgs[i].type == AUTH_MSGTYPE_PROMPT_NOECHO)
     si->cached_passwd = strdup(responses[i].response);
 
@@ -2656,7 +2655,7 @@
     }
 
   *resp = responses;
@@ -2138,9 +3008,11 @@ gui_auth_conv(int num_msg,
@@ -2133,9 +3003,11 @@
   return (si->unlock_state == ul_finished) ? 0 : -1;
 
 fail:
@@ -2668,7 +2667,7 @@
 
   if (responses)
     {
@@ -2196,11 +3068,14 @@ auth_finished_cb (saver_info *si)
@@ -2196,11 +3068,14 @@
       if (XPending (si->dpy))
         {
           XNextEvent (si->dpy, &event);
@@ -3080,9 +3079,9 @@
 
   if (uid_errno == 0 && gid_errno == 0 && sgs_errno == 0)
diff --git driver/subprocs.c driver/subprocs.c
--- driver/subprocs.c
+++ driver/subprocs.c
@@ -243,7 +243,11 @@ show_job_list (void)
--- driver/subprocs.c.~2~    2020-05-01 20:20:35.357686319 +0000
+++ driver/subprocs.c    2020-05-01 20:35:45.252532023 +0000
@@ -252,7 +252,11 @@
 
 static void clean_job_list (void);
 
@@ -3094,19 +3093,7 @@
 make_job (pid_t pid, int screen, const char *cmd)
 {
   struct screenhack_job *job = (struct screenhack_job *) malloc (sizeof(*job));
@@ -407,7 +411,11 @@ unblock_sigchld (void)
   block_sigchld_handler--;
 }
+#ifdef HAVE_XSCREENSAVER_LOCK
+int
+#else
 static int
+#endif
 kill_job (saver_info *si, pid_t pid, int signal)
 {
   saver_preferences *p = &si->prefs;
@@ -590,9 +598,14 @@ describe_dead_child (saver_info *si, pid_t kid, int wait_status)
@@ -628,9 +632,14 @@
      mention them) if we've just killed the subprocess.  But mention them
      if they happen on their own.
        */
@@ -3124,7 +3111,7 @@
         {
           /* Don't call fprintf() from signal handlers, as it might malloc.
       fprintf (stderr,
@@ -632,8 +645,12 @@ describe_dead_child (saver_info *si, pid_t kid, int wait_status)
@@ -670,8 +679,12 @@
   else if (WIFSIGNALED (wait_status))
     {
       if (p->verbose_p ||
@@ -3139,31 +3126,22 @@
       WTERMSIG (wait_status) != SIGTERM)
         {
           /* Don't call fprintf() from signal handlers, as it might malloc.
@@ -701,12 +718,20 @@ describe_dead_child (saver_info *si, pid_t kid, int wait_status)
   /* Clear out the pid so that screenhack_running_p() knows it's dead.
    */
   if (!job || job->status == job_dead)
+    {
     for (i = 0; i < si->nscreens; i++)
       {
     saver_screen_info *ssi = &si->screens[i];
@@ -746,6 +759,12 @@
     if (kid == ssi->pid)
       ssi->pid = 0;
       }
+#ifdef HAVE_XSCREENSAVER_LOCK
+      if (kid == si->passwd_pid)
+    {
+      si->passwd_pid = 0;
+    }
+       {
+         si->passwd_pid = 0;
+       }
+#endif
+    }
 }
 #else  /* VMS */
diff --git driver/timers.c driver/timers.c
--- driver/timers.c
+++ driver/timers.c
@@ -48,6 +48,8 @@
 # ifdef HAVE_LIBSYSTEMD
     if (kid == si->systemd_pid)
       si->systemd_pid = 0;
--- driver/timers.c.~2~    2020-05-01 20:20:35.397711212 +0000
+++ driver/timers.c    2020-05-01 20:23:54.997791766 +0000
@@ -49,6 +49,8 @@
 
 #include "xscreensaver.h"
 #include "atoms.h"
@@ -3172,7 +3150,7 @@
 
 #undef ABS
 #define ABS(x)((x)<0?-(x):(x))
@@ -60,6 +62,11 @@ static Bool proc_interrupts_activity_p (saver_info *si);
@@ -62,6 +64,11 @@
 #endif /* HAVE_PROC_INTERRUPTS */
 
 static void check_for_clock_skew (saver_info *si);
@@ -3184,7 +3162,7 @@
 
 
 void
@@ -255,7 +262,11 @@ cycle_timer (XtPointer closure, XtIntervalId *id)
@@ -259,7 +266,11 @@
        crash.  So, restart the thing once an hour. */
     how_long = 1000 * 60 * 60;
 
@@ -3196,12 +3174,11 @@
     {
       if (p->verbose_p)
     fprintf (stderr, "%s: dialog box up; delaying hack change.\n",
@@ -308,7 +319,28 @@ activate_lock_timer (XtPointer closure, XtIntervalId *id)
@@ -318,7 +329,27 @@
        screen was locked, instead of duplicating the blank time. */
     si->blank_time = time ((time_t *) 0);
 
   if (p->verbose_p)
     fprintf (stderr, "%s: timed out; activating lock.\n", blurb());
-  set_locked_p (si, True);
+
+  if (si->locked_p)
+    {
+      if (p->verbose_p)
@@ -3226,7 +3203,7 @@
 }
 
 
@@ -587,14 +619,30 @@ dispatch_event (saver_info *si, XEvent *event)
@@ -639,14 +670,30 @@
 }
 
 
@@ -3257,7 +3234,7 @@
 
   event = *e;
 
@@ -607,10 +655,12 @@ swallow_unlock_typeahead_events (saver_info *si, XEvent *e)
@@ -659,10 +706,12 @@
           if (size != 1) continue;
           switch (*s)
             {
@@ -3270,7 +3247,7 @@
             case '\012': case '\015':            /* Enter */
             case '\033':                /* ESC */
               i = 0;
@@ -620,7 +670,17 @@ swallow_unlock_typeahead_events (saver_info *si, XEvent *e)
@@ -672,7 +721,17 @@
                 break;  /* ignore space at beginning of line */
               /* else, fall through */
             default:
@@ -3288,7 +3265,7 @@
               break;
             }
         }
@@ -628,6 +688,7 @@ swallow_unlock_typeahead_events (saver_info *si, XEvent *e)
@@ -680,6 +739,7 @@
     } while (i < sizeof(buf)-1 &&
              XCheckMaskEvent (si->dpy, KeyPressMask, &event));
 
@@ -3296,7 +3273,7 @@
   buf[i] = 0;
 
   if (si->unlock_typeahead)
@@ -642,6 +703,7 @@ swallow_unlock_typeahead_events (saver_info *si, XEvent *e)
@@ -694,6 +754,7 @@
     si->unlock_typeahead = 0;
 
   memset (buf, 0, sizeof(buf));
@@ -3304,7 +3281,7 @@
 }
 
 
@@ -824,6 +886,7 @@ sleep_until_idle (saver_info *si, Bool until_idle_p)
@@ -877,6 +938,7 @@
     if (handle_clientmessage (si, &event.x_event, until_idle_p))
           {
             why = "ClientMessage";
@@ -3312,7 +3289,7 @@
             goto DONE;
           }
     break;
@@ -838,6 +901,47 @@ sleep_until_idle (saver_info *si, Bool until_idle_p)
@@ -891,6 +953,47 @@
       }
     break;
 
@@ -3360,7 +3337,7 @@
       case KeyPress:
       case ButtonPress:
       /* Ignore release events so that hitting ESC at the password dialog
@@ -1457,7 +1561,11 @@ watchdog_timer (XtPointer closure, XtIntervalId *id)
@@ -1649,7 +1752,11 @@
     {
       Bool running_p = screenhack_running_p (si);
 
@@ -3372,18 +3349,17 @@
         {
           if (si->prefs.debug_p)
             fprintf (stderr, "%s: dialog box is up: not raising screen.\n",
diff --git driver/types.h driver/types.h
--- driver/types.h
+++ driver/types.h
@@ -275,12 +275,29 @@
   int unlock_failures;        /* Counts failed login attempts while the
                    screen is locked. */
--- driver/types.h.~1~    2020-05-01 20:20:35.458573937 +0000
+++ driver/types.h    2020-05-01 20:27:06.092435373 +0000
@@ -277,11 +277,29 @@
   time_t unlock_failure_time;    /* Time of first failed login attempt. */
   time_t unlock_dismiss_time;    /* Time lock dialog most recently dismissed. */
+#ifdef HAVE_XSCREENSAVER_LOCK
+  Window *raise_wins;          /* List of windows to raise above the   */
+  int num_raise_wins;          /*  virtual root/hack display, such as  */
+  int max_raise_wins;          /*  accessibility helpers               */
+
+  Window *override_wins;        /* Windows we had to unset the          */
+  int num_override_wins;        /*  override_redirect attribute on and  */
+  int max_override_wins;        /*  need to restore it on after unlock. */
components/desktop/xscreensaver/patches/12-barcode-hack.patch
@@ -35,13 +35,14 @@
 1 files changed, 110 insertions(+), 14 deletions(-)
diff --git hacks/barcode.c hacks/barcode.c
--- hacks/barcode.c
+++ hacks/barcode.c
@@ -102,44 +102,67 @@ static const char *words[] =
   "addiction",
--- hacks/barcode.c.~1~    2019-08-22 06:11:07.000000000 +0000
+++ hacks/barcode.c    2020-05-01 21:01:47.670887982 +0000
@@ -104,49 +104,71 @@
   "affluenza",
   "alertness",
   "Algeria",
+  "Amber Road",
   "antifa",
   "anxiety",
   "aorta",
   "argyle socks",
@@ -49,7 +50,7 @@
+  "automagic",
   "axis of evil",
   "bamboo",
+  "banana slug",
   "banana slug",
   "bangle",
   "bankruptcy",
   "baptism",
@@ -73,6 +74,7 @@
   "booty",
   "bread",
+  "brickify",
   "brogrammers",
+  "browncoat",
   "bubba",
   "burrito",
@@ -86,13 +88,15 @@
   "children",
+  "chime",
   "chocolate",
+  "chupacabra",
   "chupacabra",
+  "cinnabar",
+  "Clear View",
+  "chupacabra",
   "CLONE",
-  "cock",
+  "Colorado",
+  "Complete.",
+  "Complete",
   "congress",
   "constriction",
   "contrition",
   "cop",
@@ -108,7 +112,7 @@
   "Death",
   "decepticon",
   "deception",
@@ -148,22 +171,31 @@ static const char *words[] =
@@ -155,6 +177,7 @@
   "decoy",
   "defenestration",
   "democracy",
@@ -116,12 +120,10 @@
   "dependency",
   "despair",
   "desperation",
   "disease",
   "disease",
@@ -163,14 +186,22 @@
   "doberman",
+  "dot com",
   "DOOM",
-  "dreams",
   "dot com",
+  "DREAM",
   "dreams",
   "drugs",
@@ -141,7 +143,7 @@
   "excommunication",
   "fat",
   "fatherland",
@@ -171,18 +203,28 @@ static const char *words[] =
@@ -178,19 +209,30 @@
   "fear",
   "fever",
   "filth",
@@ -150,11 +152,12 @@
   "flatulence",
   "fluff",
   "fnord",
+  "FOX",
+  "frak",
+  "FOX",
   "followers",
   "frak",
   "freedom",
   "fruit",
-  "fruit",
+  "fugu",
   "futility",
+  "galaxy",
@@ -172,7 +175,7 @@
   "halibut",
   "handmaid",
   "happiness",
@@ -193,23 +235,31 @@ static const char *words[] =
@@ -201,12 +243,15 @@
   "heroin",
   "heroine",
   "hope",
@@ -182,12 +185,13 @@
   "icepick",
   "identity",
   "ignorance",
+  "illumonati",
   "illuminati",
   "importance",
+  "Indiana",
   "individuality",
   "inkling",
   "insurrection",
   "influence",
   "influencers",
@@ -216,12 +261,16 @@
   "intoxicant",
   "ire",
   "irritant",
@@ -204,7 +208,7 @@
   "lathe",
   "lattice",
   "lawyer",
@@ -218,32 +268,49 @@ static const char *words[] =
@@ -231,11 +280,18 @@
   "lobbyist",
   "love",
   "lozenge",
@@ -220,9 +224,10 @@
+  "McGill",
+  "Menlo Park",
+  "mercurial",
   "measles",
   "merit",
   "merkin",
   "mescaline",
@@ -244,21 +300,31 @@
   "milk",
   "mischief",
   "mistrust",
@@ -254,7 +259,7 @@
   "passenger",
   "passion",
   "Passover",
@@ -253,19 +320,21 @@ static const char *words[] =
@@ -268,19 +334,21 @@
   "petticoat",
   "pharmacist",
   "PhD",
@@ -278,11 +283,10 @@
   "quagmire",
   "quarantine",
   "quartz",
@@ -274,13 +343,18 @@ static const char *words[] =
   "rage",
@@ -290,13 +358,20 @@
   "readout",
   "reality",
-  "rectum",
   "rectum",
+  "register",
   "reject",
   "rejection",
@@ -291,18 +295,21 @@
   "revolution",
   "roadrunner",
+  "rock",
   "rootkit",
   "rule",
+  "Saint Petersburg",
+  "sagebrush",
+  "Santa Clara",
+  "Santa Cruz",
   "savor",
   "scab",
   "scalar",
@@ -289,43 +363,61 @@ static const char *words[] =
@@ -305,40 +380,56 @@
   "security",
   "sediment",
   "self worth",
+  "shiny",
   "shadow profile",
   "sickness",
+  "sierra",
   "silicone",
@@ -337,41 +344,43 @@
   "terrorist",
+  "Tesla",
   "the impossible",
   "the panopticon",
+  "the possimpible",
   "the unknown",
+  "thumper",
+  "tiger",
+  "tonic",
   "toast",
+  "tonic",
+  "Tonopah",
   "topography",
   "truism",
+  "truthiness",
   "truthiness",
+  "Tsinghua",
   "turgid",
+  "uisce",
+  "unbreakable",
   "twits",
   "underbrush",
   "underling",
   "unguent",
@@ -346,6 +437,7 @@
   "unusual",
   "uplink",
   "urge",
+  "Utah",
   "vaccines",
   "valor",
   "variance",
   "vaudeville",
@@ -333,8 +425,7 @@ static const char *words[] =
   "vegetarian",
@@ -355,8 +447,7 @@
   "venom",
   "verifiability",
   "very fine people",
-  "viagra",
-  "vibrator",
+  "vermillion",
   "victim",
   "vignette",
   "villainy",
@@ -344,25 +435,30 @@ static const char *words[] =
@@ -366,24 +457,30 @@
   "warehouse",
   "waste",
   "waveform",
@@ -382,7 +391,6 @@
+  "Winchester",
   "words",
   "worm",
   "worship",
   "worship",
-  "Xanax",
+  "Wyoming",
@@ -398,10 +406,10 @@
   "zebra",
   "zest",
-  "zinc"
+  "zinc",
+  "zettabyte",
+  "zinc",
+  "Zulu"
 };
 
 #define WORD_COUNT (sizeof(words) / sizeof(char *))
components/desktop/xscreensaver/patches/15-bug-6583181.patch
File was deleted
components/desktop/xscreensaver/patches/17-bug-6583247.patch
File was deleted
components/desktop/xscreensaver/patches/18-bug-4802301.patch
File was deleted
components/desktop/xscreensaver/patches/21-verbose.patch
File was deleted
components/desktop/xscreensaver/patches/22-bug-7033508.patch
@@ -29,7 +29,7 @@
diff --git driver/lock.c driver/lock.c
--- driver/lock.c
+++ driver/lock.c
@@ -918,6 +918,7 @@ new_passwd_window (saver_info *si)
@@ -897,6 +897,7 @@
                blurb(), pw->prompt_screen->number);
   }
 
@@ -37,7 +37,7 @@
   /* Before mapping the window, save a pixmap of the current screen.
      When we lower the window, we restore these bits.  This works,
      because the running screenhack has already been sent SIGSTOP, so
@@ -939,6 +940,7 @@ new_passwd_window (saver_info *si)
@@ -918,6 +919,7 @@
            0, 0);
     XFreeGC (si->dpy, gc);
   }
@@ -45,15 +45,15 @@
 
   si->pw_data = pw;
   return 0;
@@ -3102,8 +3104,6 @@ unlock_p (saver_info *si)
@@ -3109,8 +3111,6 @@
       return False;
     }
 
-  raise_window (si, True, True, True);
-
   xss_authenticate(si, p->verbose_p);
   return (si->unlock_state == ul_success);
   /* If your cat is sitting on the return key, don't thrash the window.
      Only one failed/cancelled unlock per 2 seconds.
    */
diff --git driver/xscreensaver.c driver/xscreensaver.c
--- driver/xscreensaver.c
+++ driver/xscreensaver.c
components/desktop/xscreensaver/xscreensaver.p5m
@@ -91,6 +91,7 @@
file path=usr/share/man/man1/xscreensaver-getimage-file.1
file path=usr/share/man/man1/xscreensaver-getimage-video.1
file path=usr/share/man/man1/xscreensaver-getimage.1
#file path=usr/share/man/man1/xscreensaver-systemd.1
file path=usr/share/man/man1/xscreensaver-text.1
file path=usr/share/man/man1/xscreensaver.1
file path=usr/share/pixmaps/xscreensaver.xpm
components/desktop/xscreensaver/xscreensaver_hacks.p5m
@@ -120,6 +120,7 @@
file path=usr/lib/xscreensaver/config/control-center-2.0/rocks.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/rorschach.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/rotzoomer.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/scooter.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/shadebobs.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/sierpinski.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/slidescreen.xml
@@ -238,6 +239,7 @@
file path=usr/lib/xscreensaver/hacks/rocks
file path=usr/lib/xscreensaver/hacks/rorschach
file path=usr/lib/xscreensaver/hacks/rotzoomer
file path=usr/lib/xscreensaver/hacks/scooter
file path=usr/lib/xscreensaver/hacks/shadebobs
file path=usr/lib/xscreensaver/hacks/sierpinski
file path=usr/lib/xscreensaver/hacks/slidescreen
@@ -354,6 +356,7 @@
file path=usr/share/man/man6/rocks.6
file path=usr/share/man/man6/rorschach.6
file path=usr/share/man/man6/rotzoomer.6
file path=usr/share/man/man6/scooter.6
file path=usr/share/man/man6/shadebobs.6
file path=usr/share/man/man6/sierpinski.6
file path=usr/share/man/man6/slidescreen.6
components/desktop/xscreensaver/xscreensaver_hacks_gl.p5m
@@ -54,11 +54,13 @@
file path=usr/lib/xscreensaver/config/control-center-2.0/cubetwist.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/cubicgrid.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/dangerball.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/deepstars.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/discoball.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/dymaxionmap.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/endgame.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/energystream.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/engine.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/etruscanvenus.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/flipflop.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/flipscreen3d.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/fliptext.xml
@@ -66,6 +68,7 @@
file path=usr/lib/xscreensaver/config/control-center-2.0/gears.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/geodesicgears.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/gflux.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/gibson.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/glblur.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/glcells.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/gleidescope.xml
@@ -77,6 +80,7 @@
file path=usr/lib/xscreensaver/config/control-center-2.0/glslideshow.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/glsnake.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/gltext.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/gravitywell.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/handsy.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/hexstrut.xml
file path=usr/lib/xscreensaver/config/control-center-2.0/hydrostat.xml
@@ -152,11 +156,13 @@
file path=usr/lib/xscreensaver/hacks/cubetwist
file path=usr/lib/xscreensaver/hacks/cubicgrid
file path=usr/lib/xscreensaver/hacks/dangerball
file path=usr/lib/xscreensaver/hacks/deepstars
file path=usr/lib/xscreensaver/hacks/discoball
file path=usr/lib/xscreensaver/hacks/dymaxionmap
file path=usr/lib/xscreensaver/hacks/endgame
file path=usr/lib/xscreensaver/hacks/energystream
file path=usr/lib/xscreensaver/hacks/engine
file path=usr/lib/xscreensaver/hacks/etruscanvenus
file path=usr/lib/xscreensaver/hacks/flipflop
file path=usr/lib/xscreensaver/hacks/flipscreen3d
file path=usr/lib/xscreensaver/hacks/fliptext
@@ -164,6 +170,7 @@
file path=usr/lib/xscreensaver/hacks/gears
file path=usr/lib/xscreensaver/hacks/geodesicgears
file path=usr/lib/xscreensaver/hacks/gflux
file path=usr/lib/xscreensaver/hacks/gibson
file path=usr/lib/xscreensaver/hacks/glblur
file path=usr/lib/xscreensaver/hacks/glcells
file path=usr/lib/xscreensaver/hacks/gleidescope
@@ -175,6 +182,7 @@
file path=usr/lib/xscreensaver/hacks/glslideshow
file path=usr/lib/xscreensaver/hacks/glsnake
file path=usr/lib/xscreensaver/hacks/gltext
file path=usr/lib/xscreensaver/hacks/gravitywell
file path=usr/lib/xscreensaver/hacks/handsy
file path=usr/lib/xscreensaver/hacks/hexstrut
file path=usr/lib/xscreensaver/hacks/hydrostat
@@ -249,11 +257,13 @@
file path=usr/share/man/man6/cubestorm.6
file path=usr/share/man/man6/cubicgrid.6
file path=usr/share/man/man6/dangerball.6
file path=usr/share/man/man6/deepstars.6
file path=usr/share/man/man6/discoball.6
file path=usr/share/man/man6/dymaxionmap.6
file path=usr/share/man/man6/endgame.6
file path=usr/share/man/man6/energystream.6
file path=usr/share/man/man6/engine.6
file path=usr/share/man/man6/etruscanvenus.6
file path=usr/share/man/man6/flipflop.6
file path=usr/share/man/man6/flipscreen3d.6
file path=usr/share/man/man6/fliptext.6
@@ -261,6 +271,7 @@
file path=usr/share/man/man6/gears.6
file path=usr/share/man/man6/geodesicgears.6
file path=usr/share/man/man6/gflux.6
file path=usr/share/man/man6/gibson.6
file path=usr/share/man/man6/glblur.6
file path=usr/share/man/man6/glcells.6
file path=usr/share/man/man6/gleidescope.6
@@ -272,6 +283,7 @@
file path=usr/share/man/man6/glslideshow.6
file path=usr/share/man/man6/glsnake.6
file path=usr/share/man/man6/gltext.6
file path=usr/share/man/man6/gravitywell.6
file path=usr/share/man/man6/handsy.6
file path=usr/share/man/man6/hexstrut.6
file path=usr/share/man/man6/hydrostat.6