ladybird/Kernel/Graphics
Liav A 977aa81310 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.
2022-07-23 10:42:08 +01:00
..
Bochs Everywhere: Prefix 'TYPEDEF_DISTINCT_ORDERED_ID' with 'AK_' 2022-07-22 23:09:43 +01:00
Console Kernel/Graphics: Allocate VGA window region according to the usual rules 2022-07-13 19:15:17 +01:00
Generic Kernel/Graphics: Move GenericDisplayConnector code to a new sub-folder 2022-06-25 11:32:09 +01:00
Intel Kernel/Graphics: Remove GenericGraphicsAdapter::vga_compatible method 2022-07-15 12:23:22 +02:00
VirtIOGPU Everywhere: Prefix 'TYPEDEF_DISTINCT_ORDERED_ID' with 'AK_' 2022-07-22 23:09:43 +01:00
VMWare Kernel/Graphics: Remove GenericGraphicsAdapter::vga_compatible method 2022-07-15 12:23:22 +02:00
Definitions.h Kernel: Add ioctl to get the EDID from a framebuffer 2022-01-23 22:45:21 +00:00
DisplayConnector.cpp Kernel+Userland: Add ioctl to set process ownership of DisplayConnector 2022-07-23 10:42:08 +01:00
DisplayConnector.h Kernel+Userland: Add ioctl to set process ownership of DisplayConnector 2022-07-23 10:42:08 +01:00
GenericGraphicsAdapter.h Kernel/Graphics: Remove GenericGraphicsAdapter::vga_compatible method 2022-07-15 12:23:22 +02:00
GraphicsManagement.cpp Kernel/Graphics: Simplify initialization flow explanation comment 2022-07-12 19:54:48 +01:00
GraphicsManagement.h Kernel/Graphics: Remove VGA folder and its content 2022-07-12 19:54:48 +01:00