x86/logind fix suspend/resume when there are no input devices
Make sure info->active and info->vt_active are false after
dropping drm master.
Normally, this is done when pausing the first input device, so it
breaks when there are no input device at all.
Fixes: da9d012a9
("xf86/logind: Fix drm_drop_master before vt_reldisp")
Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1387
Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
This commit is contained in:
parent
412777664a
commit
6969782b69
|
@ -310,15 +310,19 @@ cleanup:
|
||||||
*/
|
*/
|
||||||
void systemd_logind_drop_master(void)
|
void systemd_logind_drop_master(void)
|
||||||
{
|
{
|
||||||
|
struct systemd_logind_info *info = &logind_info;
|
||||||
int i;
|
int i;
|
||||||
|
/* Our VT_PROCESS usage guarantees we've already given up the vt */
|
||||||
|
info->active = info->vt_active = FALSE;
|
||||||
for (i = 0; i < xf86_num_platform_devices; i++) {
|
for (i = 0; i < xf86_num_platform_devices; i++) {
|
||||||
if (xf86_platform_devices[i].flags & XF86_PDEV_SERVER_FD) {
|
if (xf86_platform_devices[i].flags & XF86_PDEV_SERVER_FD) {
|
||||||
dbus_int32_t major, minor;
|
dbus_int32_t major, minor;
|
||||||
struct systemd_logind_info *info = &logind_info;
|
|
||||||
|
|
||||||
xf86_platform_devices[i].flags |= XF86_PDEV_PAUSED;
|
xf86_platform_devices[i].flags |= XF86_PDEV_PAUSED;
|
||||||
major = xf86_platform_odev_attributes(i)->major;
|
major = xf86_platform_odev_attributes(i)->major;
|
||||||
minor = xf86_platform_odev_attributes(i)->minor;
|
minor = xf86_platform_odev_attributes(i)->minor;
|
||||||
|
LogMessage(X_INFO, "systemd-logind: drop master for %u:%u\n",
|
||||||
|
major, minor);
|
||||||
systemd_logind_ack_pause(info, minor, major);
|
systemd_logind_ack_pause(info, minor, major);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue