Browse Source

wayland: Throttle to 20hz if the frame callback never fires

Matches SDL2, and should be enough to keep most games from desyncing/timing out.

A proper fix for FIFO presentation without the frame callback mess is being worked on upstream, so this whole hack should be rendered obsolete in the near future.
Frank Praznik 1 năm trước cách đây
mục cha
commit
482a27bc00
1 tập tin đã thay đổi với 2 bổ sung2 xóa
  1. 2 2
      src/video/wayland/SDL_waylandopengles.c

+ 2 - 2
src/video/wayland/SDL_waylandopengles.c

@@ -124,8 +124,8 @@ int Wayland_GLES_SwapWindow(SDL_VideoDevice *_this, SDL_Window *window)
     if (swap_interval != 0 && data->surface_status == WAYLAND_SURFACE_STATUS_SHOWN) {
         SDL_VideoData *videodata = _this->driverdata;
         struct wl_display *display = videodata->display;
-        /* 1 sec, so we'll progress even if throttled to zero. */
-        const Uint64 max_wait = SDL_GetTicksNS() + SDL_NS_PER_SECOND;
+        /* 20hz, so we'll progress even if throttled to zero. */
+        const Uint64 max_wait = SDL_GetTicksNS() + (SDL_NS_PER_SECOND / 20);
         while (SDL_AtomicGet(&data->swap_interval_ready) == 0) {
             Uint64 now;