diff --git a/app/streaming/session.cpp b/app/streaming/session.cpp index a4cdf787..0b0ea91c 100644 --- a/app/streaming/session.cpp +++ b/app/streaming/session.cpp @@ -637,6 +637,16 @@ void Session::updateOptimalWindowDisplayMode() } } + if (bestMode.refresh_rate == 0) { + // We may find no match if the user has moved a 120 FPS + // stream onto a 60 Hz monitor (since no refresh rate can + // divide our FPS setting). We'll stick to the default in + // this case. + SDL_LogWarn(SDL_LOG_CATEGORY_APPLICATION, + "No matching refresh rate found; using desktop mode"); + bestMode = desktopMode; + } + SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Chosen best display mode: %dx%dx%d", bestMode.w, bestMode.h, bestMode.refresh_rate); diff --git a/app/streaming/video/ffmpeg-renderers/pacer/pacer.cpp b/app/streaming/video/ffmpeg-renderers/pacer/pacer.cpp index 4ce58323..540310c9 100644 --- a/app/streaming/video/ffmpeg-renderers/pacer/pacer.cpp +++ b/app/streaming/video/ffmpeg-renderers/pacer/pacer.cpp @@ -1,5 +1,4 @@ #include "pacer.h" -#include "streaming/streamutils.h" #include "nullthreadedvsyncsource.h" @@ -144,13 +143,21 @@ bool Pacer::initialize(SDL_Window* window, int maxVideoFps, bool enableVsync) } else { // Use the current display mode for windowed and borderless - if (!StreamUtils::getRealDesktopMode(displayIndex, &mode)) { + if (SDL_GetCurrentDisplayMode(displayIndex, &mode) != 0) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, + "SDL_GetCurrentDisplayMode() failed: %s", + SDL_GetError()); return false; } } // May be zero if undefined m_DisplayFps = mode.refresh_rate; + if (m_DisplayFps == 0) { + SDL_LogWarn(SDL_LOG_CATEGORY_APPLICATION, + "Refresh rate unknown; assuming 60 Hz"); + m_DisplayFps = 60; + } if (m_EnableVsync) { SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION,