summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/window.rs19
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();
}
}