1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-13 19:54:17 +02:00

Add VSync to settings

This commit is contained in:
Alexander Wilms
2023-09-26 16:06:01 +02:00
parent 73ea52c615
commit 23d1638d70
5 changed files with 508 additions and 479 deletions

View File

@@ -274,8 +274,14 @@ void ScreenHandler::initializeWindow()
handleFatalError(message, true);
}
//create first available renderer if preferred not set. Use no flags, so HW accelerated will be preferred but SW renderer also will possible
mainRenderer = SDL_CreateRenderer(mainWindow, getPreferredRenderingDriver(), SDL_RENDERER_PRESENTVSYNC);
// create first available renderer if no preferred one is set
// use no SDL_RENDERER_SOFTWARE or SDL_RENDERER_ACCELERATED flag, so HW accelerated will be preferred but SW renderer will also be possible
uint32_t rendererFlags = 0;
if(settings["video"]["vsync"].Bool())
{
rendererFlags |= SDL_RENDERER_PRESENTVSYNC;
}
mainRenderer = SDL_CreateRenderer(mainWindow, getPreferredRenderingDriver(), rendererFlags);
if(mainRenderer == nullptr)
throw std::runtime_error("Unable to create renderer\n");

View File

@@ -149,7 +149,8 @@
"driver",
"displayIndex",
"showfps",
"targetfps"
"targetfps",
"vsync"
],
"properties" : {
"resolution" : {
@@ -207,6 +208,10 @@
"targetfps" : {
"type" : "number",
"default" : 60
},
"vsync" : {
"type" : "boolean",
"default" : true
}
}
},

View File

@@ -83,6 +83,7 @@ void CSettingsView::loadSettings()
ui->spinBoxInterfaceScaling->setValue(settings["video"]["resolution"]["scaling"].Float());
ui->spinBoxFramerateLimit->setValue(settings["video"]["targetfps"].Float());
ui->checkBoxVSync->setChecked(settings["video"]["vsync"].Bool());
ui->spinBoxReservedArea->setValue(std::round(settings["video"]["reservedWidth"].Float() * 100));
ui->comboBoxFriendlyAI->setCurrentText(QString::fromStdString(settings["server"]["friendlyAI"].String()));
@@ -494,6 +495,12 @@ void CSettingsView::on_spinBoxFramerateLimit_valueChanged(int arg1)
node->Float() = arg1;
}
void CSettingsView::on_checkBoxVSync_stateChanged(int arg1)
{
Settings node = settings.write["video"]["vsync"];
node->Bool() = arg1;
}
void CSettingsView::on_comboBoxEnemyPlayerAI_currentTextChanged(const QString &arg1)
{
Settings node = settings.write["server"]["playerAI"];

View File

@@ -62,6 +62,8 @@ private slots:
void on_spinBoxFramerateLimit_valueChanged(int arg1);
void on_checkBoxVSync_stateChanged(int arg1);
void on_comboBoxEnemyPlayerAI_currentTextChanged(const QString &arg1);
void on_comboBoxAlliedPlayerAI_currentTextChanged(const QString &arg1);

File diff suppressed because it is too large Load Diff