From da3e38024058dd6aeeef470f2b63a802c76fb82f Mon Sep 17 00:00:00 2001 From: Fredia Huya-Kouadio Date: Sat, 21 Jan 2023 22:04:44 -0800 Subject: Update the logic to calculate the screen scale on Android Takes into account the ratio between the screen size and the default window dimensions. --- platform/android/display_server_android.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'platform/android/display_server_android.cpp') diff --git a/platform/android/display_server_android.cpp b/platform/android/display_server_android.cpp index 6b3bdb7fe6..3fcb926f86 100644 --- a/platform/android/display_server_android.cpp +++ b/platform/android/display_server_android.cpp @@ -212,7 +212,18 @@ float DisplayServerAndroid::screen_get_scale(int p_screen) const { GodotIOJavaWrapper *godot_io_java = OS_Android::get_singleton()->get_godot_io_java(); ERR_FAIL_NULL_V(godot_io_java, 1.0f); - return godot_io_java->get_scaled_density(); + float screen_scale = godot_io_java->get_scaled_density(); + + // Update the scale to avoid cropping. + Size2i screen_size = screen_get_size(p_screen); + if (screen_size != Size2i()) { + float width_scale = screen_size.width / (float)OS_Android::DEFAULT_WINDOW_WIDTH; + float height_scale = screen_size.height / (float)OS_Android::DEFAULT_WINDOW_HEIGHT; + screen_scale = MIN(screen_scale, MIN(width_scale, height_scale)); + } + + print_line("Selected screen scale: ", screen_scale); + return screen_scale; } float DisplayServerAndroid::screen_get_refresh_rate(int p_screen) const { -- cgit v1.2.3