Fixed refresh interval calculation
This commit is contained in:
parent
2dcb9440f1
commit
44f06b216a
@ -918,21 +918,22 @@ static void SDL_CalculateSimulatedVSyncInterval(SDL_Renderer *renderer, SDL_Wind
|
||||
{
|
||||
SDL_DisplayID displayID = SDL_GetDisplayForWindow(window);
|
||||
const SDL_DisplayMode *mode;
|
||||
int num, den;
|
||||
int refresh_num, refresh_den;
|
||||
|
||||
if (displayID == 0) {
|
||||
displayID = SDL_GetPrimaryDisplay();
|
||||
}
|
||||
mode = SDL_GetDesktopDisplayMode(displayID);
|
||||
if (mode && mode->refresh_rate_numerator > 0) {
|
||||
num = mode->refresh_rate_numerator;
|
||||
den = mode->refresh_rate_denominator;
|
||||
if (mode && mode->refresh_rate_numerator > 0 && mode->refresh_rate_denominator > 0) {
|
||||
refresh_num = mode->refresh_rate_numerator;
|
||||
refresh_den = mode->refresh_rate_denominator;
|
||||
} else {
|
||||
/* Pick a good default refresh rate */
|
||||
num = 60;
|
||||
den = 1;
|
||||
refresh_num = 60;
|
||||
refresh_den = 1;
|
||||
}
|
||||
renderer->simulate_vsync_interval_ns = (SDL_NS_PER_SECOND * num) / den;
|
||||
/* Flip numerator and denominator to change from framerate to interval */
|
||||
renderer->simulate_vsync_interval_ns = (SDL_NS_PER_SECOND * refresh_den) / refresh_num;
|
||||
}
|
||||
|
||||
#endif /* !SDL_RENDER_DISABLED */
|
||||
@ -1156,10 +1157,10 @@ SDL_Renderer *SDL_CreateSoftwareRenderer(SDL_Surface *surface)
|
||||
#if SDL_VIDEO_RENDER_SW
|
||||
SDL_Renderer *renderer;
|
||||
|
||||
if (!surface) {
|
||||
if (!surface) {
|
||||
SDL_InvalidParamError("surface");
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
SDL_PropertiesID props = SDL_CreateProperties();
|
||||
SDL_SetPointerProperty(props, SDL_PROP_RENDERER_CREATE_SURFACE_POINTER, surface);
|
||||
|
Loading…
x
Reference in New Issue
Block a user