mirror of
https://github.com/hannobraun/Fornjot
synced 2025-05-09 12:28:29 +00:00
Improve error handling
This commit is contained in:
parent
8e2ec045c3
commit
ab4a2f6f40
@ -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);
|
||||
|
@ -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<Window>) -> Self {
|
||||
pub fn new(window: Arc<Window>) -> anyhow::Result<Self> {
|
||||
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,
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user