drivers/graphics/driver-graphics: Introduce KmsObjects::remove helper

This commit is contained in:
bjorn3
2026-05-13 21:18:36 +02:00
parent d1cf7d53d2
commit d110147d62
2 changed files with 14 additions and 18 deletions
@@ -58,6 +58,18 @@ impl<T: GraphicsAdapter> KmsObjects<T> {
}
}
pub(super) fn remove<U: KmsObjectKind<T>>(&mut self, id: KmsObjectId) -> Result<()> {
let Some(object) = self.objects.get(&id) else {
return Err(Error::new(ENOENT));
};
let Some(_) = U::try_from_object(object) else {
return Err(Error::new(ENOENT));
};
self.objects.remove(&id).unwrap();
Ok(())
}
pub(crate) fn object_type(&self, id: KmsObjectId) -> Result<u32> {
let object = self.objects.get(&id).ok_or(Error::new(ENOENT))?;
Ok(object.object_type())
@@ -106,15 +118,7 @@ impl<T: GraphicsAdapter> KmsObjects<T> {
}
pub fn remove_framebuffer(&mut self, id: KmsObjectId) -> Result<()> {
let Some(object) = self.objects.get(&id) else {
return Err(Error::new(ENOENT));
};
let KmsObject::Framebuffer(_) = object else {
return Err(Error::new(ENOENT));
};
self.objects.remove(&id).unwrap();
Ok(())
self.remove::<KmsFramebuffer<T>>(id)
}
pub fn fb_ids(&self) -> &[KmsObjectId] {
@@ -81,15 +81,7 @@ impl<T: GraphicsAdapter> KmsObjects<T> {
}
pub fn remove_blob(&mut self, id: KmsObjectId) -> Result<()> {
let Some(object) = self.objects.get(&id) else {
return Err(Error::new(ENOENT));
};
let KmsObject::Blob(_) = object else {
return Err(Error::new(ENOENT));
};
self.objects.remove(&id).unwrap();
Ok(())
self.remove::<KmsBlob>(id)
}
pub fn get_blob(&self, id: KmsObjectId) -> Result<&[u8]> {