[PATCH 2/2] systemd-logind: Fix vt-enter not working when using a legacy video driver

Hans de Goede hdegoede at redhat.com
Fri Mar 7 02:22:34 PST 2014


If there is only a single non kms video device (tested with the vesa driver),
then we will never get a resume signal for a drm node, so also call vtenter
when we get a resume for an input device.

Notes:
1) vtenter checks if it is ok to do the vtenter, so if there are kms video
devices the calls for input device resumes are a nop
2) This assumes that there will always be at least one server event fd
supporting input device. Since all non legacy input-drivers will be patched
to supported server fds this seems a safe assumption.

Signed-off-by: Hans de Goede <hans at localhost.localdomain>
---
 hw/xfree86/os-support/linux/systemd-logind.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/hw/xfree86/os-support/linux/systemd-logind.c b/hw/xfree86/os-support/linux/systemd-logind.c
index abb8e44..a8406d8 100644
--- a/hw/xfree86/os-support/linux/systemd-logind.c
+++ b/hw/xfree86/os-support/linux/systemd-logind.c
@@ -347,7 +347,6 @@ message_filter(DBusConnection * connection, DBusMessage * message, void *data)
 
         if (pdev) {
             pdev->flags &= ~XF86_PDEV_PAUSED;
-            systemd_logind_vtenter();
         }
         else {
             pInfo->fd = fd;
@@ -355,6 +354,8 @@ message_filter(DBusConnection * connection, DBusMessage * message, void *data)
             if (info->vt_active)
                 xf86EnableInputDeviceForVTSwitch(pInfo);
         }
+        /* Always call vtenter(), in case there are only legacy video devs */
+        systemd_logind_vtenter();
     }
     return DBUS_HANDLER_RESULT_HANDLED;
 }
-- 
1.9.0



More information about the xorg-devel mailing list