mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-19 17:49:14 +00:00
UI: Add option for only one fullscreen projector per screen
This option is added for users who want to have only one projector on a screen and want to save gpu resources.
This commit is contained in:
parent
54a808c34a
commit
6a0348cf64
|
@ -784,6 +784,7 @@ Basic.Settings.General.SysTray="System Tray"
|
|||
Basic.Settings.General.SysTrayWhenStarted="Minimize to system tray when started"
|
||||
Basic.Settings.General.SystemTrayHideMinimize="Always minimize to system tray instead of task bar"
|
||||
Basic.Settings.General.SaveProjectors="Save projectors on exit"
|
||||
Basic.Settings.General.CloseExistingProjectors="Limit one fullscreen projector per screen"
|
||||
Basic.Settings.General.Preview="Preview"
|
||||
Basic.Settings.General.OverflowHidden="Hide overflow"
|
||||
Basic.Settings.General.OverflowAlwaysVisible="Overflow always visible"
|
||||
|
|
|
@ -476,6 +476,13 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QCheckBox" name="closeProjectors">
|
||||
<property name="text">
|
||||
<string>Basic.Settings.General.CloseExistingProjectors</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
|
|
|
@ -8431,6 +8431,17 @@ OBSProjector *OBSBasic::OpenProjector(obs_source_t *source, int monitor,
|
|||
if (monitor > 9 || monitor > QGuiApplication::screens().size() - 1)
|
||||
return nullptr;
|
||||
|
||||
bool closeProjectors = config_get_bool(GetGlobalConfig(), "BasicWindow",
|
||||
"CloseExistingProjectors");
|
||||
|
||||
if (closeProjectors && monitor > -1) {
|
||||
for (size_t i = projectors.size(); i > 0; i--) {
|
||||
size_t idx = i - 1;
|
||||
if (projectors[idx]->GetMonitor() == monitor)
|
||||
DeleteProjector(projectors[idx]);
|
||||
}
|
||||
}
|
||||
|
||||
OBSProjector *projector =
|
||||
new OBSProjector(nullptr, source, monitor, type);
|
||||
|
||||
|
|
|
@ -396,6 +396,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
|||
HookWidget(ui->systemTrayWhenStarted,CHECK_CHANGED, GENERAL_CHANGED);
|
||||
HookWidget(ui->systemTrayAlways, CHECK_CHANGED, GENERAL_CHANGED);
|
||||
HookWidget(ui->saveProjectors, CHECK_CHANGED, GENERAL_CHANGED);
|
||||
HookWidget(ui->closeProjectors, CHECK_CHANGED, GENERAL_CHANGED);
|
||||
HookWidget(ui->snappingEnabled, CHECK_CHANGED, GENERAL_CHANGED);
|
||||
HookWidget(ui->screenSnapping, CHECK_CHANGED, GENERAL_CHANGED);
|
||||
HookWidget(ui->centerSnapping, CHECK_CHANGED, GENERAL_CHANGED);
|
||||
|
@ -1259,6 +1260,10 @@ void OBSBasicSettings::LoadGeneralSettings()
|
|||
"SaveProjectors");
|
||||
ui->saveProjectors->setChecked(saveProjectors);
|
||||
|
||||
bool closeProjectors = config_get_bool(GetGlobalConfig(), "BasicWindow",
|
||||
"CloseExistingProjectors");
|
||||
ui->closeProjectors->setChecked(closeProjectors);
|
||||
|
||||
bool snappingEnabled = config_get_bool(GetGlobalConfig(), "BasicWindow",
|
||||
"SnappingEnabled");
|
||||
ui->snappingEnabled->setChecked(snappingEnabled);
|
||||
|
@ -3172,6 +3177,11 @@ void OBSBasicSettings::SaveGeneralSettings()
|
|||
"SaveProjectors",
|
||||
ui->saveProjectors->isChecked());
|
||||
|
||||
if (WidgetChanged(ui->closeProjectors))
|
||||
config_set_bool(GetGlobalConfig(), "BasicWindow",
|
||||
"CloseExistingProjectors",
|
||||
ui->closeProjectors->isChecked());
|
||||
|
||||
if (WidgetChanged(ui->studioPortraitLayout)) {
|
||||
config_set_bool(GetGlobalConfig(), "BasicWindow",
|
||||
"StudioPortraitLayout",
|
||||
|
|
Loading…
Reference in a new issue