Images 💾

Last commit ⭐

commit 977aa8131055ef4185c6f4fbde6b1412f063f542
Author:     Liav A <liavalb@gmail.com>
AuthorDate: Fri Jun 10 14:16:28 2022 +0300
Commit:     Linus Groh <mail@linusgroh.de>
CommitDate: Sat Jul 23 10:42:08 2022 +0100

    Kernel+Userland: Add ioctl to set process ownership of DisplayConnector
    
    Now that the infrastructure of the Graphics subsystem is quite stable,
    it is time to try to fix a long-standing problem, which is the lack of
    locking on display connector devices. Reading and writing from multiple
    processes to a framebuffer controlled by the display connector is not a
    huge problem - it could be solved with POSIX locking.
    
    The real problem is some program that will try to do ioctl operations on
    a display connector without the WindowServer being aware of that which
    can lead to very bad situations, for example - assuming a framebuffer is
    encoded at a known resolution and certain display timings, but another
    process changed the ModeSetting of the display connector, leading to
    inconsistency on the properties of the current ModeSetting.
    
    To solve this, there's a new "master" ioctl to take "ownership" and
    another one to release that ownership of a display connector device. To
    ensure we will not hold a Process object forever just because it has an
    ownership over a display connector, we hold it with a weak reference,
    and if the process is gone, someone else can take an ownership.