SHA256
1
0
forked from pool/gdm
OBS User unknown 2007-03-22 20:05:31 +00:00 committed by Git OBS Bridge
parent e667f6cb6c
commit 31f22cde7c
3 changed files with 74 additions and 1 deletions

View File

@ -0,0 +1,62 @@
diff -upr gdm-2.17.7-pre/daemon/getvt.c gdm-2.17.7-post/daemon/getvt.c
--- gdm-2.17.7-pre/daemon/getvt.c 2007-02-11 23:40:19.000000000 -0600
+++ gdm-2.17.7-post/daemon/getvt.c 2007-03-20 16:25:35.000000000 -0600
@@ -90,8 +90,10 @@ get_free_vt_linux (int *vtfd)
int vtno;
unsigned short vtmask;
struct vt_stat vtstat;
+ guint v_state;
*vtfd = -1;
+ fdv = -1;
do {
errno = 0;
@@ -101,26 +103,33 @@ get_free_vt_linux (int *vtfd)
#endif
, 0);
} while G_UNLIKELY (errno == EINTR);
- if (fd < 0)
- return -1;
- if (ioctl (fd, VT_GETSTATE, &vtstat) < 0) {
- VE_IGNORE_EINTR (close (fd));
- return -1;
- }
+ if (fd >= 0 && ioctl (fd, VT_GETSTATE, &vtstat) >= 0)
+ v_state = vtstat.v_state;
+ else
+ v_state = 0;
- for (vtno = gdm_get_value_int (GDM_KEY_FIRST_VT), vtmask = 1 << vtno;
- vtstat.v_state & vtmask; vtno++, vtmask <<= 1);
- if (!vtmask) {
- VE_IGNORE_EINTR (close (fd));
- return -1;
+ for (vtno = gdm_get_value_int (GDM_KEY_FIRST_VT), vtmask = 1 << vtno; vtmask; vtno++, vtmask <<= 1) {
+ /* Is this console in use? */
+ if (v_state & vtmask)
+ continue;
+
+ /* No, try to open it */
+ fdv = open_vt (vtno);
+ if (fdv >= 0)
+ break;
+
+ /* If we're here, kernel indicated that the console was free,
+ * but we failed to open it. Just go on to higher VTs. */
}
- fdv = open_vt (vtno);
- if (fdv < 0) {
+ if (fdv < 0)
+ vtno = -1;
+
+ if (fd >= 0) {
VE_IGNORE_EINTR (close (fd));
- return -1;
}
+
*vtfd = fdv;
return vtno;
}

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Wed Mar 21 23:43:05 CET 2007 - hpj@suse.de
- Add gdm-2.17.7-vt-fallback.patch. This is a port of the fix for
https://bugzilla.novell.com/show_bug.cgi?id=206804
-------------------------------------------------------------------
Tue Mar 13 17:42:14 CST 2007 - maw@suse.de

View File

@ -25,7 +25,7 @@ License: GNU General Public License (GPL)
Group: System/GUI/GNOME
Autoreqprov: on
Version: 2.17.7
Release: 1
Release: 2
Summary: The GNOME 2.x Display Manager
Source: %{name}-%{version}.tar.bz2
Source1: gdm.pamd
@ -55,6 +55,7 @@ Patch29: gdm-gdmsetup.patch
Patch30: gdm-conf-custom-sysconfig.patch
Patch32: gdm-trunk-string-literal-cmp.patch
Patch33: gdm-2.13.0.4-audit-login.patch
Patch34: gdm-2.17.7-vt-fallback.patch
URL: http://www.gnome.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Docdir: %{_defaultdocdir}
@ -106,6 +107,7 @@ gnome-patch-translation-prepare
%patch30
%patch32
%patch33 -p1
%patch34 -p1
gnome-patch-translation-update
%build
@ -230,6 +232,9 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
%endif
%changelog
* Wed Mar 21 2007 - hpj@suse.de
- Add gdm-2.17.7-vt-fallback.patch. This is a port of the fix for
https://bugzilla.novell.com/show_bug.cgi?id=206804
* Tue Mar 13 2007 - maw@suse.de
- Update to version 2.17.7
- Removeupstreamed gdm-autobuild-warning.patch,