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
178546ac3e
1 changed files with 2 additions and 2 deletions
  1. 2 2
      platform/javascript/display_server_javascript.cpp

+ 2 - 2
platform/javascript/display_server_javascript.cpp

@@ -948,8 +948,8 @@ void DisplayServerJavaScript::window_set_size(const Size2i p_size, WindowID p_wi
 	last_width = p_size.x;
 	last_height = p_size.y;
 	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);
 }
 
 Size2i DisplayServerJavaScript::window_get_size(WindowID p_window) const {