xscreensaver-05-atoms.diff revision 19117
14ea4bb737263733ad80a36b4f73f681c30a6b45sd/*
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
14ea4bb737263733ad80a36b4f73f681c30a6b45sd *
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * Permission is hereby granted, free of charge, to any person obtaining a
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * copy of this software and associated documentation files (the "Software"),
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * to deal in the Software without restriction, including without limitation
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * the rights to use, copy, modify, merge, publish, distribute, sublicense,
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * and/or sell copies of the Software, and to permit persons to whom the
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * Software is furnished to do so, subject to the following conditions:
14ea4bb737263733ad80a36b4f73f681c30a6b45sd *
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * The above copyright notice and this permission notice (including the next
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * paragraph) shall be included in all copies or substantial portions of the
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * Software.
14ea4bb737263733ad80a36b4f73f681c30a6b45sd *
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
14ea4bb737263733ad80a36b4f73f681c30a6b45sd * DEALINGS IN THE SOFTWARE.
14ea4bb737263733ad80a36b4f73f681c30a6b45sd */
6876da76f91687fee15a706830b990a2c0d55157Trang Do
14ea4bb737263733ad80a36b4f73f681c30a6b45sdCentralize atom handling and use XInternAtoms to get the atoms from
14ea4bb737263733ad80a36b4f73f681c30a6b45sdthe server in one round trip instead of a separate synchronous/blocking
14ea4bb737263733ad80a36b4f73f681c30a6b45sdround trip for each XInternAtom individual call.
14ea4bb737263733ad80a36b4f73f681c30a6b45sd---
14ea4bb737263733ad80a36b4f73f681c30a6b45sd driver/Makefile.in | 14 +++---
535ec645ca371f1ce298eaf76bf8feb73494f923dduvall driver/atoms.c | 113 +++++++++++++++++++++++++++++++++++++++++
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh driver/atoms.h | 33 ++++++++++++
dd566498928f08e7c9a79797a40db893c6a4b9fbvn driver/demo-Gtk.c | 26 ++-------
14ea4bb737263733ad80a36b4f73f681c30a6b45sd driver/demo-Xm.c | 25 ++-------
14ea4bb737263733ad80a36b4f73f681c30a6b45sd driver/remote.c | 4 +-
dd566498928f08e7c9a79797a40db893c6a4b9fbvn driver/windows.c | 4 +-
dd566498928f08e7c9a79797a40db893c6a4b9fbvn driver/xscreensaver-command.c | 35 ++-----------
14ea4bb737263733ad80a36b4f73f681c30a6b45sd driver/xscreensaver.c | 45 ++++++-----------
dd566498928f08e7c9a79797a40db893c6a4b9fbvn driver/xscreensaver.h | 3 -
dd566498928f08e7c9a79797a40db893c6a4b9fbvn 10 files changed, 188 insertions(+), 114 deletions(-)
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh create mode 100644 driver/atoms.c
dd566498928f08e7c9a79797a40db893c6a4b9fbvn create mode 100644 driver/atoms.h
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sddiff --git xscreensaver-5.12/driver/Makefile.in xscreensaver-5.12/driver/Makefile.in
14ea4bb737263733ad80a36b4f73f681c30a6b45sd--- xscreensaver-5.12/driver/Makefile.in
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+++ xscreensaver-5.12/driver/Makefile.in
14ea4bb737263733ad80a36b4f73f681c30a6b45sd@@ -190,18 +190,18 @@ SAVER_OBJS_1 = xscreensaver.o windows.o screens.o timers.o subprocs.o \
14ea4bb737263733ad80a36b4f73f681c30a6b45sd exec.o xset.o splash.o setuid.o stderr.o mlstring.o
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd SAVER_SRCS = $(SAVER_SRCS_1) prefs.c dpms.c $(LOCK_SRCS) \
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- $(SAVER_UTIL_SRCS) $(GL_SRCS)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ $(SAVER_UTIL_SRCS) $(GL_SRCS) atoms.c
14ea4bb737263733ad80a36b4f73f681c30a6b45sd SAVER_OBJS = $(SAVER_OBJS_1) prefs.o dpms.o $(LOCK_OBJS) \
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- $(SAVER_UTIL_OBJS) $(GL_OBJS)
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ $(SAVER_UTIL_OBJS) $(GL_OBJS) atoms.o
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh-CMD_SRCS = remote.c xscreensaver-command.c
dd566498928f08e7c9a79797a40db893c6a4b9fbvn-CMD_OBJS = remote.o xscreensaver-command.o
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+CMD_SRCS = remote.c atoms.c xscreensaver-command.c
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+CMD_OBJS = remote.o atoms.o xscreensaver-command.o
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
14ea4bb737263733ad80a36b4f73f681c30a6b45sd DEMO_SRCS_1 = prefs.c dpms.c
14ea4bb737263733ad80a36b4f73f681c30a6b45sd DEMO_OBJS_1 = prefs.o dpms.o
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-DEMO_SRCS = $(DEMO_SRCS_1) remote.c exec.c $(DEMO_UTIL_SRCS)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-DEMO_OBJS = $(DEMO_OBJS_1) remote.o exec.o $(DEMO_UTIL_OBJS)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+DEMO_SRCS = $(DEMO_SRCS_1) remote.c atoms.c exec.c $(DEMO_UTIL_SRCS)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+DEMO_OBJS = $(DEMO_OBJS_1) remote.o atoms.o exec.o $(DEMO_UTIL_OBJS)
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvn PDF2JPEG_SRCS = pdf2jpeg.m
dd566498928f08e7c9a79797a40db893c6a4b9fbvn PDF2JPEG_OBJS = pdf2jpeg.o
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh@@ -231,7 +231,7 @@ SCRIPTS = $(SCRIPTS_1) @SCRIPTS_OSX@
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh HDRS = XScreenSaver_ad.h XScreenSaver_Xm_ad.h \
dd566498928f08e7c9a79797a40db893c6a4b9fbvn xscreensaver.h prefs.h remote.h exec.h \
dd566498928f08e7c9a79797a40db893c6a4b9fbvn demo-Gtk-widgets.h demo-Gtk-stubs.h demo-Gtk-support.h \
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- demo-Gtk-conf.h auth.h mlstring.h types.h
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ demo-Gtk-conf.h auth.h mlstring.h types.h atoms.h
dd566498928f08e7c9a79797a40db893c6a4b9fbvn MEN_1 = xscreensaver.man xscreensaver-demo.man \
dd566498928f08e7c9a79797a40db893c6a4b9fbvn xscreensaver-command.man \
14ea4bb737263733ad80a36b4f73f681c30a6b45sd xscreensaver-text.man \
14ea4bb737263733ad80a36b4f73f681c30a6b45sddiff --git xscreensaver-5.12/driver/atoms.c xscreensaver-5.12/driver/atoms.c
14ea4bb737263733ad80a36b4f73f681c30a6b45sdnew file mode 100644
14ea4bb737263733ad80a36b4f73f681c30a6b45sd--- /dev/null
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+++ xscreensaver-5.12/driver/atoms.c
14ea4bb737263733ad80a36b4f73f681c30a6b45sd@@ -0,0 +1,113 @@
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+/* xscreensaver, Copyright (c) 1991-2010 Jamie Zawinski <jwz@jwz.org>
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ *
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ * Permission to use, copy, modify, distribute, and sell this software and its
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ * documentation for any purpose is hereby granted without fee, provided that
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ * the above copyright notice appear in all copies and that both that
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ * copyright notice and this permission notice appear in supporting
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ * documentation. No representations are made about the suitability of this
6876da76f91687fee15a706830b990a2c0d55157Trang Do+ * software for any purpose. It is provided "as is" without express or
6876da76f91687fee15a706830b990a2c0d55157Trang Do+ * implied warranty.
6876da76f91687fee15a706830b990a2c0d55157Trang Do+ */
6876da76f91687fee15a706830b990a2c0d55157Trang Do+
6876da76f91687fee15a706830b990a2c0d55157Trang Do+#ifdef HAVE_CONFIG_H
6876da76f91687fee15a706830b990a2c0d55157Trang Do+# include "config.h"
6876da76f91687fee15a706830b990a2c0d55157Trang Do+#endif
6876da76f91687fee15a706830b990a2c0d55157Trang Do+
6876da76f91687fee15a706830b990a2c0d55157Trang Do+#include <stdio.h>
6876da76f91687fee15a706830b990a2c0d55157Trang Do+#include <stdlib.h>
6876da76f91687fee15a706830b990a2c0d55157Trang Do+#include <sys/types.h>
6876da76f91687fee15a706830b990a2c0d55157Trang Do+
6876da76f91687fee15a706830b990a2c0d55157Trang Do+#include <X11/Xproto.h> /* for CARD32 */
6876da76f91687fee15a706830b990a2c0d55157Trang Do+#include <X11/Xlib.h>
6876da76f91687fee15a706830b990a2c0d55157Trang Do+#include <X11/Xos.h>
6876da76f91687fee15a706830b990a2c0d55157Trang Do+
6876da76f91687fee15a706830b990a2c0d55157Trang Do+#include "atoms.h"
6876da76f91687fee15a706830b990a2c0d55157Trang Do+
6876da76f91687fee15a706830b990a2c0d55157Trang Do+/* Atoms to retrieve info from remote daemon */
6876da76f91687fee15a706830b990a2c0d55157Trang Do+Atom XA_SCREENSAVER, XA_SCREENSAVER_ID, XA_SCREENSAVER_VERSION,
6876da76f91687fee15a706830b990a2c0d55157Trang Do+ XA_SCREENSAVER_RESPONSE, XA_SCREENSAVER_STATUS;
6876da76f91687fee15a706830b990a2c0d55157Trang Do+
6876da76f91687fee15a706830b990a2c0d55157Trang Do+/* Atoms to send commands to remote daemon */
6876da76f91687fee15a706830b990a2c0d55157Trang Do+Atom XA_ACTIVATE, XA_BLANK, XA_CYCLE, XA_DEACTIVATE, XA_DEMO,
6876da76f91687fee15a706830b990a2c0d55157Trang Do+ XA_EXIT, XA_LOCK, XA_NEXT, XA_PREFS, XA_PREV, XA_RESTART,
6876da76f91687fee15a706830b990a2c0d55157Trang Do+ XA_SELECT, XA_THROTTLE, XA_UNTHROTTLE;
6876da76f91687fee15a706830b990a2c0d55157Trang Do+
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+static const struct atom_request remote_control_atom_list[] =
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+{
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_SCREENSAVER, "SCREENSAVER" },
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ { &XA_SCREENSAVER_ID, "_SCREENSAVER_ID" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_SCREENSAVER_VERSION, "_SCREENSAVER_VERSION" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_SCREENSAVER_RESPONSE, "_SCREENSAVER_RESPONSE" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_SCREENSAVER_STATUS, "_SCREENSAVER_STATUS" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_ACTIVATE, "ACTIVATE" },
1557e65f9d0c6fde875d807c12fc03ea20f50280vn+ { &XA_BLANK, "BLANK" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_CYCLE, "CYCLE" },
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ { &XA_DEACTIVATE, "DEACTIVATE" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_DEMO, "DEMO" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_EXIT, "EXIT" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_LOCK, "LOCK" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_NEXT, "NEXT" },
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ { &XA_PREFS, "PREFS" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_PREV, "PREV" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_RESTART, "RESTART" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_SELECT, "SELECT" },
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ { &XA_THROTTLE, "THROTTLE" },
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ { &XA_UNTHROTTLE, "UNTHROTTLE" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { NULL, NULL } /* Must be last to terminate list */
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+};
1557e65f9d0c6fde875d807c12fc03ea20f50280vn+
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+const struct atom_request *remote_control_atoms = remote_control_atom_list;
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+/* Load a list of atoms in a single round trip to the X server instead of
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ waiting for a synchronous round trip for each and every atom */
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+Status request_atoms ( Display *dpy,
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ const struct atom_request **request_lists )
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+{
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ int atom_count, n;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ Status result;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ const struct atom_request **l, *r;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ Atom *atoms;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ const char **names;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ /* Count the number of items across all the lists passed in */
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ atom_count = 0;
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ for (l = request_lists; l != NULL && *l != NULL; l++)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ {
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ for (r = *l; r != NULL && r->name != NULL; r++)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ {
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ atom_count++;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ }
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ }
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ atoms = calloc(atom_count, sizeof(Atom));
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ names = calloc(atom_count, sizeof(char *));
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ if (!atoms || !names)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ return -1;
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ n = 0;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ for (l = request_lists; l != NULL && *l != NULL; l++)
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ {
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ for (r = *l; r != NULL && r->name != NULL; r++)
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ {
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ names[n++] = r->name;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ }
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ }
535ec645ca371f1ce298eaf76bf8feb73494f923dduvall+ result = XInternAtoms( dpy, (char **) names, atom_count, False, atoms );
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+
1557e65f9d0c6fde875d807c12fc03ea20f50280vn+ n = 0;
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ for (l = request_lists; l != NULL && *l != NULL; l++)
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ {
1557e65f9d0c6fde875d807c12fc03ea20f50280vn+ for (r = *l; r != NULL && r->name != NULL; r++)
1557e65f9d0c6fde875d807c12fc03ea20f50280vn+ {
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+#if DEBUG_ATOMS
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ fprintf (stderr, "atom: %s => %d\n", names[n], atoms[n]);
535ec645ca371f1ce298eaf76bf8feb73494f923dduvall+#endif
1557e65f9d0c6fde875d807c12fc03ea20f50280vn+ *(r->atomp) = atoms[n++];
1557e65f9d0c6fde875d807c12fc03ea20f50280vn+ }
1557e65f9d0c6fde875d807c12fc03ea20f50280vn+ }
1557e65f9d0c6fde875d807c12fc03ea20f50280vn+
1557e65f9d0c6fde875d807c12fc03ea20f50280vn+ free(atoms);
1557e65f9d0c6fde875d807c12fc03ea20f50280vn+ free(names);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+
6876da76f91687fee15a706830b990a2c0d55157Trang Do+ return result;
1557e65f9d0c6fde875d807c12fc03ea20f50280vn+}
1557e65f9d0c6fde875d807c12fc03ea20f50280vndiff --git xscreensaver-5.12/driver/atoms.h xscreensaver-5.12/driver/atoms.h
1557e65f9d0c6fde875d807c12fc03ea20f50280vnnew file mode 100644
1da218965c488f7b3d6e513e49cda33fdbc08b7fvn--- /dev/null
ef8846857fcf954444cdc77e72249afef48377d2rb+++ xscreensaver-5.12/driver/atoms.h
dd566498928f08e7c9a79797a40db893c6a4b9fbvn@@ -0,0 +1,33 @@
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+/* xscreensaver, Copyright (c) 1991-2010 Jamie Zawinski <jwz@jwz.org>
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ *
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ * Permission to use, copy, modify, distribute, and sell this software and its
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ * documentation for any purpose is hereby granted without fee, provided that
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ * the above copyright notice appear in all copies and that both that
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ * copyright notice and this permission notice appear in supporting
535ec645ca371f1ce298eaf76bf8feb73494f923dduvall+ * documentation. No representations are made about the suitability of this
ef8846857fcf954444cdc77e72249afef48377d2rb+ * software for any purpose. It is provided "as is" without express or
ef8846857fcf954444cdc77e72249afef48377d2rb+ * implied warranty.
ef8846857fcf954444cdc77e72249afef48377d2rb+ */
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+#ifndef _XSCREENSAVER_ATOMS_H_
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+#define _XSCREENSAVER_ATOMS_H_
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+struct atom_request {
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+ Atom *atomp;
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+ const char *name;
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+};
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+extern const struct atom_request *remote_control_atoms;
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+extern Status request_atoms ( Display *dpy,
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+ const struct atom_request **request_lists );
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+/* Atoms to retrieve info from remote daemon */
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+extern Atom XA_SCREENSAVER, XA_SCREENSAVER_ID, XA_SCREENSAVER_VERSION,
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+ XA_SCREENSAVER_RESPONSE, XA_SCREENSAVER_STATUS;
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+/* Atoms to send commands to remote daemon */
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+extern Atom XA_ACTIVATE, XA_BLANK, XA_CYCLE, XA_DEACTIVATE, XA_DEMO,
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+ XA_EXIT, XA_LOCK, XA_NEXT, XA_PREFS, XA_PREV, XA_RESTART,
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+ XA_SELECT, XA_THROTTLE, XA_UNTHROTTLE;
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+#endif /* _XSCREENSAVER_ATOMS_H_ */
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephhdiff --git xscreensaver-5.12/driver/demo-Gtk.c xscreensaver-5.12/driver/demo-Gtk.c
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh--- xscreensaver-5.12/driver/demo-Gtk.c
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+++ xscreensaver-5.12/driver/demo-Gtk.c
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh@@ -118,6 +118,7 @@
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh #include "resources.h" /* for parse_time() */
6876da76f91687fee15a706830b990a2c0d55157Trang Do #include "visual.h" /* for has_writable_cells() */
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh #include "remote.h" /* for xscreensaver_command() */
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh+#include "atoms.h"
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh #include "usleep.h"
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh #include "logo-50.xpm"
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh@@ -252,12 +253,6 @@ typedef struct {
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh a closure object of our own down into the various widget callbacks. */
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh static state *global_state_kludge;
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh-Atom XA_VROOT;
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh-Atom XA_SCREENSAVER, XA_SCREENSAVER_RESPONSE, XA_SCREENSAVER_VERSION;
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh-Atom XA_SCREENSAVER_ID, XA_SCREENSAVER_STATUS, XA_SELECT, XA_DEMO;
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh-Atom XA_ACTIVATE, XA_BLANK, XA_LOCK, XA_RESTART, XA_EXIT;
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh-
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh-
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh static void populate_demo_window (state *, int list_elt);
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh static void populate_prefs_page (state *);
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh static void populate_popup_window (state *);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn@@ -5032,20 +5027,11 @@ main (int argc, char **argv)
ef8846857fcf954444cdc77e72249afef48377d2rb
dd566498928f08e7c9a79797a40db893c6a4b9fbvn /* Intern the atoms that xscreensaver_command() needs.
dd566498928f08e7c9a79797a40db893c6a4b9fbvn */
ef8846857fcf954444cdc77e72249afef48377d2rb- XA_VROOT = XInternAtom (dpy, "__SWM_VROOT", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_SCREENSAVER = XInternAtom (dpy, "SCREENSAVER", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_SCREENSAVER_VERSION = XInternAtom (dpy, "_SCREENSAVER_VERSION",False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_SCREENSAVER_STATUS = XInternAtom (dpy, "_SCREENSAVER_STATUS", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_SCREENSAVER_ID = XInternAtom (dpy, "_SCREENSAVER_ID", False);
13faa91230bde46da937bf33010b9accc5bdeb59sd- XA_SCREENSAVER_RESPONSE = XInternAtom (dpy, "_SCREENSAVER_RESPONSE", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_SELECT = XInternAtom (dpy, "SELECT", False);
ef8846857fcf954444cdc77e72249afef48377d2rb- XA_DEMO = XInternAtom (dpy, "DEMO", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_ACTIVATE = XInternAtom (dpy, "ACTIVATE", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_BLANK = XInternAtom (dpy, "BLANK", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_LOCK = XInternAtom (dpy, "LOCK", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_EXIT = XInternAtom (dpy, "EXIT", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_RESTART = XInternAtom (dpy, "RESTART", False);
535ec645ca371f1ce298eaf76bf8feb73494f923dduvall-
13faa91230bde46da937bf33010b9accc5bdeb59sd+ {
13faa91230bde46da937bf33010b9accc5bdeb59sd+ const struct atom_request *atom_lists[2] = { NULL, NULL };
13faa91230bde46da937bf33010b9accc5bdeb59sd+ atom_lists[0] = remote_control_atoms;
13faa91230bde46da937bf33010b9accc5bdeb59sd+ request_atoms (dpy, atom_lists);
6876da76f91687fee15a706830b990a2c0d55157Trang Do+ }
13faa91230bde46da937bf33010b9accc5bdeb59sd
dd566498928f08e7c9a79797a40db893c6a4b9fbvn /* Create the window and all its widgets.
13faa91230bde46da937bf33010b9accc5bdeb59sd */
13faa91230bde46da937bf33010b9accc5bdeb59sddiff --git xscreensaver-5.12/driver/demo-Xm.c xscreensaver-5.12/driver/demo-Xm.c
13faa91230bde46da937bf33010b9accc5bdeb59sd--- xscreensaver-5.12/driver/demo-Xm.c
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+++ xscreensaver-5.12/driver/demo-Xm.c
dd566498928f08e7c9a79797a40db893c6a4b9fbvn@@ -82,6 +82,7 @@
dd566498928f08e7c9a79797a40db893c6a4b9fbvn #include "resources.h" /* for parse_time() */
14ea4bb737263733ad80a36b4f73f681c30a6b45sd #include "visual.h" /* for has_writable_cells() */
14ea4bb737263733ad80a36b4f73f681c30a6b45sd #include "remote.h" /* for xscreensaver_command() */
13faa91230bde46da937bf33010b9accc5bdeb59sd+#include "atoms.h"
dd566498928f08e7c9a79797a40db893c6a4b9fbvn #include "usleep.h"
13faa91230bde46da937bf33010b9accc5bdeb59sd
dd566498928f08e7c9a79797a40db893c6a4b9fbvn #include <stdio.h>
dd566498928f08e7c9a79797a40db893c6a4b9fbvn@@ -110,12 +111,6 @@ extern const char *visual_menu[];
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvn static char *short_version = 0;
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvn-Atom XA_VROOT;
dd566498928f08e7c9a79797a40db893c6a4b9fbvn-Atom XA_SCREENSAVER, XA_SCREENSAVER_RESPONSE, XA_SCREENSAVER_VERSION;
dd566498928f08e7c9a79797a40db893c6a4b9fbvn-Atom XA_SCREENSAVER_ID, XA_SCREENSAVER_STATUS, XA_SELECT, XA_DEMO;
dd566498928f08e7c9a79797a40db893c6a4b9fbvn-Atom XA_ACTIVATE, XA_BLANK, XA_LOCK, XA_RESTART, XA_EXIT;
dd566498928f08e7c9a79797a40db893c6a4b9fbvn-
dd566498928f08e7c9a79797a40db893c6a4b9fbvn-
1557e65f9d0c6fde875d807c12fc03ea20f50280vn static void populate_demo_window (Widget toplevel,
dd566498928f08e7c9a79797a40db893c6a4b9fbvn int which, prefs_pair *pair);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn static void populate_prefs_page (Widget top, prefs_pair *pair);
1557e65f9d0c6fde875d807c12fc03ea20f50280vn@@ -1791,19 +1786,11 @@ main (int argc, char **argv)
1557e65f9d0c6fde875d807c12fc03ea20f50280vn
dd566498928f08e7c9a79797a40db893c6a4b9fbvn /* Intern the atoms that xscreensaver_command() needs.
dd566498928f08e7c9a79797a40db893c6a4b9fbvn */
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_VROOT = XInternAtom (dpy, "__SWM_VROOT", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_SCREENSAVER = XInternAtom (dpy, "SCREENSAVER", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_SCREENSAVER_VERSION = XInternAtom (dpy, "_SCREENSAVER_VERSION",False);
1557e65f9d0c6fde875d807c12fc03ea20f50280vn- XA_SCREENSAVER_STATUS = XInternAtom (dpy, "_SCREENSAVER_STATUS", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_SCREENSAVER_ID = XInternAtom (dpy, "_SCREENSAVER_ID", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_SCREENSAVER_RESPONSE = XInternAtom (dpy, "_SCREENSAVER_RESPONSE", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_SELECT = XInternAtom (dpy, "SELECT", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_DEMO = XInternAtom (dpy, "DEMO", False);
1557e65f9d0c6fde875d807c12fc03ea20f50280vn- XA_ACTIVATE = XInternAtom (dpy, "ACTIVATE", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_BLANK = XInternAtom (dpy, "BLANK", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_LOCK = XInternAtom (dpy, "LOCK", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_EXIT = XInternAtom (dpy, "EXIT", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_RESTART = XInternAtom (dpy, "RESTART", False);
ef8846857fcf954444cdc77e72249afef48377d2rb+ {
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ const struct atom_request *atom_lists[2] = { NULL, NULL };
ef8846857fcf954444cdc77e72249afef48377d2rb+ atom_lists[0] = remote_control_atoms;
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ request_atoms (dpy, atom_lists);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+ }
ef8846857fcf954444cdc77e72249afef48377d2rb
ef8846857fcf954444cdc77e72249afef48377d2rb /* Create the window and all its widgets.
dd566498928f08e7c9a79797a40db893c6a4b9fbvn */
dd566498928f08e7c9a79797a40db893c6a4b9fbvndiff --git xscreensaver-5.12/driver/remote.c xscreensaver-5.12/driver/remote.c
dd566498928f08e7c9a79797a40db893c6a4b9fbvn--- xscreensaver-5.12/driver/remote.c
ef8846857fcf954444cdc77e72249afef48377d2rb+++ xscreensaver-5.12/driver/remote.c
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avn@@ -34,15 +34,13 @@
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avn #include <X11/Xos.h>
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avn
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avn #include "remote.h"
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen+#include "atoms.h"
ef8846857fcf954444cdc77e72249afef48377d2rb
dd566498928f08e7c9a79797a40db893c6a4b9fbvn #ifdef _VROOT_H_
dd566498928f08e7c9a79797a40db893c6a4b9fbvn ERROR! you must not include vroot.h in this file
dd566498928f08e7c9a79797a40db893c6a4b9fbvn #endif
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
ef8846857fcf954444cdc77e72249afef48377d2rb extern char *progname;
ef8846857fcf954444cdc77e72249afef48377d2rb-extern Atom XA_SCREENSAVER, XA_SCREENSAVER_VERSION, XA_SCREENSAVER_RESPONSE;
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avn-extern Atom XA_SCREENSAVER_ID, XA_SCREENSAVER_STATUS, XA_EXIT;
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avn-extern Atom XA_VROOT, XA_SELECT, XA_DEMO, XA_BLANK, XA_LOCK;
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avn
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avn
6876da76f91687fee15a706830b990a2c0d55157Trang Do static XErrorHandler old_handler = 0;
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avndiff --git xscreensaver-5.12/driver/windows.c xscreensaver-5.12/driver/windows.c
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avn--- xscreensaver-5.12/driver/windows.c
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avn+++ xscreensaver-5.12/driver/windows.c
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avn@@ -69,14 +69,12 @@ typedef long PROP32;
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avn #include "xscreensaver.h"
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avn #include "visual.h"
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avn #include "fade.h"
9d2d3daa90dc2bc61e6773e7aa4dc4930f1fb20avn+#include "atoms.h"
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvn extern int kill (pid_t, int); /* signal() is in sys/signal.h... */
ef8846857fcf954444cdc77e72249afef48377d2rb
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen Atom XA_VROOT, XA_XSETROOT_ID, XA_ESETROOT_PMAP_ID, XA_XROOTPMAP_ID;
dd566498928f08e7c9a79797a40db893c6a4b9fbvn-Atom XA_SCREENSAVER, XA_SCREENSAVER_VERSION, XA_SCREENSAVER_ID;
dd566498928f08e7c9a79797a40db893c6a4b9fbvn-Atom XA_SCREENSAVER_STATUS;
25351652d920ae27c5a56c199da581033ce763f6Vuong Nguyen-
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
ef8846857fcf954444cdc77e72249afef48377d2rb extern saver_info *global_si_kludge; /* I hate C so much... */
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvndiff --git xscreensaver-5.12/driver/xscreensaver-command.c xscreensaver-5.12/driver/xscreensaver-command.c
dd566498928f08e7c9a79797a40db893c6a4b9fbvn--- xscreensaver-5.12/driver/xscreensaver-command.c
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+++ xscreensaver-5.12/driver/xscreensaver-command.c
dd566498928f08e7c9a79797a40db893c6a4b9fbvn@@ -40,6 +40,7 @@
dd566498928f08e7c9a79797a40db893c6a4b9fbvn typedef long PROP32;
ef8846857fcf954444cdc77e72249afef48377d2rb
ef8846857fcf954444cdc77e72249afef48377d2rb #include "remote.h"
dd566498928f08e7c9a79797a40db893c6a4b9fbvn+#include "atoms.h"
535ec645ca371f1ce298eaf76bf8feb73494f923dduvall #include "version.h"
1da218965c488f7b3d6e513e49cda33fdbc08b7fvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvn #ifdef _VROOT_H_
14ea4bb737263733ad80a36b4f73f681c30a6b45sd@@ -48,13 +49,6 @@ ERROR! you must not include vroot.h in this file
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd char *progname;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-Atom XA_VROOT;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-Atom XA_SCREENSAVER, XA_SCREENSAVER_VERSION, XA_SCREENSAVER_RESPONSE;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-Atom XA_SCREENSAVER_ID, XA_SCREENSAVER_STATUS, XA_SELECT, XA_DEMO, XA_EXIT;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-Atom XA_BLANK, XA_LOCK;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-static Atom XA_ACTIVATE, XA_DEACTIVATE, XA_CYCLE, XA_NEXT, XA_PREV;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-static Atom XA_RESTART, XA_PREFS, XA_THROTTLE, XA_UNTHROTTLE;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-
14ea4bb737263733ad80a36b4f73f681c30a6b45sd static char *screensaver_version;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd # ifdef __GNUC__
14ea4bb737263733ad80a36b4f73f681c30a6b45sd __extension__ /* don't warn about "string length is greater than the
14ea4bb737263733ad80a36b4f73f681c30a6b45sd@@ -285,28 +279,11 @@ main (int argc, char **argv)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd exit (1);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd }
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_VROOT = XInternAtom (dpy, "__SWM_VROOT", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_SCREENSAVER = XInternAtom (dpy, "SCREENSAVER", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_SCREENSAVER_ID = XInternAtom (dpy, "_SCREENSAVER_ID", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_SCREENSAVER_VERSION = XInternAtom (dpy, "_SCREENSAVER_VERSION",False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_SCREENSAVER_STATUS = XInternAtom (dpy, "_SCREENSAVER_STATUS", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_SCREENSAVER_RESPONSE = XInternAtom (dpy, "_SCREENSAVER_RESPONSE", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_ACTIVATE = XInternAtom (dpy, "ACTIVATE", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_DEACTIVATE = XInternAtom (dpy, "DEACTIVATE", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_RESTART = XInternAtom (dpy, "RESTART", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_CYCLE = XInternAtom (dpy, "CYCLE", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_NEXT = XInternAtom (dpy, "NEXT", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_PREV = XInternAtom (dpy, "PREV", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_SELECT = XInternAtom (dpy, "SELECT", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_EXIT = XInternAtom (dpy, "EXIT", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_DEMO = XInternAtom (dpy, "DEMO", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_PREFS = XInternAtom (dpy, "PREFS", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_LOCK = XInternAtom (dpy, "LOCK", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_BLANK = XInternAtom (dpy, "BLANK", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_THROTTLE = XInternAtom (dpy, "THROTTLE", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_UNTHROTTLE = XInternAtom (dpy, "UNTHROTTLE", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XSync (dpy, 0);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ {
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ const struct atom_request *atom_lists[2] = { NULL, NULL };
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ atom_lists[0] = remote_control_atoms;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ request_atoms (dpy, atom_lists);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ }
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd if (cmd == &XA_WATCH)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd {
14ea4bb737263733ad80a36b4f73f681c30a6b45sddiff --git xscreensaver-5.12/driver/xscreensaver.c xscreensaver-5.12/driver/xscreensaver.c
14ea4bb737263733ad80a36b4f73f681c30a6b45sd--- xscreensaver-5.12/driver/xscreensaver.c
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+++ xscreensaver-5.12/driver/xscreensaver.c
14ea4bb737263733ad80a36b4f73f681c30a6b45sd@@ -224,6 +224,7 @@
14ea4bb737263733ad80a36b4f73f681c30a6b45sd #include "visual.h"
14ea4bb737263733ad80a36b4f73f681c30a6b45sd #include "usleep.h"
14ea4bb737263733ad80a36b4f73f681c30a6b45sd #include "auth.h"
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+#include "atoms.h"
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
dd566498928f08e7c9a79797a40db893c6a4b9fbvn saver_info *global_si_kludge = 0; /* I hate C so much... */
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd@@ -232,12 +233,6 @@ char *progclass = 0;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd XrmDatabase db = 0;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-static Atom XA_SCREENSAVER_RESPONSE;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-static Atom XA_ACTIVATE, XA_DEACTIVATE, XA_CYCLE, XA_NEXT, XA_PREV;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-static Atom XA_RESTART, XA_SELECT;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-static Atom XA_THROTTLE, XA_UNTHROTTLE;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-Atom XA_DEMO, XA_PREFS, XA_EXIT, XA_LOCK, XA_BLANK;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd-
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd static XrmOptionDescRec options [] = {
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
dd566498928f08e7c9a79797a40db893c6a4b9fbvn@@ -628,30 +623,20 @@ connect_to_server (saver_info *si, int *argc, char **argv)
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvn db = si->prefs.db; /* resources.c needs this */
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_VROOT = XInternAtom (si->dpy, "__SWM_VROOT", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_SCREENSAVER = XInternAtom (si->dpy, "SCREENSAVER", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_SCREENSAVER_VERSION = XInternAtom (si->dpy, "_SCREENSAVER_VERSION",False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_SCREENSAVER_ID = XInternAtom (si->dpy, "_SCREENSAVER_ID", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_SCREENSAVER_STATUS = XInternAtom (si->dpy, "_SCREENSAVER_STATUS", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_SCREENSAVER_RESPONSE = XInternAtom (si->dpy, "_SCREENSAVER_RESPONSE",
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- False);
1557e65f9d0c6fde875d807c12fc03ea20f50280vn- XA_XSETROOT_ID = XInternAtom (si->dpy, "_XSETROOT_ID", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_ESETROOT_PMAP_ID = XInternAtom (si->dpy, "ESETROOT_PMAP_ID", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_XROOTPMAP_ID = XInternAtom (si->dpy, "_XROOTPMAP_ID", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_ACTIVATE = XInternAtom (si->dpy, "ACTIVATE", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_DEACTIVATE = XInternAtom (si->dpy, "DEACTIVATE", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_RESTART = XInternAtom (si->dpy, "RESTART", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_CYCLE = XInternAtom (si->dpy, "CYCLE", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_NEXT = XInternAtom (si->dpy, "NEXT", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_PREV = XInternAtom (si->dpy, "PREV", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_SELECT = XInternAtom (si->dpy, "SELECT", False);
1557e65f9d0c6fde875d807c12fc03ea20f50280vn- XA_EXIT = XInternAtom (si->dpy, "EXIT", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_DEMO = XInternAtom (si->dpy, "DEMO", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_PREFS = XInternAtom (si->dpy, "PREFS", False);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn- XA_LOCK = XInternAtom (si->dpy, "LOCK", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_BLANK = XInternAtom (si->dpy, "BLANK", False);
1557e65f9d0c6fde875d807c12fc03ea20f50280vn- XA_THROTTLE = XInternAtom (si->dpy, "THROTTLE", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd- XA_UNTHROTTLE = XInternAtom (si->dpy, "UNTHROTTLE", False);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ {
1557e65f9d0c6fde875d807c12fc03ea20f50280vn+ const struct atom_request root_atoms[] =
1557e65f9d0c6fde875d807c12fc03ea20f50280vn+ {
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_VROOT, "__SWM_VROOT" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_XSETROOT_ID, "_XSETROOT_ID" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_ESETROOT_PMAP_ID, "ESETROOT_PMAP_ID" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { &XA_XROOTPMAP_ID, "_XROOTPMAP_ID" },
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ { NULL, NULL } /* Must be last to terminate list */
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ };
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ const struct atom_request *atom_lists[3] = { NULL, NULL, NULL };
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ atom_lists[0] = remote_control_atoms;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ atom_lists[1] = root_atoms;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ request_atoms (si->dpy, atom_lists);
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+ }
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd return toplevel_shell;
14ea4bb737263733ad80a36b4f73f681c30a6b45sd }
14ea4bb737263733ad80a36b4f73f681c30a6b45sddiff --git xscreensaver-5.12/driver/xscreensaver.h xscreensaver-5.12/driver/xscreensaver.h
14ea4bb737263733ad80a36b4f73f681c30a6b45sd--- xscreensaver-5.12/driver/xscreensaver.h
14ea4bb737263733ad80a36b4f73f681c30a6b45sd+++ xscreensaver-5.12/driver/xscreensaver.h
14ea4bb737263733ad80a36b4f73f681c30a6b45sd@@ -200,8 +200,5 @@ Bool safe_XF86VidModeGetViewPort (Display *, int, int *, int *);
dd566498928f08e7c9a79797a40db893c6a4b9fbvn #endif /* HAVE_XF86VMODE */
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvn extern Atom XA_VROOT, XA_XSETROOT_ID, XA_ESETROOT_PMAP_ID, XA_XROOTPMAP_ID;
1557e65f9d0c6fde875d807c12fc03ea20f50280vn-extern Atom XA_SCREENSAVER, XA_SCREENSAVER_VERSION, XA_SCREENSAVER_ID;
dd566498928f08e7c9a79797a40db893c6a4b9fbvn-extern Atom XA_SCREENSAVER_STATUS, XA_LOCK, XA_BLANK;
dd566498928f08e7c9a79797a40db893c6a4b9fbvn-extern Atom XA_DEMO, XA_PREFS;
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
14ea4bb737263733ad80a36b4f73f681c30a6b45sd #endif /* __XSCREENSAVER_H__ */
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
14ea4bb737263733ad80a36b4f73f681c30a6b45sd