diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/main.rs b/src/main.rs index 9beb151..ba4ffb7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -24,6 +24,7 @@ struct Surreality { permanent: RefCell<Option<PermanentGraphicsState>>, for_reinit: RefCell<Option<GraphicsStateForReinit>>, window_dressing: RefCell<Option<WindowDressing>>, + is_minimized: bool, is_reinit_queued: bool, frame_index: usize, } @@ -34,6 +35,7 @@ impl Surreality { permanent: RefCell::new(None), for_reinit: RefCell::new(None), window_dressing: RefCell::new(None), + is_minimized: false, is_reinit_queued: false, frame_index: 0, } @@ -69,10 +71,12 @@ impl Surreality { fn do_frame(&mut self, window_id: WindowId) -> Result<()> { - if self.render(window_id)? || self.is_reinit_queued { - self.is_reinit_queued = false; + if !self.is_minimized { + if self.render(window_id)? || self.is_reinit_queued { + self.is_reinit_queued = false; - self.reinit()?; + self.reinit()?; + } } Ok(()) @@ -196,10 +200,16 @@ impl ApplicationHandler for Surreality { event_loop.exit(); } - WindowEvent::Resized(_) => { - self.is_reinit_queued = true; - if let Err(e) = self.do_frame(window_id) { - eprintln!("Error: {}", e); + WindowEvent::Resized(size) => { + if size.width == 0 || size.height == 0 { + self.is_minimized = true; + } else { + self.is_minimized = false; + self.is_reinit_queued = true; + + if let Err(e) = self.do_frame(window_id) { + eprintln!("Error: {}", e); + } } } |