From 77e4b4dc4bfdf2f5b9978dd8c6b307f72556bc0e Mon Sep 17 00:00:00 2001 From: mars Date: Wed, 11 May 2022 12:59:39 -0600 Subject: [PATCH] WinitViewport supports multiple acquisitions --- src/viewport.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/viewport.rs b/src/viewport.rs index e5941d8..f6ef180 100644 --- a/src/viewport.rs +++ b/src/viewport.rs @@ -90,11 +90,14 @@ impl WinitViewport { } pub fn acquire(&mut self) -> Result<(), wgpu::SurfaceError> { - let surface_texture = self.surface.get_current_texture()?; - self.output_view = Some(surface_texture - .texture - .create_view(&wgpu::TextureViewDescriptor::default())); - self.surface_texture = Some(surface_texture); + if self.output_view.is_none() { + let surface_texture = self.surface.get_current_texture()?; + self.output_view = Some(surface_texture + .texture + .create_view(&wgpu::TextureViewDescriptor::default())); + self.surface_texture = Some(surface_texture); + } + Ok(()) } @@ -114,6 +117,7 @@ impl WinitViewport { pub fn present(&mut self) { if let Some(surface_texture) = self.surface_texture.take() { surface_texture.present(); + self.output_view.take(); } }