Commit 80f6ebee authored by Ray Strode's avatar Ray Strode

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
parent a100e012
......@@ -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}
......
......@@ -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;
......
......@@ -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. */
......
......@@ -193,7 +193,9 @@ collect_sessions (void)
DMCONFDIR "/Sessions/",
DATADIR "/gdm/BuiltInSessions/",
DATADIR "/xsessions/",
#ifdef ENABLE_WAYLAND_SUPPORT
DATADIR "/wayland-sessions/",
#endif
NULL
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment