SerenityOS build: Sunday, July 24
Images 💾⌗
- serenity-i686-20220724-977aa81.vdi.gz (VirtualBox VDI, 127.62 MiB)
- serenity-i686-20220724-977aa81.img.gz (Raw image, 127.78 MiB)
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.
Other builds