summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2011-02-25 12:49:54 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2011-05-25 17:38:44 +0100
commitcea055514a9dfc74e7f0515cf4a256da10a891bc (patch)
tree7eebfffd15b9a50bb940df402aeef5fc982a85b5
parent2bfac1b73d7aa1524452a16ff85a025c61883f8a (diff)
downloaddbus-cea055514a9dfc74e7f0515cf4a256da10a891bc.tar.gz
Check for X even if X11 autolaunching is disabled
DBUS_ENABLE_X11_AUTOLAUNCH obviously requires DBUS_BUILD_X11. However, the converse is not true. If DBUS_BUILD_X11 is defined, dbus-launch will be able to connect to the X server to determine when the session ends; most distributors will want this, but it can be disabled with the standard Autoconf option --without-x. If DBUS_ENABLE_X11_AUTOLAUNCH is *also* defined, dbus-launch and libdbus will be willing to perform autolaunch. Again, most distributors will want this, but it can be disabled with --disable-x11-autolaunch. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=19997 Reviewed-by: Colin Walters <walters@verbum.org>
-rw-r--r--cmake/config.h.cmake5
-rw-r--r--configure.ac13
-rw-r--r--dbus/dbus-sysdeps-unix.c2
-rw-r--r--test/name-test/test-autolaunch.c2
-rw-r--r--tools/dbus-launch.c13
5 files changed, 24 insertions, 11 deletions
diff --git a/cmake/config.h.cmake b/cmake/config.h.cmake
index c1b8aebf..df3d45a4 100644
--- a/cmake/config.h.cmake
+++ b/cmake/config.h.cmake
@@ -83,6 +83,11 @@
#endif
#cmakedefine DBUS_BUILD_X11 1
+/* For the moment, the cmake build system doesn't have an equivalent of
+ * the autoconf build system's --disable-x11-autolaunch */
+#ifdef DBUS_BUILD_X11
+# define DBUS_ENABLE_X11_AUTOLAUNCH 1
+#endif
#define _DBUS_VA_COPY_ASSIGN(a1,a2) { a1 = a2; }
diff --git a/configure.ac b/configure.ac
index 7001a879..0274bffe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1075,9 +1075,6 @@ if test "x$dbus_win" = xyes; then
fi
enable_x11_autolaunch=no
-fi
-
-if test "x$enable_x11_autolaunch" = xno; then
have_x11=no
else
AC_PATH_XTRA
@@ -1095,11 +1092,17 @@ if test "x$enable_x11_autolaunch,$have_x11" = xyes,no; then
AC_MSG_ERROR([X11 auto-launch requires X headers/libraries])
else
# move from "auto" to "yes" or "no" if necessary
- enable_x11_autolaunch="$have_x11"
+ if test "x$enable_x11_autolaunch" != xno; then
+ enable_x11_autolaunch="$have_x11"
+ fi
+fi
+
+if test "x$have_x11" = xyes ; then
+ AC_DEFINE([DBUS_BUILD_X11], [1], [Define to build X11 functionality])
fi
if test "x$enable_x11_autolaunch" = xyes ; then
- AC_DEFINE([DBUS_BUILD_X11], [1], [Define to enable X11 auto-launch])
+ AC_DEFINE([DBUS_ENABLE_X11_AUTOLAUNCH], [1], [Define to enable X11 auto-launch])
fi
AC_SUBST([DBUS_X_CFLAGS])
diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c
index bb066ce9..e1e1728d 100644
--- a/dbus/dbus-sysdeps-unix.c
+++ b/dbus/dbus-sysdeps-unix.c
@@ -3257,7 +3257,7 @@ _dbus_get_autolaunch_address (const char *scope,
DBusString *address,
DBusError *error)
{
-#ifdef DBUS_BUILD_X11
+#ifdef DBUS_ENABLE_X11_AUTOLAUNCH
/* Perform X11-based autolaunch. (We also support launchd-based autolaunch,
* but that's done elsewhere, and if it worked, this function wouldn't
* be called.) */
diff --git a/test/name-test/test-autolaunch.c b/test/name-test/test-autolaunch.c
index d50dfbff..5e519895 100644
--- a/test/name-test/test-autolaunch.c
+++ b/test/name-test/test-autolaunch.c
@@ -20,7 +20,7 @@ main (int argc, char *argv[])
conn = dbus_bus_get (DBUS_BUS_SESSION, &error);
-#ifdef DBUS_BUILD_X11
+#ifdef DBUS_ENABLE_X11_AUTOLAUNCH
if (dbus_error_is_set (&error))
{
fprintf (stderr, "*** Failed to autolaunch session bus: %s\n",
diff --git a/tools/dbus-launch.c b/tools/dbus-launch.c
index af935386..bbaac2c3 100644
--- a/tools/dbus-launch.c
+++ b/tools/dbus-launch.c
@@ -917,7 +917,11 @@ main (int argc, char **argv)
fprintf (stderr, "Autolaunch requested, but X11 support not compiled in.\n"
"Cannot continue.\n");
exit (1);
-#else
+#else /* DBUS_BUILD_X11 */
+#ifndef DBUS_ENABLE_X11_AUTOLAUNCH
+ fprintf (stderr, "X11 autolaunch support disabled at compile time.\n");
+ exit (1);
+#else /* DBUS_ENABLE_X11_AUTOLAUNCH */
char *address;
pid_t pid;
long wid;
@@ -954,11 +958,12 @@ main (int argc, char **argv)
bourne_shell_syntax, binary_syntax, argc, argv, remaining_args);
exit (0);
}
+#endif /* DBUS_ENABLE_X11_AUTOLAUNCH */
}
- else if (read_machine_uuid_if_needed())
+ else if (read_machine_uuid_if_needed())
{
x11_init();
-#endif
+#endif /* DBUS_BUILD_X11 */
}
@@ -1177,7 +1182,7 @@ main (int argc, char **argv)
close (bus_pid_to_launcher_pipe[READ_END]);
-#ifdef DBUS_BUILD_X11
+#ifdef DBUS_ENABLE_X11_AUTOLAUNCH
if (xdisplay != NULL)
{
verbose("Saving x11 address\n");