kms: Change awkward new trait to InnerDevice
This commit is contained in:
parent
87742c1e0c
commit
6492629f90
8 changed files with 274 additions and 251 deletions
|
|
@ -1,9 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
use crate::{
|
||||
backend::kms::MaybeLockedDevice,
|
||||
state::{BackendData, State},
|
||||
};
|
||||
use crate::state::{BackendData, State};
|
||||
use smithay::{
|
||||
reexports::wayland_server::{protocol::wl_buffer::WlBuffer, Resource},
|
||||
wayland::buffer::BufferHandler,
|
||||
|
|
@ -14,8 +11,11 @@ impl BufferHandler for State {
|
|||
fn buffer_destroyed(&mut self, buffer: &WlBuffer) {
|
||||
if let BackendData::Kms(kms_state) = &mut self.backend {
|
||||
for device in kms_state.drm_devices.values_mut() {
|
||||
if device.active_buffers.remove(&buffer.downgrade()) {
|
||||
if !device.in_use(kms_state.primary_node.read().unwrap().as_ref()) {
|
||||
if device.inner.active_buffers.remove(&buffer.downgrade()) {
|
||||
if !device
|
||||
.inner
|
||||
.in_use(kms_state.primary_node.read().unwrap().as_ref())
|
||||
{
|
||||
if let Err(err) = kms_state.refresh_used_devices() {
|
||||
warn!(?err, "Failed to init devices.");
|
||||
};
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@ impl DmabufHandler for State {
|
|||
if let Some(device) = kms_state
|
||||
.drm_devices
|
||||
.values_mut()
|
||||
.find(|dev| dev.render_node == node)
|
||||
.find(|dev| dev.inner.render_node == node)
|
||||
{
|
||||
device.active_buffers.insert(buffer.downgrade());
|
||||
device.inner.active_buffers.insert(buffer.downgrade());
|
||||
}
|
||||
if let Err(err) = kms_state.refresh_used_devices() {
|
||||
warn!(?err, "Failed to init devices.");
|
||||
|
|
|
|||
|
|
@ -29,9 +29,9 @@ impl DrmHandler<Option<DrmNode>> for State {
|
|||
if let Some(device) = kms_state
|
||||
.drm_devices
|
||||
.values_mut()
|
||||
.find(|device| device.render_node == node)
|
||||
.find(|device| device.inner.render_node == node)
|
||||
{
|
||||
device.active_buffers.insert(buffer.downgrade());
|
||||
device.inner.active_buffers.insert(buffer.downgrade());
|
||||
}
|
||||
|
||||
if let Err(err) = kms_state.refresh_used_devices() {
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ impl DrmLeaseHandler for State {
|
|||
.drm_devices
|
||||
.get_mut(&node)
|
||||
.unwrap()
|
||||
.inner
|
||||
.leasing_global
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
|
|
@ -32,7 +33,7 @@ impl DrmLeaseHandler for State {
|
|||
.get_mut(&node)
|
||||
.ok_or(LeaseRejected::default())?
|
||||
.lock();
|
||||
let mut renderer = match kms.api.single_renderer(&backend.render_node) {
|
||||
let mut renderer = match kms.api.single_renderer(&backend.inner.render_node) {
|
||||
Ok(renderer) => renderer,
|
||||
Err(err) => {
|
||||
tracing::warn!(
|
||||
|
|
@ -55,6 +56,7 @@ impl DrmLeaseHandler for State {
|
|||
let mut builder = DrmLeaseBuilder::new(backend.drm.device());
|
||||
for conn in request.connectors {
|
||||
if let Some((_, crtc)) = backend
|
||||
.inner
|
||||
.leased_connectors
|
||||
.iter()
|
||||
.find(|(handle, _)| *handle == conn)
|
||||
|
|
@ -101,7 +103,7 @@ impl DrmLeaseHandler for State {
|
|||
|
||||
fn new_active_lease(&mut self, node: DrmNode, lease: DrmLease) {
|
||||
if let Some(backend) = self.backend.kms().drm_devices.get_mut(&node) {
|
||||
backend.active_leases.push(lease);
|
||||
backend.inner.active_leases.push(lease);
|
||||
}
|
||||
// else the backend is gone, drop the lease
|
||||
}
|
||||
|
|
@ -110,10 +112,10 @@ impl DrmLeaseHandler for State {
|
|||
let kms = self.backend.kms();
|
||||
if let Some(backend) = kms.drm_devices.get_mut(&node) {
|
||||
let mut backend = backend.lock();
|
||||
backend.active_leases.retain(|l| l.id() != lease);
|
||||
backend.inner.active_leases.retain(|l| l.id() != lease);
|
||||
|
||||
if backend.active_leases.is_empty() {
|
||||
let mut renderer = match kms.api.single_renderer(&backend.render_node) {
|
||||
if backend.inner.active_leases.is_empty() {
|
||||
let mut renderer = match kms.api.single_renderer(&backend.inner.render_node) {
|
||||
Ok(renderer) => renderer,
|
||||
Err(err) => {
|
||||
tracing::warn!(?err, "Failed to create renderer to enable direct scanout.");
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ fn kms_surfaces(state: &mut State) -> impl Iterator<Item = &mut Surface> {
|
|||
kms_state
|
||||
.drm_devices
|
||||
.values_mut()
|
||||
.flat_map(|device| device.surfaces.values_mut()),
|
||||
.flat_map(|device| device.inner.surfaces.values_mut()),
|
||||
)
|
||||
} else {
|
||||
None
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue