Allow renderers that force V-sync on to run without it when streaming higher than the display refresh rate

This commit is contained in:
Cameron Gutman 2018-09-08 15:27:21 -07:00
parent c9a7c15f98
commit 93c683be3a

View file

@ -1,5 +1,6 @@
#include <Limelight.h>
#include "ffmpeg.h"
#include "streaming/streamutils.h"
#ifdef Q_OS_WIN32
#include "ffmpeg-renderers/dxva2.h"
@ -127,9 +128,13 @@ bool FFmpegVideoDecoder::completeInitialization(AVCodec* decoder, SDL_Window* wi
enableVsync = false;
}
else if (vsyncConstraint == IFFmpegRenderer::VSYNC_FORCE_ON && !enableVsync) {
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION,
"V-sync is forcefully enabled by the active renderer");
enableVsync = true;
// FIXME: This duplicates logic in Session.cpp
int displayHz = StreamUtils::getDisplayRefreshRate(window);
if (displayHz + 5 >= maxFps) {
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION,
"V-sync is forcefully enabled by the active renderer");
enableVsync = true;
}
}
m_Pacer = new Pacer(m_Renderer);