[gdm] wayland: make optional for FreeBSD



commit 80f6ebee026c5cfc83b548318cbe5a9513f6b3ca
Author: Ray Strode <rstrode redhat com>
Date:   Wed Mar 19 15:42:31 2014 -0400

    wayland: make optional for FreeBSD
    
    FreeBSD build broke, so this commit makes wayland a configure time
    argument
    
    https://bugzilla.gnome.org/show_bug.cgi?id=726380

 configure.ac                |   23 +++++++++++++++++++++++
 daemon/gdm-session-worker.c |   10 ++++++++++
 daemon/gdm-session.c        |    8 ++++++++
 libgdm/gdm-sessions.c       |    2 ++
 4 files changed, 43 insertions(+), 0 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 3fac145..82fbc90 100644
--- a/configure.ac
+++ b/configure.ac
@@ -255,6 +255,12 @@ AC_ARG_ENABLE(systemd-journal,
             AS_HELP_STRING([--enable-systemd-journal],
                            [Add journald support @<:@default=auto@:>@]),
             [enable_systemd_journal=$enableval], [enable_systemd_journal=auto])
+AC_ARG_ENABLE(wayland-support,
+             AS_HELP_STRING([--enable-wayland-support],
+                             [Enable support for wayland sessions  @<:@default=auto@:>@]),
+              [enable_wayland_support=$enableval],
+              [enable_wayland_support=auto])
+
 AC_ARG_WITH(plymouth,
             AS_HELP_STRING([--with-plymouth],
                            [Add plymouth support @<:@default=auto@:>@]),
@@ -323,6 +329,8 @@ dnl checks needed for Darwin compatibility to linux **environ.
 AC_CHECK_HEADERS(crt_externs.h)
 AC_CHECK_FUNCS(_NSGetEnviron)
 
+AC_CHECK_HEADERS(sys/vt.h)
+
 EXTRA_DAEMON_LIBS=""
 EXTRA_SLAVE_LIBS=""
 EXTRA_CHOOSER_LIBS=""
@@ -932,6 +940,20 @@ fi
 AC_SUBST(JOURNALD_CFLAGS)
 AC_SUBST(JOURNALD_LIBS)
 
+if test "x$enable_wayland_support" = "xauto" ; then
+        use_wayland="$use_systemd";
+else
+        use_wayland="$enable_wayland_support"
+fi
+
+if test "x$use_wayland" != "xno" ; then
+        if test "x$have_systemd" = "xno"; then
+                AC_MSG_ERROR([wayland support explicitly required, but logind not found])
+        fi
+
+        AC_DEFINE(ENABLE_WAYLAND_SUPPORT, 1, [Define to enable wayland support])
+fi
+
 AC_PATH_PROG(SYSTEMD_X_SERVER, systemd-multi-seat-x, [/lib/systemd/systemd-multi-seat-x], 
[/lib/systemd:/usr/lib/systemd:$PATH])
 AC_SUBST(SYSTEMD_X_SERVER)
 AC_DEFINE_UNQUOTED(SYSTEMD_X_SERVER,"$SYSTEMD_X_SERVER",[Path to systemd X server wrapper])
@@ -1631,6 +1653,7 @@ echo \
         systemd support:          ${use_systemd}
         systemd unit dir:         ${with_systemdsystemunitdir}
         plymouth support:         ${use_plymouth}
+        wayland support:          ${use_wayland}
         Build with RBAC:          ${msg_rbac_shutdown}
         Initial VT:               ${GDM_INITIAL_VT}
         Enable documentation:     ${enable_documentation}
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
index b792c58..942fedc 100644
--- a/daemon/gdm-session-worker.c
+++ b/daemon/gdm-session-worker.c
@@ -28,8 +28,10 @@
 #include <string.h>
 #include <sys/types.h>
 #include <sys/wait.h>
+#ifdef ENABLE_WAYLAND_SUPPORT
 #include <sys/ioctl.h>
 #include <sys/vt.h>
+#endif
 #include <errno.h>
 #include <grp.h>
 #include <pwd.h>
@@ -954,6 +956,7 @@ gdm_session_worker_stop_auditor (GdmSessionWorker *worker)
         worker->priv->auditor = NULL;
 }
 
+#ifdef ENABLE_WAYLAND_SUPPORT
 static void
 jump_to_vt (GdmSessionWorker  *worker,
             int                vt_number)
@@ -970,6 +973,7 @@ jump_to_vt (GdmSessionWorker  *worker,
         }
         close(fd);
 }
+#endif
 
 static void
 gdm_session_worker_uninitialize_pam (GdmSessionWorker *worker,
@@ -1000,9 +1004,11 @@ gdm_session_worker_uninitialize_pam (GdmSessionWorker *worker,
 
         gdm_session_worker_stop_auditor (worker);
 
+#ifdef ENABLE_WAYLAND_SUPPORT
         if (worker->priv->login_vt != worker->priv->session_vt) {
                 jump_to_vt (worker, worker->priv->login_vt);
         }
+#endif
 
         worker->priv->login_vt = 0;
         worker->priv->session_vt = 0;
@@ -1976,6 +1982,7 @@ gdm_session_worker_start_session (GdmSessionWorker  *worker,
         return TRUE;
 }
 
+#ifdef ENABLE_WAYLAND_SUPPORT
 static gboolean
 set_up_for_new_vt (GdmSessionWorker *worker)
 {
@@ -2029,6 +2036,7 @@ fail:
         close (fd);
         return FALSE;
 }
+#endif
 
 static gboolean
 set_up_for_current_vt (GdmSessionWorker  *worker,
@@ -2117,6 +2125,7 @@ gdm_session_worker_open_session (GdmSessionWorker  *worker,
                         return FALSE;
                 }
                 break;
+#ifdef ENABLE_WAYLAND_SUPPORT
         case GDM_SESSION_DISPLAY_MODE_NEW_VT:
         case GDM_SESSION_DISPLAY_MODE_LOGIND_MANAGED:
                 if (!set_up_for_new_vt (worker)) {
@@ -2127,6 +2136,7 @@ gdm_session_worker_open_session (GdmSessionWorker  *worker,
                         return FALSE;
                 }
                 break;
+#endif
         }
 
         flags = 0;
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
index d519b35..e210678 100644
--- a/daemon/gdm-session.c
+++ b/daemon/gdm-session.c
@@ -363,7 +363,9 @@ get_system_session_dirs (void)
                 DMCONFDIR "/Sessions/",
                 DATADIR "/gdm/BuiltInSessions/",
                 DATADIR "/xsessions/",
+#ifdef ENABLE_WAYLAND_SUPPORT
                 DATADIR "/wayland-sessions/",
+#endif
                 NULL
         };
 
@@ -2661,6 +2663,7 @@ get_session_filename (GdmSession *self)
         return g_strdup_printf ("%s.desktop", get_session_name (self));
 }
 
+#ifdef ENABLE_WAYLAND_SUPPORT
 static gboolean
 gdm_session_is_wayland_session (GdmSession *self)
 {
@@ -2689,6 +2692,7 @@ out:
         g_free (filename);
         return is_wayland_session;
 }
+#endif
 
 gboolean
 gdm_session_bypasses_xsession (GdmSession *self)
@@ -2702,9 +2706,11 @@ gdm_session_bypasses_xsession (GdmSession *self)
         g_return_val_if_fail (self != NULL, FALSE);
         g_return_val_if_fail (GDM_IS_SESSION (self), FALSE);
 
+#ifdef ENABLE_WAYLAND_SUPPORT
         if (gdm_session_is_wayland_session (self)) {
                 return TRUE;
         }
+#endif
 
         filename = get_session_filename (self);
 
@@ -2734,12 +2740,14 @@ out:
 GdmSessionDisplayMode
 gdm_session_get_display_mode (GdmSession *self)
 {
+#ifdef ENABLE_WAYLAND_SUPPORT
         /* Wayland sessions are for now assumed to run in a
          * mutter-launch-like environment, so we allocate
          * a new VT for them. */
         if (gdm_session_is_wayland_session (self)) {
                 return GDM_SESSION_DISPLAY_MODE_NEW_VT;
         }
+#endif
 
         /* X sessions are for now ran in classic mode where
          * we reuse the existing greeter. */
diff --git a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c
index 2971f17..08220fe 100644
--- a/libgdm/gdm-sessions.c
+++ b/libgdm/gdm-sessions.c
@@ -193,7 +193,9 @@ collect_sessions (void)
                 DMCONFDIR "/Sessions/",
                 DATADIR "/gdm/BuiltInSessions/",
                 DATADIR "/xsessions/",
+#ifdef ENABLE_WAYLAND_SUPPORT
                 DATADIR "/wayland-sessions/",
+#endif
                 NULL
         };
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]