mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-04-26 17:24:27 +00:00
SDL_GetFullscreenDisplayModes() follows the SDL_GetStringRule
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user