diff options
Diffstat (limited to 'client/src/window.rs')
-rw-r--r-- | client/src/window.rs | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/client/src/window.rs b/client/src/window.rs index d0296e7..0bcac6a 100644 --- a/client/src/window.rs +++ b/client/src/window.rs @@ -1,4 +1,5 @@ use crate::renderer::Renderer; +use log::warn; use winit::{ application::ApplicationHandler, event::WindowEvent, @@ -20,19 +21,30 @@ impl ApplicationHandler for WindowState { let window = event_loop .create_window(WindowAttributes::default().with_maximized(true)) .unwrap(); - let renderer = Renderer::new(unsafe { std::mem::transmute(&window) }); + let renderer = Renderer::new(unsafe { std::mem::transmute(&window) }).unwrap(); self.window = Some((window, renderer)) } fn window_event( &mut self, event_loop: &ActiveEventLoop, - window_id: WindowId, + _window_id: WindowId, event: WindowEvent, ) { - if let Some((win, ren)) = &self.window { + if let Some((win, ren)) = &mut self.window { match event { - WindowEvent::RedrawRequested => {} + WindowEvent::CloseRequested => { + event_loop.exit(); + } + WindowEvent::Resized(size) => { + ren.resize(size); + } + WindowEvent::RedrawRequested => { + if let Err(e) = ren.redraw() { + warn!("{e:?}") + } + win.request_redraw(); + } _ => (), } } |