mirror of https://github.com/encounter/SDL.git
video: wayland: Support displays with a 0 refresh rate
Some wayland compositors report the refresh rate as 0. Since we want to force a minimum refresh rate of 10 frames worth, we were dividing by the reported refresh rate, causing a divide-by-zero. If the refresh rate is 0, instead force a frame every second if no frame callbacks are received. This fixes bug #4785
This commit is contained in:
parent
ba87876ef7
commit
35d045584d
|
@ -129,7 +129,9 @@ Wayland_GLES_SwapWindow(_THIS, SDL_Window *window)
|
|||
if (swap_interval != 0) {
|
||||
struct wl_display *display = ((SDL_VideoData *)_this->driverdata)->display;
|
||||
SDL_VideoDisplay *sdldisplay = SDL_GetDisplayForWindow(window);
|
||||
const Uint32 max_wait = SDL_GetTicks() + (10000 / sdldisplay->current_mode.refresh_rate); /* ~10 frames, so we'll progress even if throttled to zero. */
|
||||
/* ~10 frames (or 1 sec), so we'll progress even if throttled to zero. */
|
||||
const Uint32 max_wait = SDL_GetTicks() + (sdldisplay->current_mode.refresh_rate ?
|
||||
(10000 / sdldisplay->current_mode.refresh_rate) : 1000);
|
||||
while (SDL_AtomicGet(&data->swap_interval_ready) == 0) {
|
||||
Uint32 now;
|
||||
|
||||
|
|
Loading…
Reference in New Issue