diff --git a/obs/data/locale/en-US.ini b/obs/data/locale/en-US.ini index 777f77ced..34b7f7ebe 100644 --- a/obs/data/locale/en-US.ini +++ b/obs/data/locale/en-US.ini @@ -324,6 +324,7 @@ Basic.Settings.Video.Denominator="Denominator:" Basic.Settings.Video.Renderer="Renderer:" Basic.Settings.Video.InvalidResolution="Invalid resolution value. Must be [width]x[height] (i.e. 1920x1080)" Basic.Settings.Video.CurrentlyActive="Video output is currently active. Please turn off any outputs to change video settings." +Basic.Settings.Video.DisableAero="Disable Aero" # scale filters Basic.Settings.Video.DownscaleFilter.Bilinear="Bilinear (Fastest, but blurry if scaling)" diff --git a/obs/window-basic-main.cpp b/obs/window-basic-main.cpp index 48171036e..2f8fdb718 100644 --- a/obs/window-basic-main.cpp +++ b/obs/window-basic-main.cpp @@ -683,6 +683,15 @@ void OBSBasic::OBSInit() if (!previewEnabled) QMetaObject::invokeMethod(this, "TogglePreview", Qt::QueuedConnection); + +#ifdef _WIN32 + uint32_t winVer = GetWindowsVersion(); + if (winVer > 0 && winVer < 0x602) { + bool disableAero = config_get_bool(basicConfig, "Video", + "DisableAero"); + SetAeroEnabled(!disableAero); + } +#endif } void OBSBasic::InitHotkeys() @@ -888,6 +897,17 @@ OBSBasic::~OBSBasic() config_set_bool(App()->GlobalConfig(), "BasicWindow", "PreviewEnabled", previewEnabled); config_save(App()->GlobalConfig()); + +#ifdef _WIN32 + uint32_t winVer = GetWindowsVersion(); + if (winVer > 0 && winVer < 0x602) { + bool disableAero = config_get_bool(basicConfig, "Video", + "DisableAero"); + if (disableAero) { + SetAeroEnabled(true); + } + } +#endif } void OBSBasic::SaveProject() diff --git a/obs/window-basic-settings.cpp b/obs/window-basic-settings.cpp index 8b49b84bb..9440cdbbe 100644 --- a/obs/window-basic-settings.cpp +++ b/obs/window-basic-settings.cpp @@ -187,6 +187,13 @@ static CodecDesc GetDefaultCodecDesc(const ff_format_desc *formatDesc, id); } +#ifdef _WIN32 +void OBSBasicSettings::ToggleDisableAero(bool checked) +{ + SetAeroEnabled(!checked); +} +#endif + void OBSBasicSettings::HookWidget(QWidget *widget, const char *signal, const char *slot) { @@ -308,6 +315,22 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) HookWidget(ui->colorSpace, COMBO_CHANGED, ADV_CHANGED); HookWidget(ui->colorRange, COMBO_CHANGED, ADV_CHANGED); +#ifdef _WIN32 + uint32_t winVer = GetWindowsVersion(); + if (winVer > 0 && winVer < 0x602) { + toggleAero = new QCheckBox( + QTStr("Basic.Settings.Video.DisableAero"), + this); + QFormLayout *videoLayout = + reinterpret_cast(ui->videoPage->layout()); + videoLayout->addRow(nullptr, toggleAero); + + HookWidget(toggleAero, CHECK_CHANGED, VIDEO_CHANGED); + connect(toggleAero, &QAbstractButton::toggled, + this, &OBSBasicSettings::ToggleDisableAero); + } +#endif + //Apply button disabled until change. EnableApplyButton(false); @@ -871,6 +894,16 @@ void OBSBasicSettings::LoadVideoSettings() LoadFPSData(); LoadDownscaleFilters(); +#ifdef _WIN32 + if (toggleAero) { + bool disableAero = config_get_bool(main->Config(), "Video", + "DisableAero"); + toggleAero->setChecked(disableAero); + + aeroWasDisabled = disableAero; + } +#endif + loading = false; } @@ -1827,6 +1860,13 @@ void OBSBasicSettings::SaveVideoSettings() SaveSpinBox(ui->fpsNumerator, "Video", "FPSNum"); SaveSpinBox(ui->fpsDenominator, "Video", "FPSDen"); SaveComboData(ui->downscaleFilter, "Video", "ScaleType"); + +#ifdef _WIN32 + if (toggleAero) { + SaveCheckBox(toggleAero, "Video", "DisableAero"); + aeroWasDisabled = toggleAero->isChecked(); + } +#endif } void OBSBasicSettings::SaveAdvancedSettings() @@ -2098,12 +2138,17 @@ bool OBSBasicSettings::QueryChanges() QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel); - if (button == QMessageBox::Cancel) + if (button == QMessageBox::Cancel) { return false; - else if (button == QMessageBox::Yes) + } else if (button == QMessageBox::Yes) { SaveSettings(); - else + } else { LoadSettings(true); +#ifdef _WIN32 + if (toggleAero) + SetAeroEnabled(!aeroWasDisabled); +#endif + } ClearChanged(); return true; diff --git a/obs/window-basic-settings.hpp b/obs/window-basic-settings.hpp index 85981b400..2c7022bbb 100644 --- a/obs/window-basic-settings.hpp +++ b/obs/window-basic-settings.hpp @@ -30,6 +30,7 @@ class OBSBasic; class QAbstractButton; class QComboBox; +class QCheckBox; class OBSPropertiesView; class OBSHotkeyWidget; @@ -152,6 +153,12 @@ private: EnableApplyButton(false); } +#ifdef _WIN32 + bool aeroWasDisabled = false; + QCheckBox *toggleAero = nullptr; + void ToggleDisableAero(bool checked); +#endif + void HookWidget(QWidget *widget, const char *signal, const char *slot); bool QueryChanges();