cosmic-comp/src/wayland/handlers/buffer.rs

28 lines
918 B
Rust
Raw Normal View History

// SPDX-License-Identifier: GPL-3.0-only
use crate::state::{BackendData, State};
use smithay::{
2025-10-16 18:53:57 +02:00
reexports::wayland_server::{Resource, protocol::wl_buffer::WlBuffer},
wayland::buffer::BufferHandler,
};
2024-06-10 20:41:29 +02:00
use tracing::warn;
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() {
2025-10-16 16:10:35 +02:00
if device.inner.active_buffers.remove(&buffer.downgrade())
&& !device
.inner
2025-10-16 16:10:35 +02:00
.in_use(kms_state.primary_node.read().unwrap().as_ref())
{
2025-10-16 13:50:32 +02:00
if let Err(err) = kms_state.refresh_used_devices() {
warn!(?err, "Failed to init devices.");
};
break;
}
}
}
}
}