From 90f1ebf4aaf37fa9f772c99201c2194bc16ea20a Mon Sep 17 00:00:00 2001 From: gxalpha Date: Tue, 12 Oct 2021 01:22:04 +0200 Subject: [PATCH] UI: Disable downscale filter setting for same resolutions Disables the downscale filter dropdown menu when base and output resolution are the same. --- UI/data/locale/en-US.ini | 1 + UI/window-basic-settings.cpp | 60 ++++++++++++++++++++++-------------- 2 files changed, 38 insertions(+), 23 deletions(-) diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index 8a2413c65..b4b8298a7 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -967,6 +967,7 @@ Basic.Settings.Video.Adapter="Video Adapter" Basic.Settings.Video.BaseResolution="Base (Canvas) Resolution" Basic.Settings.Video.ScaledResolution="Output (Scaled) Resolution" Basic.Settings.Video.DownscaleFilter="Downscale Filter" +Basic.Settings.Video.DownscaleFilter.Unavailable="[Resolutions match, no downscaling required]" Basic.Settings.Video.DisableAeroWindows="Disable Aero (Windows only)" Basic.Settings.Video.FPS="FPS" Basic.Settings.Video.FPSCommon="Common FPS Values" diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index 66be37901..74bedad16 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -1555,30 +1555,42 @@ void OBSBasicSettings::ResetDownscales(uint32_t cx, uint32_t cy, void OBSBasicSettings::LoadDownscaleFilters() { - ui->downscaleFilter->addItem( - QTStr("Basic.Settings.Video.DownscaleFilter.Bilinear"), - QT_UTF8("bilinear")); - ui->downscaleFilter->addItem( - QTStr("Basic.Settings.Video.DownscaleFilter.Area"), - QT_UTF8("area")); - ui->downscaleFilter->addItem( - QTStr("Basic.Settings.Video.DownscaleFilter.Bicubic"), - QT_UTF8("bicubic")); - ui->downscaleFilter->addItem( - QTStr("Basic.Settings.Video.DownscaleFilter.Lanczos"), - QT_UTF8("lanczos")); + QString downscaleFilter = ui->downscaleFilter->currentData().toString(); + if (downscaleFilter.isEmpty()) + downscaleFilter = + config_get_string(main->Config(), "Video", "ScaleType"); - const char *scaleType = - config_get_string(main->Config(), "Video", "ScaleType"); + ui->downscaleFilter->clear(); + if (ui->baseResolution->currentText() == + ui->outputResolution->currentText()) { + ui->downscaleFilter->setEnabled(false); + ui->downscaleFilter->addItem( + QTStr("Basic.Settings.Video.DownscaleFilter.Unavailable"), + downscaleFilter); + } else { + ui->downscaleFilter->setEnabled(true); + ui->downscaleFilter->addItem( + QTStr("Basic.Settings.Video.DownscaleFilter.Bilinear"), + QT_UTF8("bilinear")); + ui->downscaleFilter->addItem( + QTStr("Basic.Settings.Video.DownscaleFilter.Area"), + QT_UTF8("area")); + ui->downscaleFilter->addItem( + QTStr("Basic.Settings.Video.DownscaleFilter.Bicubic"), + QT_UTF8("bicubic")); + ui->downscaleFilter->addItem( + QTStr("Basic.Settings.Video.DownscaleFilter.Lanczos"), + QT_UTF8("lanczos")); - if (astrcmpi(scaleType, "bilinear") == 0) - ui->downscaleFilter->setCurrentIndex(0); - else if (astrcmpi(scaleType, "lanczos") == 0) - ui->downscaleFilter->setCurrentIndex(3); - else if (astrcmpi(scaleType, "area") == 0) - ui->downscaleFilter->setCurrentIndex(1); - else - ui->downscaleFilter->setCurrentIndex(2); + if (downscaleFilter == "bilinear") + ui->downscaleFilter->setCurrentIndex(0); + else if (downscaleFilter == "lanczos") + ui->downscaleFilter->setCurrentIndex(3); + else if (downscaleFilter == "area") + ui->downscaleFilter->setCurrentIndex(1); + else + ui->downscaleFilter->setCurrentIndex(2); + } } void OBSBasicSettings::LoadResolutionLists() @@ -4085,8 +4097,10 @@ void OBSBasicSettings::on_filenameFormatting_textEdited(const QString &text) void OBSBasicSettings::on_outputResolution_editTextChanged(const QString &text) { - if (!loading) + if (!loading) { RecalcOutputResPixels(QT_TO_UTF8(text)); + LoadDownscaleFilters(); + } } void OBSBasicSettings::on_baseResolution_editTextChanged(const QString &text)