return appropriate error when failing to allocate drawable on metal

This commit is contained in:
xacrimon
2021-09-10 21:30:30 +02:00
parent 37288a657f
commit da849115b5

View File

@@ -268,9 +268,12 @@ impl crate::Surface<super::Api> for super::Surface {
) -> Result<Option<crate::AcquiredSurfaceTexture<super::Api>>, crate::SurfaceError> {
let render_layer = self.render_layer.lock();
let (drawable, texture) = autoreleasepool(|| {
let drawable = render_layer.next_drawable().unwrap();
(drawable.to_owned(), drawable.texture().to_owned())
});
if let Some(drawable) = render_layer.next_drawable() {
Ok((drawable.to_owned(), drawable.texture().to_owned()))
} else {
return Err(crate::SurfaceError::Other("failed to allocate drawable due to metal resource exhaustion"));
}
})?;
let suf_texture = super::SurfaceTexture {
texture: super::Texture {