From 96729e745a9f7b2cdb5d8fe272a5253b6f9d045e Mon Sep 17 00:00:00 2001
From: Petar Popovic <[EMAIL REDACTED]>
Date: Sun, 3 Nov 2024 18:36:07 +0100
Subject: [PATCH] SDL_GetClosestFullscreenDisplayMode(): Rename parameter
`mode` to `closest`
Also: Check, if the parameter is NULL inside the function.
---
docs/README-migration.md | 1 -
include/SDL3/SDL_video.h | 4 ++--
src/video/SDL_video.c | 14 ++++++++------
3 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/docs/README-migration.md b/docs/README-migration.md
index e213fa813dcdc..a6f9a64acbc76 100644
--- a/docs/README-migration.md
+++ b/docs/README-migration.md
@@ -2210,7 +2210,6 @@ The following functions have been renamed:
* SDL_SetWindowDisplayMode() => SDL_SetWindowFullscreenMode(), returns bool
The following functions have been removed:
-* SDL_GetClosestFullscreenDisplayMode()
* SDL_GetDisplayDPI() - not reliable across platforms, approximately replaced by multiplying SDL_GetWindowDisplayScale() times 160 on iPhone and Android, and 96 on other platforms.
* SDL_GetDisplayMode()
* SDL_GetNumDisplayModes() - replaced with SDL_GetFullscreenDisplayModes()
diff --git a/include/SDL3/SDL_video.h b/include/SDL3/SDL_video.h
index de793bdc7cee1..44540c5323645 100644
--- a/include/SDL3/SDL_video.h
+++ b/include/SDL3/SDL_video.h
@@ -665,7 +665,7 @@ extern SDL_DECLSPEC SDL_DisplayMode ** SDLCALL SDL_GetFullscreenDisplayModes(SDL
* for the desktop refresh rate.
* \param include_high_density_modes boolean to include high density modes in
* the search.
- * \param mode a pointer filled in with the closest display mode equal to or
+ * \param closest a pointer filled in with the closest display mode equal to or
* larger than the desired mode.
* \returns true on success or false on failure; call SDL_GetError() for more
* information.
@@ -675,7 +675,7 @@ extern SDL_DECLSPEC SDL_DisplayMode ** SDLCALL SDL_GetFullscreenDisplayModes(SDL
* \sa SDL_GetDisplays
* \sa SDL_GetFullscreenDisplayModes
*/
-extern SDL_DECLSPEC bool SDLCALL SDL_GetClosestFullscreenDisplayMode(SDL_DisplayID displayID, int w, int h, float refresh_rate, bool include_high_density_modes, SDL_DisplayMode *mode);
+extern SDL_DECLSPEC bool SDLCALL SDL_GetClosestFullscreenDisplayMode(SDL_DisplayID displayID, int w, int h, float refresh_rate, bool include_high_density_modes, SDL_DisplayMode *closest);
/**
* Get information about the desktop's display mode.
diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c
index 2e2a4bd3d565f..37ce7697e6d9f 100644
--- a/src/video/SDL_video.c
+++ b/src/video/SDL_video.c
@@ -1319,14 +1319,16 @@ SDL_DisplayMode **SDL_GetFullscreenDisplayModes(SDL_DisplayID displayID, int *co
bool SDL_GetClosestFullscreenDisplayMode(SDL_DisplayID displayID, int w, int h, float refresh_rate, bool include_high_density_modes, SDL_DisplayMode *result)
{
+ if (!result) {
+ return SDL_InvalidParamError("closest"); // Parameter `result` is called `closest` in the header.
+ }
+
const SDL_DisplayMode *mode, *closest = NULL;
float aspect_ratio;
int i;
SDL_VideoDisplay *display = SDL_GetVideoDisplay(displayID);
- if (result) {
- SDL_zerop(result);
- }
+ SDL_zerop(result);
CHECK_DISPLAY_MAGIC(display, false);
@@ -1378,9 +1380,9 @@ bool SDL_GetClosestFullscreenDisplayMode(SDL_DisplayID displayID, int w, int h,
if (!closest) {
return SDL_SetError("Couldn't find any matching video modes");
}
- if (result) {
- SDL_copyp(result, closest);
- }
+
+ SDL_copyp(result, closest);
+
return true;
}