mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-06-06 06:34:35 +00:00
wayland: Ensure window dimensions are greater than zero after adjusting for aspect
Resizing to zero can cause a bad viewport size error.
(cherry picked from commit ba3577f584)
This commit is contained in:
parent
1ebe9161c3
commit
7cdf4fd7ee
1 changed files with 8 additions and 8 deletions
|
|
@ -946,9 +946,9 @@ static void handle_xdg_toplevel_configure(void *data,
|
|||
const float aspect = (float)wind->requested.logical_width / (float)wind->requested.logical_height;
|
||||
|
||||
if (window->min_aspect != 0.f && aspect < window->min_aspect) {
|
||||
wind->requested.logical_height = SDL_lroundf((float)wind->requested.logical_width / window->min_aspect);
|
||||
wind->requested.logical_height = SDL_max(SDL_lroundf((float)wind->requested.logical_width / window->min_aspect), 1);
|
||||
} else if (window->max_aspect != 0.f && aspect > window->max_aspect) {
|
||||
wind->requested.logical_width = SDL_lroundf((float)wind->requested.logical_height * window->max_aspect);
|
||||
wind->requested.logical_width = SDL_max(SDL_lroundf((float)wind->requested.logical_height * window->max_aspect), 1);
|
||||
}
|
||||
} else {
|
||||
if (window->max_w > 0) {
|
||||
|
|
@ -965,9 +965,9 @@ static void handle_xdg_toplevel_configure(void *data,
|
|||
const float aspect = (float)wind->requested.pixel_width / (float)wind->requested.pixel_height;
|
||||
|
||||
if (window->min_aspect != 0.f && aspect < window->min_aspect) {
|
||||
wind->requested.pixel_height = SDL_lroundf((float)wind->requested.pixel_width / window->min_aspect);
|
||||
wind->requested.pixel_height = SDL_max(SDL_lroundf((float)wind->requested.pixel_width / window->min_aspect), 1);
|
||||
} else if (window->max_aspect != 0.f && aspect > window->max_aspect) {
|
||||
wind->requested.pixel_width = SDL_lroundf((float)wind->requested.pixel_height * window->max_aspect);
|
||||
wind->requested.pixel_width = SDL_max(SDL_lroundf((float)wind->requested.pixel_height * window->max_aspect), 1);
|
||||
}
|
||||
|
||||
wind->requested.logical_width = PixelToPoint(window, wind->requested.pixel_width);
|
||||
|
|
@ -1392,9 +1392,9 @@ static void decoration_frame_configure(struct libdecor_frame *frame,
|
|||
const float aspect = (float)wind->requested.logical_width / (float)wind->requested.logical_height;
|
||||
|
||||
if (window->min_aspect != 0.f && aspect < window->min_aspect) {
|
||||
wind->requested.logical_height = SDL_lroundf((float)wind->requested.logical_width / window->min_aspect);
|
||||
wind->requested.logical_height = SDL_max(SDL_lroundf((float)wind->requested.logical_width / window->min_aspect), 1);
|
||||
} else if (window->max_aspect != 0.f && aspect > window->max_aspect) {
|
||||
wind->requested.logical_width = SDL_lroundf((float)wind->requested.logical_height * window->max_aspect);
|
||||
wind->requested.logical_width = SDL_max(SDL_lroundf((float)wind->requested.logical_height * window->max_aspect), 1);
|
||||
}
|
||||
} else {
|
||||
if (window->max_w > 0) {
|
||||
|
|
@ -1411,9 +1411,9 @@ static void decoration_frame_configure(struct libdecor_frame *frame,
|
|||
const float aspect = (float)wind->requested.pixel_width / (float)wind->requested.pixel_height;
|
||||
|
||||
if (window->min_aspect != 0.f && aspect < window->min_aspect) {
|
||||
wind->requested.pixel_height = SDL_lroundf((float)wind->requested.pixel_width / window->min_aspect);
|
||||
wind->requested.pixel_height = SDL_max(SDL_lroundf((float)wind->requested.pixel_width / window->min_aspect), 1);
|
||||
} else if (window->max_aspect != 0.f && aspect > window->max_aspect) {
|
||||
wind->requested.pixel_width = SDL_lroundf((float)wind->requested.pixel_height * window->max_aspect);
|
||||
wind->requested.pixel_width = SDL_max(SDL_lroundf((float)wind->requested.pixel_height * window->max_aspect), 1);
|
||||
}
|
||||
|
||||
wind->requested.logical_width = PixelToPoint(window, wind->requested.pixel_width);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue