This commit is contained in:
parent
bc94b68c0c
commit
e9ce480f96
10 changed files with 175 additions and 136 deletions
|
@ -21,7 +21,8 @@ impl App {
|
|||
|
||||
impl ApplicationHandler for App {
|
||||
fn resumed(&mut self, event_loop: &ActiveEventLoop) {
|
||||
self.window.create_window(event_loop)
|
||||
self.window
|
||||
.create_window(event_loop)
|
||||
.map_err(|err| format!("Failed to create window: {}", err))
|
||||
.unwrap();
|
||||
|
||||
|
@ -37,22 +38,29 @@ impl ApplicationHandler for App {
|
|||
WindowEvent::Resized(size) => {
|
||||
match self.render_context.as_mut() {
|
||||
Some(render_context) => {
|
||||
if let Err(error) = render_context.update_resolution(size.width, size.height) {
|
||||
log::error!("Failed to update resolution of render context : {}", error);
|
||||
if let Err(error) =
|
||||
render_context.update_resolution(size.width, size.height)
|
||||
{
|
||||
log::error!(
|
||||
"Failed to update resolution of render context : {}",
|
||||
error
|
||||
);
|
||||
}
|
||||
}
|
||||
None => log::warn!("Window resized but no render context found")
|
||||
None => log::warn!("Window resized but no render context found"),
|
||||
};
|
||||
}
|
||||
WindowEvent::RedrawRequested => {
|
||||
match self.render_context.as_mut() {
|
||||
Some(render_context) => {
|
||||
if let Err(error) = render_context.render() {
|
||||
log::error!("Failed to render with render context : {}", error);
|
||||
if !event_loop.exiting() {
|
||||
match self.render_context.as_mut() {
|
||||
Some(render_context) => {
|
||||
if let Err(error) = render_context.render() {
|
||||
log::error!("Failed to render with render context : {}", error);
|
||||
}
|
||||
}
|
||||
}
|
||||
None => log::warn!("Window resized but no render context found")
|
||||
};
|
||||
None => log::warn!("Window resized but no render context found"),
|
||||
};
|
||||
}
|
||||
|
||||
self.window.request_redraw();
|
||||
}
|
||||
|
|
|
@ -2,4 +2,4 @@ mod app;
|
|||
mod window;
|
||||
|
||||
pub use app::App;
|
||||
pub use window::Window;
|
||||
pub use window::Window;
|
||||
|
|
|
@ -24,14 +24,15 @@ impl Window {
|
|||
}
|
||||
|
||||
pub fn required_extensions(&self) -> anyhow::Result<Vec<*const c_char>> {
|
||||
let display_handle = self.handle
|
||||
let display_handle = self
|
||||
.handle
|
||||
.as_ref()
|
||||
.ok_or_else(|| anyhow::anyhow!("Window not found"))?
|
||||
.display_handle()?;
|
||||
|
||||
#[allow(unused_mut)]
|
||||
let mut extension_names = ash_window::enumerate_required_extensions(display_handle.as_raw())?
|
||||
.to_vec();
|
||||
let mut extension_names =
|
||||
ash_window::enumerate_required_extensions(display_handle.as_raw())?.to_vec();
|
||||
|
||||
// TODO: Move this because is not related to Window extensions
|
||||
#[cfg(any(target_os = "macos", target_os = "ios"))]
|
||||
|
@ -55,7 +56,7 @@ impl Window {
|
|||
pub fn request_redraw(&self) {
|
||||
match self.handle.as_ref() {
|
||||
Some(window) => window.request_redraw(),
|
||||
None => log::warn!("Redraw requested but no window found")
|
||||
None => log::warn!("Redraw requested but no window found"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue