From d949c1a36af0944d4b63e867c656888688ea3086 Mon Sep 17 00:00:00 2001 From: Jay Oster Date: Mon, 30 Mar 2026 00:55:10 -0700 Subject: [PATCH] Fix error when minimizing example windows Most of the examples didn't have the size guard in the resize handler. This caused them to exit with an error on Windows when minimizing. --- examples/conway/src/main.rs | 2 ++ examples/custom-shader/src/main.rs | 5 ++++- examples/invaders/src/main.rs | 2 ++ examples/minimal-egui/src/main.rs | 5 ++++- examples/minimal-tao/src/main.rs | 2 +- examples/minimal-web/src/main.rs | 5 ++++- examples/minimal-winit-android/src/lib.rs | 2 +- examples/minimal-winit/src/main.rs | 2 ++ examples/raqote-winit/src/main.rs | 2 ++ examples/tiny-skia-winit/src/main.rs | 2 ++ 10 files changed, 24 insertions(+), 5 deletions(-) diff --git a/examples/conway/src/main.rs b/examples/conway/src/main.rs index cadb761..63e38fd 100644 --- a/examples/conway/src/main.rs +++ b/examples/conway/src/main.rs @@ -129,6 +129,8 @@ fn main() -> Result<(), Error> { } // Resize the window if let Some(size) = input.window_resized() + && size.width > 0 + && size.height > 0 && let Err(err) = pixels.resize_surface(size.width, size.height) { log_error("pixels.resize_surface", err); diff --git a/examples/custom-shader/src/main.rs b/examples/custom-shader/src/main.rs index a2056ba..37c537c 100644 --- a/examples/custom-shader/src/main.rs +++ b/examples/custom-shader/src/main.rs @@ -75,7 +75,10 @@ fn main() -> Result<(), Error> { } // Resize the window - if let Some(size) = input.window_resized() { + if let Some(size) = input.window_resized() + && size.width > 0 + && size.height > 0 + { if let Err(err) = pixels.resize_surface(size.width, size.height) { log_error("pixels.resize_surface", err); elwt.exit(); diff --git a/examples/invaders/src/main.rs b/examples/invaders/src/main.rs index 30e2a6f..67521ac 100644 --- a/examples/invaders/src/main.rs +++ b/examples/invaders/src/main.rs @@ -196,6 +196,8 @@ fn main() -> Result<(), Error> { // Resize the window if let Some(size) = g.game.input.window_resized() + && size.width > 0 + && size.height > 0 && let Err(err) = g.game.pixels.resize_surface(size.width, size.height) { log_error("pixels.resize_surface", err); diff --git a/examples/minimal-egui/src/main.rs b/examples/minimal-egui/src/main.rs index 7c15754..e9edd97 100644 --- a/examples/minimal-egui/src/main.rs +++ b/examples/minimal-egui/src/main.rs @@ -94,7 +94,10 @@ fn main() -> Result<(), Error> { } // Resize the window - if let Some(size) = input.window_resized() { + if let Some(size) = input.window_resized() + && size.width > 0 + && size.height > 0 + { if let Err(err) = pixels.resize_surface(size.width, size.height) { log_error("pixels.resize_surface", err); event_loop.exit(); diff --git a/examples/minimal-tao/src/main.rs b/examples/minimal-tao/src/main.rs index 3b6b698..ecdff7f 100644 --- a/examples/minimal-tao/src/main.rs +++ b/examples/minimal-tao/src/main.rs @@ -103,7 +103,7 @@ fn main() -> Result<(), Error> { } // Resize the window - WindowEvent::Resized(size) => { + WindowEvent::Resized(size) if size.width > 0 && size.height > 0 => { if let Err(err) = pixels.resize_surface(size.width, size.height) { log_error("pixels.resize_surface", err); *control_flow = ControlFlow::Exit; diff --git a/examples/minimal-web/src/main.rs b/examples/minimal-web/src/main.rs index 6a12b92..a49202a 100644 --- a/examples/minimal-web/src/main.rs +++ b/examples/minimal-web/src/main.rs @@ -141,7 +141,10 @@ async fn run() { Event::WindowEvent { event, .. } => { if let WindowEvent::Resized(size) = event { // Resize the window - if let Err(err) = pixels.resize_surface(size.width, size.height) { + if size.width > 0 + && size.height > 0 + && let Err(err) = pixels.resize_surface(size.width, size.height) + { log_error("pixels.resize_surface", err); elwt.exit(); return; diff --git a/examples/minimal-winit-android/src/lib.rs b/examples/minimal-winit-android/src/lib.rs index 001bd04..74d410c 100644 --- a/examples/minimal-winit-android/src/lib.rs +++ b/examples/minimal-winit-android/src/lib.rs @@ -61,7 +61,7 @@ pub fn _main(event_loop: EventLoop<()>) { Event::WindowEvent { event: WindowEvent::Resized(size), .. - } => { + } if size.width > 0 && size.height > 0 => { if let Some(display) = &mut display { display .pixels diff --git a/examples/minimal-winit/src/main.rs b/examples/minimal-winit/src/main.rs index 87f5638..5cda415 100644 --- a/examples/minimal-winit/src/main.rs +++ b/examples/minimal-winit/src/main.rs @@ -71,6 +71,8 @@ fn main() -> Result<(), Error> { // Resize the window if let Some(size) = input.window_resized() + && size.width > 0 + && size.height > 0 && let Err(err) = pixels.resize_surface(size.width, size.height) { log_error("pixels.resize_surface", err); diff --git a/examples/raqote-winit/src/main.rs b/examples/raqote-winit/src/main.rs index 10921a2..944fb3d 100644 --- a/examples/raqote-winit/src/main.rs +++ b/examples/raqote-winit/src/main.rs @@ -70,6 +70,8 @@ fn main() -> Result<(), Error> { // Resize the window if let Some(size) = input.window_resized() + && size.width > 0 + && size.height > 0 && let Err(err) = pixels.resize_surface(size.width, size.height) { log_error("pixels.resize_surface", err); diff --git a/examples/tiny-skia-winit/src/main.rs b/examples/tiny-skia-winit/src/main.rs index 4665fcb..442763f 100644 --- a/examples/tiny-skia-winit/src/main.rs +++ b/examples/tiny-skia-winit/src/main.rs @@ -68,6 +68,8 @@ fn main() -> Result<(), Error> { // Resize the window if let Some(size) = input.window_resized() + && size.width > 0 + && size.height > 0 && let Err(err) = pixels.resize_surface(size.width, size.height) { log_error("pixels.resize_surface", err);