2022-07-04 15:26:26 +02:00
|
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
|
|
2024-01-17 11:34:19 +00:00
|
|
|
use crate::{state::BackendData, utils::prelude::*};
|
2022-07-04 15:26:26 +02:00
|
|
|
use smithay::{
|
2024-01-17 11:34:19 +00:00
|
|
|
reexports::wayland_server::{protocol::wl_buffer::WlBuffer, Resource},
|
|
|
|
|
wayland::buffer::BufferHandler,
|
2022-07-04 15:26:26 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
impl BufferHandler for State {
|
2024-01-17 11:34:19 +00:00
|
|
|
fn buffer_destroyed(&mut self, buffer: &WlBuffer) {
|
|
|
|
|
if let BackendData::Kms(kms_state) = &mut self.backend {
|
|
|
|
|
for device in kms_state.devices.values_mut() {
|
|
|
|
|
if device.active_buffers.remove(&buffer.downgrade()) {
|
|
|
|
|
if !device.in_use(&kms_state.primary_node) {
|
|
|
|
|
kms_state.api.as_mut().remove_node(&device.render_node);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-07-04 15:26:26 +02:00
|
|
|
}
|