use winit::application::ApplicationHandler; use winit::event::WindowEvent; use winit::event_loop::ActiveEventLoop; use winit::window::{WindowId}; use crate::display::window::Window; use crate::vulkan::VkRenderContext; pub struct App { window: Window, render_context: Option, } impl App { pub fn new(window: Window) -> Self { Self { window, render_context: None, } } } impl ApplicationHandler for App { fn resumed(&mut self, event_loop: &ActiveEventLoop) { self.window.create_window(event_loop) .map_err(|err| format!("Failed to create window: {}", err)) .unwrap(); self.render_context = VkRenderContext::init(&self.window).ok(); } fn window_event(&mut self, event_loop: &ActiveEventLoop, id: WindowId, event: WindowEvent) { match event { WindowEvent::CloseRequested => { log::debug!("The close button was pressed; stopping"); event_loop.exit(); } _ => self.window.window_event(event_loop, id, event), } } }