diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index b46f1e686..0a2056640 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -574,6 +574,7 @@ Basic.Settings.General.StudioPortraitLayout="Enable portrait/vertical layout" Basic.Settings.General.Multiview="Multiview" Basic.Settings.General.Multiview.MouseSwitch="Click to switch between scenes" Basic.Settings.General.Multiview.DrawSourceNames="Show scene names" +Basic.Settings.General.Multiview.DrawSafeAreas="Draw safe areas (EBU R 95)" Basic.Settings.General.MultiviewLayout="Multiview Layout" Basic.Settings.General.MultiviewLayout.Horizontal.Top="Horizontal, Top (8 Scenes)" Basic.Settings.General.MultiviewLayout.Horizontal.Bottom="Horizontal, Bottom (8 Scenes)" diff --git a/UI/forms/OBSBasicSettings.ui b/UI/forms/OBSBasicSettings.ui index 6fbfe2a5f..8144f7ec4 100644 --- a/UI/forms/OBSBasicSettings.ui +++ b/UI/forms/OBSBasicSettings.ui @@ -637,9 +637,19 @@ + + + Basic.Settings.General.Multiview.DrawSafeAreas + + + true + + + + - + Basic.Settings.General.MultiviewLayout diff --git a/UI/obs-app.cpp b/UI/obs-app.cpp index 22e6088b0..2db37b583 100644 --- a/UI/obs-app.cpp +++ b/UI/obs-app.cpp @@ -427,6 +427,9 @@ bool OBSApp::InitGlobalConfigDefaults() config_set_default_bool(globalConfig, "BasicWindow", "MultiviewDrawNames", true); + config_set_default_bool(globalConfig, "BasicWindow", + "MultiviewDrawAreas", true); + #ifdef _WIN32 config_set_default_bool(globalConfig, "Audio", "DisableAudioDucking", true); diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index 639df4ae9..b433e47b1 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -320,6 +320,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) HookWidget(ui->studioPortraitLayout, CHECK_CHANGED, GENERAL_CHANGED); HookWidget(ui->multiviewMouseSwitch, CHECK_CHANGED, GENERAL_CHANGED); HookWidget(ui->multiviewDrawNames, CHECK_CHANGED, GENERAL_CHANGED); + HookWidget(ui->multiviewDrawAreas, CHECK_CHANGED, GENERAL_CHANGED); HookWidget(ui->multiviewLayout, COMBO_CHANGED, GENERAL_CHANGED); HookWidget(ui->outputMode, COMBO_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->streamType, COMBO_CHANGED, STREAM1_CHANGED); @@ -1110,6 +1111,10 @@ void OBSBasicSettings::LoadGeneralSettings() "BasicWindow", "MultiviewDrawNames"); ui->multiviewDrawNames->setChecked(multiviewDrawNames); + bool multiviewDrawAreas = config_get_bool(GetGlobalConfig(), + "BasicWindow", "MultiviewDrawAreas"); + ui->multiviewDrawAreas->setChecked(multiviewDrawAreas); + ui->multiviewLayout->addItem(QTStr( "Basic.Settings.General.MultiviewLayout.Horizontal.Top"), static_cast(MultiviewLayout::HORIZONTAL_TOP_8_SCENES)); @@ -2724,6 +2729,11 @@ void OBSBasicSettings::SaveGeneralSettings() "MultiviewDrawNames", ui->multiviewDrawNames->isChecked()); + if (WidgetChanged(ui->multiviewDrawAreas)) + config_set_bool(GetGlobalConfig(), "BasicWindow", + "MultiviewDrawAreas", + ui->multiviewDrawAreas->isChecked()); + if (WidgetChanged(ui->multiviewLayout)) { config_set_int(GetGlobalConfig(), "BasicWindow", "MultiviewLayout", diff --git a/UI/window-projector.cpp b/UI/window-projector.cpp index f5febb479..2fa6dd606 100644 --- a/UI/window-projector.cpp +++ b/UI/window-projector.cpp @@ -550,12 +550,18 @@ void OBSProjector::OBSRenderMultiview(void *data, uint32_t cx, uint32_t cy) obs_source_video_render(previewSrc); else obs_render_main_texture(); - renderVB(window->actionSafeMargin, targetCX, targetCY, outerColor); - renderVB(window->graphicsSafeMargin, targetCX, targetCY, outerColor); - renderVB(window->fourByThreeSafeMargin, targetCX, targetCY, outerColor); - renderVB(window->leftLine, targetCX, targetCY, outerColor); - renderVB(window->topLine, targetCX, targetCY, outerColor); - renderVB(window->rightLine, targetCX, targetCY, outerColor); + if (config_get_bool(GetGlobalConfig(), "BasicWindow", + "MultiviewDrawAreas")) { + renderVB(window->actionSafeMargin, targetCX, targetCY, + outerColor); + renderVB(window->graphicsSafeMargin, targetCX, targetCY, + outerColor); + renderVB(window->fourByThreeSafeMargin, targetCX, targetCY, + outerColor); + renderVB(window->leftLine, targetCX, targetCY, outerColor); + renderVB(window->topLine, targetCX, targetCY, outerColor); + renderVB(window->rightLine, targetCX, targetCY, outerColor); + } endRegion(); gs_matrix_pop();