xserver: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Oct 16 14:24:56 UTC 2018


 hw/xfree86/os-support/linux/lnx_init.c |   16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

New commits:
commit ff91c696ff8f5f56da40e107cb5c321539758a81
Author: Michal Srb <msrb at suse.com>
Date:   Tue Oct 16 09:32:13 2018 +0200

    xfree86: Only switch to original VT if it is active.
    
    If the X server is terminated while its VT is not active, it should
    not change the current VT.
    
    v2: Query current state in xf86CloseConsole using VT_GETSTATE instead of
        keeping track in xf86VTEnter/xf86VTLeave/etc.

diff --git a/hw/xfree86/os-support/linux/lnx_init.c b/hw/xfree86/os-support/linux/lnx_init.c
index 039dc4a4d..358d89f0f 100644
--- a/hw/xfree86/os-support/linux/lnx_init.c
+++ b/hw/xfree86/os-support/linux/lnx_init.c
@@ -299,6 +299,7 @@ void
 xf86CloseConsole(void)
 {
     struct vt_mode VT;
+    struct vt_stat vts;
     int ret;
 
     if (xf86Info.ShareVTs) {
@@ -336,10 +337,19 @@ xf86CloseConsole(void)
 
     if (xf86Info.autoVTSwitch) {
         /*
-         * Perform a switch back to the active VT when we were started
-         */
+        * Perform a switch back to the active VT when we were started if our
+        * vt is active now.
+        */
         if (activeVT >= 0) {
-            switch_to(activeVT, "xf86CloseConsole");
+            SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_GETSTATE, &vts));
+            if (ret < 0) {
+                xf86Msg(X_WARNING, "xf86OpenConsole: VT_GETSTATE failed: %s\n",
+                        strerror(errno));
+            } else {
+                if (vts.v_active == xf86Info.vtno) {
+                    switch_to(activeVT, "xf86CloseConsole");
+                }
+            }
             activeVT = -1;
         }
     }


More information about the xorg-commit mailing list