pkgsrc/x11/gdm/patches/patch-at
jmcneill 728a2be8a7 GDM is "special". If automatic VT allocation is not enabled, in order to
determine the VT it is using it will attempt to parse the X server's log
file looking for the string 'using VT number '. If GDM doesn't know what
VT it's using, it is unable to pass that information to ConsoleKit, so the
session is treated as always inactive.

Enable automatic VT allocation by default, and piggyback on the Linux/SunOS
VT switching code using wsdisplay usl emulation for NetBSD.

Also, PKGREVISION++
2008-11-23 22:06:49 +00:00

78 lines
2.2 KiB
Text

$NetBSD: patch-at,v 1.1 2008/11/23 22:06:49 jmcneill Exp $
--- daemon/getvt.c.orig 2008-06-30 13:53:13.000000000 -0400
+++ daemon/getvt.c 2008-11-23 16:21:46.000000000 -0500
@@ -107,6 +107,8 @@ gdm_get_current_vtnum (Display *display)
#if defined (GDM_USE_SYS_VT)
#include <sys/vt.h>
+#elif defined (GDM_USE_WSCONS_VT)
+#include <dev/wscons/wsdisplay_usl_io.h>
#elif defined (GDM_USE_CONSIO_VT)
#include <sys/consio.h>
@@ -139,12 +141,14 @@ gdm_get_vt_device (int vtno)
#endif
#elif defined (GDM_USE_CONSIO_VT)
vtname = g_strdup_printf ("/dev/ttyv%s", __itovty (vtno - 1));
+#elif defined (GDM_USE_WSCONS_VT)
+ vtname = g_strdup_printf ("/dev/ttyE%d", vtno - 1);
#endif
return vtname;
}
-#if defined (GDM_USE_SYS_VT) || defined (GDM_USE_CONSIO_VT)
+#if defined (GDM_USE_SYS_VT) || defined (GDM_USE_CONSIO_VT) || defined(GDM_USE_WSCONS_VT)
#ifdef __sun
#define GDMCONSOLEDEVICE "/dev/vt/0"
@@ -175,7 +179,7 @@ open_vt (int vtno)
return fd;
}
-#if defined (GDM_USE_SYS_VT)
+#if defined (GDM_USE_SYS_VT) || defined (GDM_USE_WSCONS_VT)
static int
get_free_vt_sys (int *vtfd)
@@ -295,7 +299,7 @@ gdm_get_empty_vt_argument (int *fd, int
return NULL;
}
-#if defined (GDM_USE_SYS_VT)
+#if defined (GDM_USE_SYS_VT) || defined (GDM_USE_WSCONS_VT)
*vt = get_free_vt_sys (fd);
#elif defined (GDM_USE_CONSIO_VT)
*vt = get_free_vt_consio (fd);
@@ -337,7 +341,7 @@ gdm_change_vt (int vt)
int
gdm_get_current_vt (void)
{
-#if defined (GDM_USE_SYS_VT)
+#if defined (GDM_USE_SYS_VT) || defined (GDM_USE_WSCONS_VT)
struct vt_stat s;
#elif defined (GDM_USE_CONSIO_VT)
int vtno;
@@ -355,7 +359,7 @@ gdm_get_current_vt (void)
} while G_UNLIKELY (errno == EINTR);
if (fd < 0)
return -1;
-#if defined (GDM_USE_SYS_VT)
+#if defined (GDM_USE_SYS_VT) || defined (GDM_USE_WSCONS_VT)
ioctl (fd, VT_GETSTATE, &s);
VE_IGNORE_EINTR (close (fd));
@@ -383,9 +387,9 @@ VE_IGNORE_EINTR (close (fd));
#endif
}
-#else /* GDM_USE_SYS_VT || GDM_USE_CONSIO_VT - Here this is just
- * a stub, we do not know how to support this on other
- * platforms
+#else /* GDM_USE_SYS_VT || GDM_USE_CONSIO_VT || GDM_USE_WSCONS_VT -
+ * Here this is just a stub, we do not know how to support
+ * this on other platforms
*/
char *