You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-09 12:50:35 +00:00
Wayland: Fix division by zero when scale is less than 1
The `Vector2i` division operator casts doubles down to `int32_t`. It would thus truncate the fractional scale factor to 0 if less than 1, resulting in a FPE on x86_64.
This commit is contained in:
@@ -3829,7 +3829,7 @@ void WaylandThread::window_set_max_size(DisplayServer::WindowID p_window_id, con
|
|||||||
ERR_FAIL_COND(!windows.has(p_window_id));
|
ERR_FAIL_COND(!windows.has(p_window_id));
|
||||||
WindowState &ws = windows[p_window_id];
|
WindowState &ws = windows[p_window_id];
|
||||||
|
|
||||||
Vector2i logical_max_size = p_size / window_state_get_scale_factor(&ws);
|
Vector2i logical_max_size = scale_vector2i(p_size, 1 / window_state_get_scale_factor(&ws));
|
||||||
|
|
||||||
if (ws.wl_surface && ws.xdg_toplevel) {
|
if (ws.wl_surface && ws.xdg_toplevel) {
|
||||||
xdg_toplevel_set_max_size(ws.xdg_toplevel, logical_max_size.width, logical_max_size.height);
|
xdg_toplevel_set_max_size(ws.xdg_toplevel, logical_max_size.width, logical_max_size.height);
|
||||||
@@ -3848,7 +3848,7 @@ void WaylandThread::window_set_min_size(DisplayServer::WindowID p_window_id, con
|
|||||||
ERR_FAIL_COND(!windows.has(p_window_id));
|
ERR_FAIL_COND(!windows.has(p_window_id));
|
||||||
WindowState &ws = windows[p_window_id];
|
WindowState &ws = windows[p_window_id];
|
||||||
|
|
||||||
Size2i logical_min_size = p_size / window_state_get_scale_factor(&ws);
|
Size2i logical_min_size = scale_vector2i(p_size, 1 / window_state_get_scale_factor(&ws));
|
||||||
|
|
||||||
if (ws.wl_surface && ws.xdg_toplevel) {
|
if (ws.wl_surface && ws.xdg_toplevel) {
|
||||||
xdg_toplevel_set_min_size(ws.xdg_toplevel, logical_min_size.width, logical_min_size.height);
|
xdg_toplevel_set_min_size(ws.xdg_toplevel, logical_min_size.width, logical_min_size.height);
|
||||||
|
|||||||
Reference in New Issue
Block a user