diff --git a/CHANGELOG.md b/CHANGELOG.md index 796f9c1f6..d2746c181 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 instance between windows. - Each `Window` frame now waits until it's fully rendered before yielding back to the windqow loop. +- When a `Window` has a 0 dimension, it will no longer try to redraw. This + presented as a panic when a window was minimized. ## v0.6.1 (2023-12-19) diff --git a/src/app.rs b/src/app.rs index 8c8a1a5c3..724e6a2d6 100644 --- a/src/app.rs +++ b/src/app.rs @@ -969,16 +969,18 @@ where } fn redraw(&mut self, window: &mut RunningWindow>) { - let Some(surface) = self.current_surface_texture(window) else { - return; - }; + if self.config.width > 0 && self.config.height > 0 { + let Some(surface) = self.current_surface_texture(window) else { + return; + }; - let render_start = Instant::now(); + let render_start = Instant::now(); - self.render_to_surface(surface, render_start, window); + self.render_to_surface(surface, render_start, window); - self.last_render_duration = render_start.elapsed(); - self.last_render = render_start; + self.last_render_duration = render_start.elapsed(); + self.last_render = render_start; + } } fn close_requested(&mut self, window: &mut RunningWindow>) -> bool { @@ -1017,13 +1019,15 @@ where fn resized(&mut self, window: &mut RunningWindow>) { self.config.width = window.inner_size().width; self.config.height = window.inner_size().height; - self.surface.configure(&self.device, &self.config); - self.kludgine.resize( - window.inner_size().into(), - window.scale().cast::(), - &self.queue, - ); - window.set_needs_redraw(); + if self.config.width > 0 && self.config.height > 0 { + self.surface.configure(&self.device, &self.config); + self.kludgine.resize( + window.inner_size().into(), + window.scale().cast::(), + &self.queue, + ); + window.set_needs_redraw(); + } self.behavior.resized( Window::new( window,