diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c index 53a59bfb64..58f8fd0acc 100644 --- a/src/render/SDL_render.c +++ b/src/render/SDL_render.c @@ -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);