From 47578cd22dbdb9b87969ce9872dd1d55e880f7d3 Mon Sep 17 00:00:00 2001 From: Adoo Date: Thu, 16 May 2024 18:56:31 +0800 Subject: [PATCH] =?UTF-8?q?fix(ribir):=20=F0=9F=90=9B=20crash=20when=20cre?= =?UTF-8?q?ating=20a=20zero-sized=20window?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 6 ++++++ ribir/src/backends/wgpu_backend.rs | 11 +++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb8d3e535..53e9884bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,12 @@ Please only add new entries below the [Unreleased](#unreleased---releasedate) he - **example**: run example in web wasm (#571 @wjian23) + +### Fixed + +- **ribir**: fixed the crash issue when the shell window is zero-sized at startup. (#582, @M-Adoo) + + ### Documented - **core**: Explained when to use `unsubscribe` with `watch!`. (#556, @M-Adoo) diff --git a/ribir/src/backends/wgpu_backend.rs b/ribir/src/backends/wgpu_backend.rs index 970966127..6087f2328 100644 --- a/ribir/src/backends/wgpu_backend.rs +++ b/ribir/src/backends/wgpu_backend.rs @@ -18,14 +18,17 @@ impl<'a> WinitBackend<'a> for WgpuBackend<'a> { let surface = instance.create_surface(window).unwrap(); let wgpu = ribir_gpu::WgpuImpl::new(instance, Some(&surface)).await; let size = window.inner_size(); - surface.configure(wgpu.device(), &Self::surface_config(size.width, size.height)); + let size = DeviceSize::new(size.width as i32, size.height as i32); - WgpuBackend { - size: DeviceSize::new(size.width as i32, size.height as i32), + let mut wgpu = WgpuBackend { + size: DeviceSize::zero(), surface, backend: ribir_gpu::GPUBackend::new(wgpu, AntiAliasing::Msaa4X), current_texture: None, - } + }; + wgpu.on_resize(size); + + wgpu } fn on_resize(&mut self, size: DeviceSize) {