diff --git a/wgpu-hal/src/metal/surface.rs b/wgpu-hal/src/metal/surface.rs index 37b0dfc7f9..c239df29f9 100644 --- a/wgpu-hal/src/metal/surface.rs +++ b/wgpu-hal/src/metal/surface.rs @@ -267,15 +267,14 @@ impl crate::Surface for super::Surface { _timeout_ms: u32, //TODO ) -> Result>, crate::SurfaceError> { let render_layer = self.render_layer.lock(); - let (drawable, texture) = autoreleasepool(|| { - if let Some(drawable) = render_layer.next_drawable() { - Ok((drawable.to_owned(), drawable.texture().to_owned())) - } else { - Err(crate::SurfaceError::Other( - "failed to allocate drawable due to metal resource exhaustion", - )) - } - })?; + let (drawable, texture) = match autoreleasepool(|| { + render_layer + .next_drawable() + .map(|drawable| (drawable.to_owned(), drawable.texture().to_owned())) + }) { + Some(pair) => pair, + None => return Ok(None), + }; let suf_texture = super::SurfaceTexture { texture: super::Texture {