SDL_GetFullscreenDisplayModes() follows the SDL_GetStringRule

This commit is contained in:
Sam Lantinga
2024-07-18 17:02:47 -07:00
parent 9758e102bc
commit 9de8cb888a
8 changed files with 28 additions and 32 deletions

View File

@@ -269,7 +269,7 @@ SDL_DYNAPI_PROC(const SDL_DisplayID*,SDL_GetDisplays,(int *a),(a),return)
SDL_DYNAPI_PROC(const char*,SDL_GetError,(void),(),return)
SDL_DYNAPI_PROC(SDL_bool,SDL_GetEventFilter,(SDL_EventFilter *a, void **b),(a,b),return)
SDL_DYNAPI_PROC(float,SDL_GetFloatProperty,(SDL_PropertiesID a, const char *b, float c),(a,b,c),return)
SDL_DYNAPI_PROC(const SDL_DisplayMode**,SDL_GetFullscreenDisplayModes,(SDL_DisplayID a, int *b),(a,b),return)
SDL_DYNAPI_PROC(const SDL_DisplayMode* const*,SDL_GetFullscreenDisplayModes,(SDL_DisplayID a, int *b),(a,b),return)
SDL_DYNAPI_PROC(int,SDL_GetGDKDefaultUser,(XUserHandle *a),(a),return)
SDL_DYNAPI_PROC(int,SDL_GetGDKTaskQueue,(XTaskQueueHandle *a),(a),return)
SDL_DYNAPI_PROC(const char*,SDL_GetGamepadAppleSFSymbolsNameForAxis,(SDL_Gamepad *a, SDL_GamepadAxis b),(a,b),return)

View File

@@ -1194,7 +1194,7 @@ SDL_bool SDLTest_CommonInit(SDLTest_CommonState *state)
if (state->verbose & VERBOSE_MODES) {
const SDL_DisplayID *displays;
SDL_Rect bounds, usablebounds;
const SDL_DisplayMode **modes;
const SDL_DisplayMode * const *modes;
const SDL_DisplayMode *mode;
int bpp;
Uint32 Rmask, Gmask, Bmask, Amask;
@@ -1258,7 +1258,6 @@ SDL_bool SDLTest_CommonInit(SDLTest_CommonState *state)
}
}
}
SDL_free((void *)modes);
#if defined(SDL_VIDEO_DRIVER_WINDOWS) && !defined(SDL_PLATFORM_XBOXONE) && !defined(SDL_PLATFORM_XBOXSERIES)
/* Print the D3D9 adapter index */

View File

@@ -1111,7 +1111,7 @@ void SDL_SetDisplayHDRProperties(SDL_VideoDisplay *display, const SDL_HDROutputP
static const SDL_DisplayMode *SDL_GetFullscreenModeMatch(const SDL_DisplayMode *mode)
{
const SDL_DisplayMode **modes;
const SDL_DisplayMode * const *modes;
SDL_DisplayMode fullscreen_mode;
if (mode->w <= 0 || mode->h <= 0) {
@@ -1150,8 +1150,6 @@ static const SDL_DisplayMode *SDL_GetFullscreenModeMatch(const SDL_DisplayMode *
}
}
}
SDL_free((void *)modes);
}
return mode;
}
@@ -1222,10 +1220,11 @@ void SDL_ResetFullscreenDisplayModes(SDL_VideoDisplay *display)
display->current_mode = &display->desktop_mode;
}
const SDL_DisplayMode **SDL_GetFullscreenDisplayModes(SDL_DisplayID displayID, int *count)
const SDL_DisplayMode * const *SDL_GetFullscreenDisplayModes(SDL_DisplayID displayID, int *count)
{
int i;
const SDL_DisplayMode **modes;
int num_modes;
const SDL_DisplayMode **retval;
SDL_VideoDisplay *display = SDL_GetVideoDisplay(displayID);
if (count) {
@@ -1238,27 +1237,30 @@ const SDL_DisplayMode **SDL_GetFullscreenDisplayModes(SDL_DisplayID displayID, i
_this->GetDisplayModes(_this, display);
}
modes = (const SDL_DisplayMode **)SDL_malloc((display->num_fullscreen_modes + 1) * sizeof(*modes));
if (modes) {
if (count) {
*count = display->num_fullscreen_modes;
num_modes = display->num_fullscreen_modes;
retval = (const SDL_DisplayMode **)SDL_malloc((num_modes + 1) * sizeof(*retval) + num_modes * sizeof(**retval));
if (retval) {
SDL_DisplayMode *modes = (SDL_DisplayMode *)((Uint8 *)retval + ((num_modes + 1) * sizeof(*retval)));
SDL_memcpy(modes, display->fullscreen_modes, num_modes * sizeof(*modes));
for (i = 0; i < num_modes; ++i) {
retval[i] = modes++;
}
retval[i] = NULL;
for (i = 0; i < display->num_fullscreen_modes; ++i) {
modes[i] = &display->fullscreen_modes[i];
if (count) {
*count = num_modes;
}
modes[i] = NULL;
} else {
if (count) {
*count = 0;
}
}
return modes;
return SDL_FreeLater(retval);
}
const SDL_DisplayMode *SDL_GetClosestFullscreenDisplayMode(SDL_DisplayID displayID, int w, int h, float refresh_rate, SDL_bool include_high_density_modes)
{
const SDL_DisplayMode **modes;
const SDL_DisplayMode * const *modes;
const SDL_DisplayMode *mode, *closest = NULL;
float aspect_ratio;
int i;
@@ -1311,7 +1313,6 @@ const SDL_DisplayMode *SDL_GetClosestFullscreenDisplayMode(SDL_DisplayID display
closest = mode;
}
SDL_free((void *)modes);
}
return closest;
}