From e5010b8ab87b2e30feea366396bc060c8e793d8d Mon Sep 17 00:00:00 2001 From: Billy Messenger Date: Thu, 22 Jul 2021 13:23:36 -0500 Subject: redo custom error for Compositor::draw() --- wgpu/src/window/compositor.rs | 64 ++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 28 deletions(-) (limited to 'wgpu/src/window') diff --git a/wgpu/src/window/compositor.rs b/wgpu/src/window/compositor.rs index fd8fec6e..fb25fca4 100644 --- a/wgpu/src/window/compositor.rs +++ b/wgpu/src/window/compositor.rs @@ -135,8 +135,7 @@ impl iced_graphics::window::Compositor for Compositor { background_color: Color, output: &::Output, overlay: &[T], - ) -> Result - { + ) -> Result { match swap_chain.get_current_frame() { Ok(frame) => { let mut encoder = self.device.create_command_encoder( @@ -145,27 +144,31 @@ impl iced_graphics::window::Compositor for Compositor { }, ); - let _ = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { - label: Some("iced_wgpu::window::Compositor render pass"), - color_attachments: &[wgpu::RenderPassColorAttachment { - view: &frame.output.view, - resolve_target: None, - ops: wgpu::Operations { - load: wgpu::LoadOp::Clear({ - let [r, g, b, a] = background_color.into_linear(); - - wgpu::Color { - r: f64::from(r), - g: f64::from(g), - b: f64::from(b), - a: f64::from(a), - } - }), - store: true, - }, - }], - depth_stencil_attachment: None, - }); + let _ = + encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: Some( + "iced_wgpu::window::Compositor render pass", + ), + color_attachments: &[wgpu::RenderPassColorAttachment { + view: &frame.output.view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear({ + let [r, g, b, a] = + background_color.into_linear(); + + wgpu::Color { + r: f64::from(r), + g: f64::from(g), + b: f64::from(b), + a: f64::from(a), + } + }), + store: true, + }, + }], + depth_stencil_attachment: None, + }); let mouse_interaction = renderer.backend_mut().draw( &mut self.device, @@ -192,12 +195,17 @@ impl iced_graphics::window::Compositor for Compositor { Ok(mouse_interaction) } Err(error) => match error { - wgpu::SwapChainError::OutOfMemory => { - Err(iced_graphics::window::CompositorDrawError::FatalSwapchainError(Box::new(error))) + wgpu::SwapChainError::Timeout => { + Err(iced_graphics::window::SwapChainError::Timeout) + } + wgpu::SwapChainError::Outdated => { + Err(iced_graphics::window::SwapChainError::Outdated) } - _ => { - // Try again next frame. - Err(iced_graphics::window::CompositorDrawError::SwapchainOutdated(Box::new(error))) + wgpu::SwapChainError::Lost => { + Err(iced_graphics::window::SwapChainError::Lost) + } + wgpu::SwapChainError::OutOfMemory => { + Err(iced_graphics::window::SwapChainError::OutOfMemory) } }, } -- cgit