diff --git a/src/os/macos/mod.rs b/src/os/macos/mod.rs index c577fa2..5e7b522 100644 --- a/src/os/macos/mod.rs +++ b/src/os/macos/mod.rs @@ -601,14 +601,15 @@ impl Window { let mut scale = 1i32; loop { - let w = width as i32 * (scale + 1); - let h = height as i32 * (scale + 1); + let next_scale = scale + 1; + let w = width as i32 * next_scale; + let h = height as i32 * next_scale; if w > screen_x || h > screen_y { break; } - scale *= 2; + scale = next_scale; } scale diff --git a/src/os/posix/x11.rs b/src/os/posix/x11.rs index 61cc2ec..21ae8cd 100644 --- a/src/os/posix/x11.rs +++ b/src/os/posix/x11.rs @@ -849,10 +849,10 @@ impl Window { Scale::X16 => 16, Scale::X32 => 32, Scale::FitScreen => { - let mut scale = 1; + let mut scale = 1usize; loop { - let next_scale = scale * 2; + let next_scale = scale + 1; let w = width * next_scale; let h = height * next_scale; @@ -863,11 +863,7 @@ impl Window { scale = next_scale; } - if scale >= 32 { - 32 - } else { - scale - } + scale } } } diff --git a/src/os/redox/mod.rs b/src/os/redox/mod.rs index e329522..0edaf82 100644 --- a/src/os/redox/mod.rs +++ b/src/os/redox/mod.rs @@ -41,15 +41,21 @@ impl Window { Scale::FitScreen => { let display_size = orbclient::get_display_size() .map_err(|_| Error::WindowCreate("Unable to get display size".to_owned()))?; - let mut scale = 32; - while scale > 1 { - if width * scale < display_size.0 as usize - && height * scale < display_size.1 as usize - { + + let mut scale = 1usize; + + loop { + let next_scale = scale + 1; + let w = width * next_scale; + let h = height * next_scale; + + if w > display_size.0 as usize || h > display_size.1 as usize { break; } - scale -= 1; + + scale = next_scale; } + scale } }; diff --git a/src/os/windows/mod.rs b/src/os/windows/mod.rs index e2291f4..962a93f 100644 --- a/src/os/windows/mod.rs +++ b/src/os/windows/mod.rs @@ -1040,17 +1040,18 @@ impl Window { let mut scale = 1i32; loop { - let w = width as i32 * (scale + 1); - let h = height as i32 * (scale + 1); + let next_scale = scale + 1; + let w = width as i32 * next_scale; + let h = height as i32 * next_scale; if w > screen_x || h > screen_y { break; } - scale *= 2; + scale = next_scale; } - scale + std::cmp::max(1, scale - 1) //reduce slightly so we don't go over the taskbar } };