diff --git a/drivers/graphics/driver-graphics/src/kms/objects.rs b/drivers/graphics/driver-graphics/src/kms/objects.rs index 467f6f8ed0..156b32af2e 100644 --- a/drivers/graphics/driver-graphics/src/kms/objects.rs +++ b/drivers/graphics/driver-graphics/src/kms/objects.rs @@ -58,6 +58,18 @@ impl KmsObjects { } } + pub(super) fn remove>(&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 { let object = self.objects.get(&id).ok_or(Error::new(ENOENT))?; Ok(object.object_type()) @@ -106,15 +118,7 @@ impl KmsObjects { } 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::>(id) } pub fn fb_ids(&self) -> &[KmsObjectId] { diff --git a/drivers/graphics/driver-graphics/src/kms/properties.rs b/drivers/graphics/driver-graphics/src/kms/properties.rs index 01bf715e96..3a0e8bc5fc 100644 --- a/drivers/graphics/driver-graphics/src/kms/properties.rs +++ b/drivers/graphics/driver-graphics/src/kms/properties.rs @@ -81,15 +81,7 @@ impl KmsObjects { } 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::(id) } pub fn get_blob(&self, id: KmsObjectId) -> Result<&[u8]> {