https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=285394

Gleb Popov <arr...@freebsd.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |arr...@freebsd.org

--- Comment #3 from Gleb Popov <arr...@freebsd.org> ---
Almost 2 years ago I was working on fixing concurrent sessions in (our closed
fork of) x11/sddm. It resulted in a substantial work done on the ConsoleKit
side, which is now present in the Ports tree. The SDDM part was a bit ugly, so
I was reluctant to opensource it back then.

While hacking on this problem I also bumped into a similar VT management issue.
I don't remember all the details now, but the issue stems from the fact that if
you want to do an ioctl() on ttyvN then you should pass N+1 as an argument. So
one of my patches for SDDM was fixing functions that convert between device
paths "/dev/ttyvN" and integer TTY numbers:

QString path(int vt) {
    // ioctl interface returns N+1 for ttyvN
    char c = (vt <= 10 ? '0' : 'a') + (vt - 1);
    return QStringLiteral("/dev/ttyv%1").arg(c);
}

int number(QString path) {
    if (path.startsWith(QStringLiteral("/dev/")))
        path = path.mid(5);
    if (path.startsWith(QStringLiteral("ttyv")))
        path = path.mid(4);
    else
        path = path.mid(3); // "tty"
    int ret = path.toInt(nullptr, 16);
#ifdef __FreeBSD__
    // ioctl interface returns N+1 for ttyvN
    ret++;
#endif
    return ret;
}

I think this is exactly the problem you see with LightDM. The warnings you see
in ConsoleKit are actually caused by LightDM asking about wrong TTYs. If you
point to me the LightDM code that calls ConsoleKit, I'll look into that more
closely.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to