From ab4a2f6f409b0661428f02065aa9a0604e9a6f77 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 30 Oct 2024 02:30:51 +0100 Subject: [PATCH] Improve error handling --- experiments/2024-10-30/src/app.rs | 2 +- experiments/2024-10-30/src/render.rs | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/experiments/2024-10-30/src/app.rs b/experiments/2024-10-30/src/app.rs index 4876393a6..7f6cf2b79 100644 --- a/experiments/2024-10-30/src/app.rs +++ b/experiments/2024-10-30/src/app.rs @@ -32,7 +32,7 @@ impl ApplicationHandler for App { .unwrap(), ); - let renderer = Renderer::new(window.clone()); + let renderer = Renderer::new(window.clone()).unwrap(); self.window = Some(window); self.renderer = Some(renderer); diff --git a/experiments/2024-10-30/src/render.rs b/experiments/2024-10-30/src/render.rs index a231b859c..fe2a3dc73 100644 --- a/experiments/2024-10-30/src/render.rs +++ b/experiments/2024-10-30/src/render.rs @@ -1,5 +1,6 @@ use std::sync::Arc; +use anyhow::anyhow; use winit::window::Window; pub struct Renderer { @@ -9,31 +10,30 @@ pub struct Renderer { } impl Renderer { - pub fn new(window: Arc) -> Self { + pub fn new(window: Arc) -> anyhow::Result { let instance = wgpu::Instance::default(); - let surface = instance.create_surface(window.clone()).unwrap(); + let surface = instance.create_surface(window.clone())?; let adapter = pollster::block_on(instance.request_adapter( &wgpu::RequestAdapterOptions { compatible_surface: Some(&surface), ..Default::default() }, )) - .unwrap(); + .ok_or_else(|| anyhow!("Failed to request adapter"))?; let (device, queue) = pollster::block_on( adapter.request_device(&wgpu::DeviceDescriptor::default(), None), - ) - .unwrap(); + )?; let size = window.inner_size(); let config = surface .get_default_config(&adapter, size.width, size.height) - .unwrap(); + .ok_or_else(|| anyhow!("Failed to get default surface config"))?; surface.configure(&device, &config); - Self { + Ok(Self { surface, device, queue, - } + }) } }