Check for X even if X11 autolaunching is disabled
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Fri, 25 Feb 2011 12:49:54 +0000 (12:49 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Wed, 25 May 2011 16:38:44 +0000 (17:38 +0100)
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>
cmake/config.h.cmake
configure.ac
dbus/dbus-sysdeps-unix.c
test/name-test/test-autolaunch.c
tools/dbus-launch.c

index c1b8aeb..df3d45a 100644 (file)
 #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; }
 
index 7001a87..0274bff 100644 (file)
@@ -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])
index bb066ce..e1e1728 100644 (file)
@@ -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.) */
index d50dfbf..5e51989 100644 (file)
@@ -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",
index af93538..bbaac2c 100644 (file)
@@ -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");