mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-09-25 04:28:29 +00:00
render: Prevent division by zero if logical presentation is 0 pixels.
This commit is contained in:
@@ -2571,7 +2571,12 @@ static void UpdateLogicalPresentation(SDL_Renderer *renderer)
|
|||||||
renderer->logical_src_rect.w = logical_w;
|
renderer->logical_src_rect.w = logical_w;
|
||||||
renderer->logical_src_rect.h = logical_h;
|
renderer->logical_src_rect.h = logical_h;
|
||||||
|
|
||||||
if (renderer->logical_presentation_mode == SDL_LOGICAL_PRESENTATION_INTEGER_SCALE) {
|
if ((logical_w <= 0.0f) || (logical_h <= 0.0f)) {
|
||||||
|
renderer->logical_dst_rect.x = 0.0f;
|
||||||
|
renderer->logical_dst_rect.y = 0.0f;
|
||||||
|
renderer->logical_dst_rect.w = output_w;
|
||||||
|
renderer->logical_dst_rect.h = output_h;
|
||||||
|
} else if (renderer->logical_presentation_mode == SDL_LOGICAL_PRESENTATION_INTEGER_SCALE) {
|
||||||
float scale;
|
float scale;
|
||||||
if (want_aspect > real_aspect) {
|
if (want_aspect > real_aspect) {
|
||||||
scale = (float)((int)output_w / (int)logical_w); // This an integer division!
|
scale = (float)((int)output_w / (int)logical_w); // This an integer division!
|
||||||
@@ -2635,8 +2640,8 @@ static void UpdateLogicalPresentation(SDL_Renderer *renderer)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
renderer->main_view.logical_scale.x = (logical_w != 0.0f) ? renderer->logical_dst_rect.w / logical_w : 0.0f;
|
renderer->main_view.logical_scale.x = (logical_w > 0.0f) ? renderer->logical_dst_rect.w / logical_w : 0.0f;
|
||||||
renderer->main_view.logical_scale.y = (logical_h != 0.0f) ? renderer->logical_dst_rect.h / logical_h : 0.0f;
|
renderer->main_view.logical_scale.y = (logical_h > 0.0f) ? renderer->logical_dst_rect.h / logical_h : 0.0f;
|
||||||
renderer->main_view.current_scale.x = renderer->main_view.scale.x * renderer->main_view.logical_scale.x;
|
renderer->main_view.current_scale.x = renderer->main_view.scale.x * renderer->main_view.logical_scale.x;
|
||||||
renderer->main_view.current_scale.y = renderer->main_view.scale.y * renderer->main_view.logical_scale.y;
|
renderer->main_view.current_scale.y = renderer->main_view.scale.y * renderer->main_view.logical_scale.y;
|
||||||
renderer->main_view.logical_offset.x = renderer->logical_dst_rect.x;
|
renderer->main_view.logical_offset.x = renderer->logical_dst_rect.x;
|
||||||
|
Reference in New Issue
Block a user