diff options
-rw-r--r-- | src/window.rs | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/window.rs b/src/window.rs index b01795e..a7932de 100644 --- a/src/window.rs +++ b/src/window.rs @@ -109,20 +109,17 @@ impl Window { /// Resize the frame buffer and screen surface to the new size of the window. pub fn resize_buffer_and_surface(&mut self, physical_dimensions: Dimensions) { - if self.surface_dimensions == physical_dimensions { - return; - } if let Some((width, height)) = dim_to_nonzero_size(physical_dimensions) { self.surface.resize(width, height).unwrap(); self.surface_dimensions = physical_dimensions; }; - let pixel_scale = self.controller.pixel_scale().get(); - let logical_dimensions = physical_dimensions / pixel_scale; - self.buffer.resize(logical_dimensions); - self.controller.on_resize(logical_dimensions); - - self.pixel_scale = pixel_scale; - self.current_render_hint = RenderHint::Redraw; + self.pixel_scale = self.controller.pixel_scale().get(); + let logical_dimensions = physical_dimensions / self.pixel_scale; + if logical_dimensions != self.buffer.dimensions() { + self.buffer.resize(logical_dimensions); + self.controller.on_resize(logical_dimensions); + self.current_render_hint = RenderHint::Redraw; + } } pub fn move_cursor(&mut self, position: Point) { @@ -141,6 +138,8 @@ impl Window { if let RenderRequest::Render(hint) = self.controller.render_request() { self.current_render_hint &= hint; self.window.request_redraw(); + } else if self.current_render_hint.is_redraw() { + self.window.request_redraw(); } } |