Add settings option to disable V-sync for lowest possible latency on Windows

This commit is contained in:
Cameron Gutman
2018-08-20 22:25:19 -07:00
parent 7661f5a3d7
commit f9cdd49d2e
4 changed files with 27 additions and 8 deletions
+13
View File
@@ -230,6 +230,7 @@ ScrollView {
} }
} }
Row {
CheckBox { CheckBox {
id: fullScreenCheck id: fullScreenCheck
text: "<font color=\"white\">Full-screen</font>" text: "<font color=\"white\">Full-screen</font>"
@@ -239,6 +240,18 @@ ScrollView {
prefs.fullScreen = checked prefs.fullScreen = checked
} }
} }
CheckBox {
id: vsyncCheck
text: "<font color=\"white\">Enable V-Sync</font>"
font.pointSize: 12
visible: fullScreenCheck.checked
checked: prefs.enableVsync
onCheckedChanged: {
prefs.enableVsync = checked
}
}
}
} }
} }
+3
View File
@@ -9,6 +9,7 @@
#define SER_FPS "fps" #define SER_FPS "fps"
#define SER_BITRATE "bitrate" #define SER_BITRATE "bitrate"
#define SER_FULLSCREEN "fullscreen" #define SER_FULLSCREEN "fullscreen"
#define SER_VSYNC "vsync"
#define SER_GAMEOPTS "gameopts" #define SER_GAMEOPTS "gameopts"
#define SER_HOSTAUDIO "hostaudio" #define SER_HOSTAUDIO "hostaudio"
#define SER_MULTICONT "multicontroller" #define SER_MULTICONT "multicontroller"
@@ -30,6 +31,7 @@ void StreamingPreferences::reload()
fps = settings.value(SER_FPS, 60).toInt(); fps = settings.value(SER_FPS, 60).toInt();
bitrateKbps = settings.value(SER_BITRATE, getDefaultBitrate(width, height, fps)).toInt(); bitrateKbps = settings.value(SER_BITRATE, getDefaultBitrate(width, height, fps)).toInt();
fullScreen = settings.value(SER_FULLSCREEN, true).toBool(); fullScreen = settings.value(SER_FULLSCREEN, true).toBool();
enableVsync = settings.value(SER_VSYNC, true).toBool();
gameOptimizations = settings.value(SER_GAMEOPTS, true).toBool(); gameOptimizations = settings.value(SER_GAMEOPTS, true).toBool();
playAudioOnHost = settings.value(SER_HOSTAUDIO, false).toBool(); playAudioOnHost = settings.value(SER_HOSTAUDIO, false).toBool();
multiController = settings.value(SER_MULTICONT, true).toBool(); multiController = settings.value(SER_MULTICONT, true).toBool();
@@ -50,6 +52,7 @@ void StreamingPreferences::save()
settings.setValue(SER_FPS, fps); settings.setValue(SER_FPS, fps);
settings.setValue(SER_BITRATE, bitrateKbps); settings.setValue(SER_BITRATE, bitrateKbps);
settings.setValue(SER_FULLSCREEN, fullScreen); settings.setValue(SER_FULLSCREEN, fullScreen);
settings.setValue(SER_VSYNC, enableVsync);
settings.setValue(SER_GAMEOPTS, gameOptimizations); settings.setValue(SER_GAMEOPTS, gameOptimizations);
settings.setValue(SER_HOSTAUDIO, playAudioOnHost); settings.setValue(SER_HOSTAUDIO, playAudioOnHost);
settings.setValue(SER_MULTICONT, multiController); settings.setValue(SER_MULTICONT, multiController);
+3
View File
@@ -55,6 +55,7 @@ public:
Q_PROPERTY(int fps MEMBER fps NOTIFY displayModeChanged) Q_PROPERTY(int fps MEMBER fps NOTIFY displayModeChanged)
Q_PROPERTY(int bitrateKbps MEMBER bitrateKbps NOTIFY bitrateChanged) Q_PROPERTY(int bitrateKbps MEMBER bitrateKbps NOTIFY bitrateChanged)
Q_PROPERTY(bool fullScreen MEMBER fullScreen NOTIFY fullScreenChanged) Q_PROPERTY(bool fullScreen MEMBER fullScreen NOTIFY fullScreenChanged)
Q_PROPERTY(bool enableVsync MEMBER enableVsync NOTIFY enableVsyncChanged)
Q_PROPERTY(bool gameOptimizations MEMBER gameOptimizations NOTIFY gameOptimizationsChanged) Q_PROPERTY(bool gameOptimizations MEMBER gameOptimizations NOTIFY gameOptimizationsChanged)
Q_PROPERTY(bool playAudioOnHost MEMBER playAudioOnHost NOTIFY playAudioOnHostChanged) Q_PROPERTY(bool playAudioOnHost MEMBER playAudioOnHost NOTIFY playAudioOnHostChanged)
Q_PROPERTY(bool multiController MEMBER multiController NOTIFY multiControllerChanged) Q_PROPERTY(bool multiController MEMBER multiController NOTIFY multiControllerChanged)
@@ -68,6 +69,7 @@ public:
int fps; int fps;
int bitrateKbps; int bitrateKbps;
bool fullScreen; bool fullScreen;
bool enableVsync;
bool gameOptimizations; bool gameOptimizations;
bool playAudioOnHost; bool playAudioOnHost;
bool multiController; bool multiController;
@@ -79,6 +81,7 @@ signals:
void displayModeChanged(); void displayModeChanged();
void bitrateChanged(); void bitrateChanged();
void fullScreenChanged(); void fullScreenChanged();
void enableVsyncChanged();
void gameOptimizationsChanged(); void gameOptimizationsChanged();
void playAudioOnHostChanged(); void playAudioOnHostChanged();
void multiControllerChanged(); void multiControllerChanged();
+1 -1
View File
@@ -834,7 +834,7 @@ void Session::exec()
if (!chooseDecoder(m_Preferences.videoDecoderSelection, if (!chooseDecoder(m_Preferences.videoDecoderSelection,
m_Window, m_ActiveVideoFormat, m_ActiveVideoWidth, m_Window, m_ActiveVideoFormat, m_ActiveVideoWidth,
m_ActiveVideoHeight, m_ActiveVideoFrameRate, m_ActiveVideoHeight, m_ActiveVideoFrameRate,
true, // TODO: User configuration for V-sync m_Preferences.enableVsync,
s_ActiveSession->m_VideoDecoder)) { s_ActiveSession->m_VideoDecoder)) {
SDL_AtomicUnlock(&m_DecoderLock); SDL_AtomicUnlock(&m_DecoderLock);
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,