1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2026-01-13 00:11:00 +00:00
serenity/Userland/Services
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
..
AudioServer Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
ChessEngine Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
Clipboard Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ConfigServer Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
CrashDaemon Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
DHCPClient Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
EchoServer LibCore+Everywhere: Make Core::Stream::read() return Bytes 2022-04-16 13:27:51 -04:00
FileOperation Everywhere: Replace single-char StringView op. arguments with chars 2022-07-12 23:11:35 +02:00
FileSystemAccessServer Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
ImageDecoder Services: Use default constructors/destructors 2022-03-24 20:09:26 -07:00
InspectorServer LibCore+Everywhere: Make Core::Stream::read() return Bytes 2022-04-16 13:27:51 -04:00
KeyboardPreferenceLoader LibCore: Automatically create config directories if necessary 2022-04-11 00:08:48 +02:00
LaunchServer Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
LoginServer LaunchServer+SystemServer: Move the portal to a user-specific directory 2022-07-19 11:15:14 +01:00
LookupServer Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
NetworkServer NetworkServer: Use sv suffixes to avoid strlen at runtime 2022-07-14 23:26:47 +02:00
NotificationServer NotificationServer: Move notifications down if hovered 2022-07-13 17:03:44 +01:00
RequestServer Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
SpiceAgent Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
SQLServer Services: Use default constructors/destructors 2022-03-24 20:09:26 -07:00
SystemServer Userland: Remove stale remainders of old framebuffer devices 2022-07-23 10:42:08 +01:00
Taskbar Taskbar: Center buttons again by fixing margins 2022-07-15 12:34:25 +02:00
TelnetServer Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
WebContent Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
WebServer Everywhere: Replace single-char StringView op. arguments with chars 2022-07-12 23:11:35 +02:00
WebSocket WebSocket: Change target name to deconflict with LibWebSocket on Lagom 2022-07-07 16:50:05 +02:00
WindowServer Kernel+Userland: Add ioctl to set process ownership of DisplayConnector 2022-07-23 10:42:08 +01:00
CMakeLists.txt Meta: Build select Services in Lagom 2022-07-06 14:24:23 +02:00