mirror of
https://github.com/vcmi/vcmi.git
synced 2025-08-15 20:03:15 +02:00
Add VSync to settings
This commit is contained in:
@@ -274,8 +274,14 @@ void ScreenHandler::initializeWindow()
|
|||||||
handleFatalError(message, true);
|
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
|
// create first available renderer if no preferred one is set
|
||||||
mainRenderer = SDL_CreateRenderer(mainWindow, getPreferredRenderingDriver(), SDL_RENDERER_PRESENTVSYNC);
|
// 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)
|
if(mainRenderer == nullptr)
|
||||||
throw std::runtime_error("Unable to create renderer\n");
|
throw std::runtime_error("Unable to create renderer\n");
|
||||||
|
@@ -149,7 +149,8 @@
|
|||||||
"driver",
|
"driver",
|
||||||
"displayIndex",
|
"displayIndex",
|
||||||
"showfps",
|
"showfps",
|
||||||
"targetfps"
|
"targetfps",
|
||||||
|
"vsync"
|
||||||
],
|
],
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"resolution" : {
|
"resolution" : {
|
||||||
@@ -207,6 +208,10 @@
|
|||||||
"targetfps" : {
|
"targetfps" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"default" : 60
|
"default" : 60
|
||||||
|
},
|
||||||
|
"vsync" : {
|
||||||
|
"type" : "boolean",
|
||||||
|
"default" : true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@@ -83,6 +83,7 @@ void CSettingsView::loadSettings()
|
|||||||
|
|
||||||
ui->spinBoxInterfaceScaling->setValue(settings["video"]["resolution"]["scaling"].Float());
|
ui->spinBoxInterfaceScaling->setValue(settings["video"]["resolution"]["scaling"].Float());
|
||||||
ui->spinBoxFramerateLimit->setValue(settings["video"]["targetfps"].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->spinBoxReservedArea->setValue(std::round(settings["video"]["reservedWidth"].Float() * 100));
|
||||||
|
|
||||||
ui->comboBoxFriendlyAI->setCurrentText(QString::fromStdString(settings["server"]["friendlyAI"].String()));
|
ui->comboBoxFriendlyAI->setCurrentText(QString::fromStdString(settings["server"]["friendlyAI"].String()));
|
||||||
@@ -494,6 +495,12 @@ void CSettingsView::on_spinBoxFramerateLimit_valueChanged(int arg1)
|
|||||||
node->Float() = 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)
|
void CSettingsView::on_comboBoxEnemyPlayerAI_currentTextChanged(const QString &arg1)
|
||||||
{
|
{
|
||||||
Settings node = settings.write["server"]["playerAI"];
|
Settings node = settings.write["server"]["playerAI"];
|
||||||
|
@@ -62,6 +62,8 @@ private slots:
|
|||||||
|
|
||||||
void on_spinBoxFramerateLimit_valueChanged(int arg1);
|
void on_spinBoxFramerateLimit_valueChanged(int arg1);
|
||||||
|
|
||||||
|
void on_checkBoxVSync_stateChanged(int arg1);
|
||||||
|
|
||||||
void on_comboBoxEnemyPlayerAI_currentTextChanged(const QString &arg1);
|
void on_comboBoxEnemyPlayerAI_currentTextChanged(const QString &arg1);
|
||||||
|
|
||||||
void on_comboBoxAlliedPlayerAI_currentTextChanged(const QString &arg1);
|
void on_comboBoxAlliedPlayerAI_currentTextChanged(const QString &arg1);
|
||||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user