d606165088
- Remove the `Device`, `Surface`, `RawDevice` and `RawSurface` traits. We are not trying to merge the different responsibilities between... - Drm-Surfaces: crtcs and planes for displaying buffers - Gbm-Surfaces: allocating and managing front- and back-buffers - EGL-Surfaces: Load drawing apis. ..anymore. - Instead unify the legacy and atomic backends into one `DrmDevice` and a `DrmSurface`, that under the hood dispatches onto the different modules. - Do not keep a list of surfaces inside the devices. These are reference-counting nightmares and a frequent issue due to the read-only nature of `Rc` and `Arc` and thread-safety related problems. - Surfaces are mostly doing state-tracking independently of each other and contain some more helper functions. - Simplify session code, because we do not need to pass the events through three layers of devices and surfaces anymore. - Each surface now represents a plane. Rendering to a plane is just like any other rendering step, including the Cursor-plane. (Legacy interfaces only have one to avoid dealing with short-comings of the api). |
||
---|---|---|
.. | ||
raw_atomic_drm.rs | ||
raw_legacy_drm.rs |