summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/main.rs24
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);
+          }
         }
       }