UI: Fix aspect ratio triggering settings change

This commit is contained in:
Clayton Groeneveld
2020-01-22 12:25:05 -06:00
parent 44dc06ede4
commit 46db0c0823

View File

@@ -247,6 +247,25 @@ static void PopulateAACBitrates(initializer_list<QComboBox *> boxes)
}
}
static int gcd(int a, int b)
{
return b == 0 ? a : gcd(b, a % b);
}
static std::tuple<int, int> aspect_ratio(int cx, int cy)
{
int common = gcd(cx, cy);
int newCX = cx / common;
int newCY = cy / common;
if (newCX == 8 && newCY == 5) {
newCX = 16;
newCY = 10;
}
return std::make_tuple(newCX, newCY);
}
void RestrictResetBitrates(initializer_list<QComboBox *> boxes, int maxbitrate);
void OBSBasicSettings::HookWidget(QWidget *widget, const char *signal,
@@ -760,8 +779,6 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
UpdateAutomaticReplayBufferCheckboxes();
on_baseResolution_editTextChanged(ui->baseResolution->currentText());
App()->DisableHotkeys();
channelIndex = ui->channelSetup->currentIndex();
@@ -1406,6 +1423,13 @@ void OBSBasicSettings::LoadResolutionLists()
ResetDownscales(cx, cy);
ui->outputResolution->lineEdit()->setText(outputResString.c_str());
std::tuple<int, int> aspect = aspect_ratio(cx, cy);
ui->baseAspect->setText(
QTStr("AspectRatio")
.arg(QString::number(std::get<0>(aspect)),
QString::number(std::get<1>(aspect))));
}
static inline void LoadFPSCommon(OBSBasic *main, Ui::OBSBasicSettings *ui)
@@ -3753,25 +3777,6 @@ static bool ValidResolutions(Ui::OBSBasicSettings *ui)
return true;
}
static int gcd(int a, int b)
{
return b == 0 ? a : gcd(b, a % b);
}
static std::tuple<int, int> aspect_ratio(int cx, int cy)
{
int common = gcd(cx, cy);
int newCX = cx / common;
int newCY = cy / common;
if (newCX == 8 && newCY == 5) {
newCX = 16;
newCY = 10;
}
return std::make_tuple(newCX, newCY);
}
void OBSBasicSettings::RecalcOutputResPixels(const char *resText)
{
uint32_t newCX;