diff options
author | 2021-07-22 13:23:36 -0500 | |
---|---|---|
committer | 2021-07-22 13:23:36 -0500 | |
commit | e5010b8ab87b2e30feea366396bc060c8e793d8d (patch) | |
tree | 73738efeafd4cf4151a9adb7523a31c848fa0cae /wgpu | |
parent | a7d2834a6d15466eecca29bb6357d3539cb652cd (diff) | |
download | iced-e5010b8ab87b2e30feea366396bc060c8e793d8d.tar.gz iced-e5010b8ab87b2e30feea366396bc060c8e793d8d.tar.bz2 iced-e5010b8ab87b2e30feea366396bc060c8e793d8d.zip |
redo custom error for Compositor::draw()
Diffstat (limited to 'wgpu')
-rw-r--r-- | wgpu/src/window/compositor.rs | 64 |
1 files changed, 36 insertions, 28 deletions
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: &<Self::Renderer as iced_native::Renderer>::Output, overlay: &[T], - ) -> Result<mouse::Interaction, iced_graphics::window::CompositorDrawError> - { + ) -> Result<mouse::Interaction, iced_graphics::window::SwapChainError> { 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) } }, } |