Browse Source

[HTML5] Fix broken layout on load in HiDPI screens

This was caused by the devicePixelRatio being applied twice, once by the
HTML code, once by the OS code.
More specifically, OS.get_window_size() would return the canvas element
size, while OS.set_window_size() would set the element size to the
specified value times the devicePixelRatio.
Calling OS.set_window_size(OS.get_window_size()) would reapply the
devicePixelRatio every time.
This commit changes the behaviour so that OS.set_window_size() do not
apply the devicePixelRatio to the canvas element size, by it divides the
CSS size instead.
Fabio Alessandrelli 4 years ago
parent
commit
0f40391924
1 changed files with 2 additions and 2 deletions
  1. 2 2
      platform/javascript/os_javascript.cpp

+ 2 - 2
platform/javascript/os_javascript.cpp

@@ -174,8 +174,8 @@ void OS_JavaScript::set_window_size(const Size2 p_size) {
 			window_maximized = false;
 			window_maximized = false;
 		}
 		}
 		double scale = godot_js_display_pixel_ratio_get();
 		double scale = godot_js_display_pixel_ratio_get();
-		emscripten_set_canvas_element_size(canvas_id, p_size.x * scale, p_size.y * scale);
-		emscripten_set_element_css_size(canvas_id, p_size.x, p_size.y);
+		emscripten_set_canvas_element_size(canvas_id, p_size.x, p_size.y);
+		emscripten_set_element_css_size(canvas_id, p_size.x / scale, p_size.y / scale);
 	}
 	}
 }
 }