diff --git a/obs/data/locale/en-US.ini b/obs/data/locale/en-US.ini index 338a6c0d67f64d38e31ca1a88269031d812298a2..76d0abf73ad0422c040d3692789758ed8b7be732 100644 --- a/obs/data/locale/en-US.ini +++ b/obs/data/locale/en-US.ini @@ -365,6 +365,8 @@ Basic.Settings.General.ScreenSnapping="Snap Sources to edge of screen" Basic.Settings.General.CenterSnapping="Snap Sources to horizontal and vertical center" Basic.Settings.General.SourceSnapping="Snap Sources to other sources" Basic.Settings.General.SnapDistance="Snap Sensitivity" +Basic.Settings.General.RecordWhenStreaming="Automatically record when streaming" +Basic.Settings.General.KeepRecordingWhenStreamStops="Keep recording when stream stops" # basic mode 'stream' settings Basic.Settings.Stream="Stream" diff --git a/obs/forms/OBSBasicSettings.ui b/obs/forms/OBSBasicSettings.ui index 8e474bd2ee31e99fc4e7d85f37d950d165591bb5..cfd5e14e50e39f2f352dc60ed4c6151cd516f95d 100644 --- a/obs/forms/OBSBasicSettings.ui +++ b/obs/forms/OBSBasicSettings.ui @@ -185,14 +185,21 @@ - + + + + Basic.Settings.General.RecordWhenStreaming + + + + Qt::Horizontal - + true @@ -292,6 +299,16 @@ + + + + false + + + Basic.Settings.General.KeepRecordingWhenStreamStops + + + @@ -2504,8 +2521,8 @@ 0 0 - 80 - 16 + 98 + 28 @@ -3299,8 +3316,8 @@ setCurrentIndex(int) - 159 - 34 + 310 + 29 241 @@ -3315,8 +3332,8 @@ setCurrentIndex(int) - 586 - 38 + 250 + 39 250 @@ -3331,12 +3348,12 @@ setVisible(bool) - 875 - 360 + 250 + 39 - 875 - 427 + 250 + 39 @@ -3347,12 +3364,12 @@ setVisible(bool) - 875 - 360 + 250 + 39 - 466 - 427 + 250 + 39 @@ -3363,12 +3380,12 @@ setVisible(bool) - 875 - 360 + 250 + 39 - 875 - 503 + 250 + 39 @@ -3379,12 +3396,12 @@ setVisible(bool) - 875 - 360 + 250 + 39 - 466 - 503 + 250 + 39 @@ -3395,12 +3412,12 @@ setCurrentIndex(int) - 705 - 144 + 259 + 48 - 396 - 245 + 241 + 30 @@ -3411,12 +3428,12 @@ setEnabled(bool) - 514 - 344 + 259 + 60 - 748 - 344 + 228 + 50 @@ -3427,12 +3444,12 @@ setEnabled(bool) - 864 - 141 + 259 + 39 - 427 - 178 + 228 + 29 @@ -3443,12 +3460,12 @@ setEnabled(bool) - 864 - 141 + 259 + 60 - 864 - 178 + 228 + 50 @@ -3459,12 +3476,12 @@ setCurrentIndex(int) - 864 - 141 + 259 + 60 - 427 - 215 + 259 + 60 @@ -3475,12 +3492,12 @@ setEnabled(bool) - 864 - 141 + 250 + 39 - 864 - 215 + 250 + 39 @@ -3491,12 +3508,12 @@ setEnabled(bool) - 427 - 355 + 250 + 39 - 862 - 355 + 250 + 39 @@ -3507,12 +3524,12 @@ setEnabled(bool) - 424 - 331 + 250 + 39 - 658 - 331 + 250 + 39 @@ -3523,12 +3540,12 @@ setEnabled(bool) - 875 - 254 + 250 + 39 - 466 - 291 + 250 + 39 @@ -3539,12 +3556,12 @@ setEnabled(bool) - 516 - 411 + 250 + 39 250 - 92 + 39 @@ -3555,12 +3572,12 @@ setEnabled(bool) - 533 - 273 + 250 + 39 - 449 - 301 + 250 + 39 @@ -3571,12 +3588,12 @@ setEnabled(bool) - 690 - 454 + 250 + 39 - 690 - 506 + 250 + 39 @@ -3587,12 +3604,12 @@ setEnabled(bool) - 376 - 196 + 720 + 280 - 305 - 224 + 346 + 306 @@ -3603,12 +3620,12 @@ setEnabled(bool) - 417 - 204 + 761 + 280 - 434 - 234 + 778 + 306 @@ -3619,12 +3636,12 @@ setEnabled(bool) - 476 - 202 + 820 + 280 - 466 - 253 + 810 + 329 @@ -3635,12 +3652,12 @@ setEnabled(bool) - 518 - 204 + 862 + 280 - 515 - 277 + 859 + 352 @@ -3651,12 +3668,12 @@ setEnabled(bool) - 557 - 207 + 866 + 280 866 - 306 + 375 @@ -3667,12 +3684,28 @@ setVisible(bool) - 484 - 147 + 250 + 39 + + + 250 + 39 + + + + + recordWhenStreaming + toggled(bool) + keepRecordStreamStops + setEnabled(bool) + + + 404 + 193 - 483 - 170 + 404 + 219 diff --git a/obs/obs-app.cpp b/obs/obs-app.cpp index 0422027fd33c6360f8a08623c416707979fd356d..cd89f8fa52bdaf72c4cfc75683493244b371fda6 100644 --- a/obs/obs-app.cpp +++ b/obs/obs-app.cpp @@ -354,6 +354,10 @@ bool OBSApp::InitGlobalConfigDefaults() "CenterSnapping", false); config_set_default_double(globalConfig, "BasicWindow", "SnapDistance", 10.0); + config_set_default_bool(globalConfig, "BasicWindow", + "RecordWhenStreaming", false); + config_set_default_bool(globalConfig, "BasicWindow", + "KeepRecordingWhenStreamStops", false); #ifdef __APPLE__ config_set_default_bool(globalConfig, "Video", "DisableOSXVSync", true); diff --git a/obs/window-basic-main.cpp b/obs/window-basic-main.cpp index 66b82dad54033a73251ac6f3fdfcac201f90339a..96dbb993dd57b9120e4402cb6b88bd0e1438ed29 100644 --- a/obs/window-basic-main.cpp +++ b/obs/window-basic-main.cpp @@ -3339,6 +3339,11 @@ void OBSBasic::StartStreaming() ui->streamButton->setText(QTStr("Basic.Main.StartStreaming")); ui->streamButton->setEnabled(true); } + + bool recordWhenStreaming = config_get_bool(GetGlobalConfig(), + "BasicWindow", "RecordWhenStreaming"); + if (recordWhenStreaming) + StartRecording(); } void OBSBasic::StopStreaming() @@ -3352,6 +3357,13 @@ void OBSBasic::StopStreaming() ui->profileMenu->setEnabled(true); App()->DecrementSleepInhibition(); } + + bool recordWhenStreaming = config_get_bool(GetGlobalConfig(), + "BasicWindow", "RecordWhenStreaming"); + bool keepRecordingWhenStreamStops = config_get_bool(GetGlobalConfig(), + "BasicWindow", "KeepRecordingWhenStreamStops"); + if (recordWhenStreaming && !keepRecordingWhenStreamStops) + StopRecording(); } void OBSBasic::ForceStopStreaming() @@ -3365,6 +3377,13 @@ void OBSBasic::ForceStopStreaming() ui->profileMenu->setEnabled(true); App()->DecrementSleepInhibition(); } + + bool recordWhenStreaming = config_get_bool(GetGlobalConfig(), + "BasicWindow", "RecordWhenStreaming"); + bool keepRecordingWhenStreamStops = config_get_bool(GetGlobalConfig(), + "BasicWindow", "KeepRecordingWhenStreamStops"); + if (recordWhenStreaming && !keepRecordingWhenStreamStops) + StopRecording(); } void OBSBasic::StreamDelayStarting(int sec) @@ -3481,10 +3500,11 @@ void OBSBasic::StreamingStop(int code) void OBSBasic::StartRecording() { - SaveProject(); + if (outputHandler->RecordingActive()) + return; - if (!outputHandler->RecordingActive()) - outputHandler->StartRecording(); + SaveProject(); + outputHandler->StartRecording(); } void OBSBasic::RecordStopping() diff --git a/obs/window-basic-settings.cpp b/obs/window-basic-settings.cpp index 6c46f7e326f9e23bf2e99dd6da0a2ea2bf5b2d33..24b6c731e65655cd13a297966ef26ecbcd3851b9 100644 --- a/obs/window-basic-settings.cpp +++ b/obs/window-basic-settings.cpp @@ -272,6 +272,8 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) HookWidget(ui->warnBeforeStreamStart,CHECK_CHANGED, GENERAL_CHANGED); HookWidget(ui->warnBeforeStreamStop, CHECK_CHANGED, GENERAL_CHANGED); HookWidget(ui->hideProjectorCursor, CHECK_CHANGED, GENERAL_CHANGED); + HookWidget(ui->recordWhenStreaming, CHECK_CHANGED, GENERAL_CHANGED); + HookWidget(ui->keepRecordStreamStops,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); @@ -795,6 +797,14 @@ void OBSBasicSettings::LoadGeneralSettings() LoadLanguageList(); LoadThemeList(); + bool recordWhenStreaming = config_get_bool(GetGlobalConfig(), + "BasicWindow", "RecordWhenStreaming"); + ui->recordWhenStreaming->setChecked(recordWhenStreaming); + + bool keepRecordStreamStops = config_get_bool(GetGlobalConfig(), + "BasicWindow", "KeepRecordingWhenStreamStops"); + ui->keepRecordStreamStops->setChecked(keepRecordStreamStops); + bool snappingEnabled = config_get_bool(GetGlobalConfig(), "BasicWindow", "SnappingEnabled"); ui->snappingEnabled->setChecked(snappingEnabled); @@ -815,7 +825,6 @@ void OBSBasicSettings::LoadGeneralSettings() "BasicWindow", "SnapDistance"); ui->snapDistance->setValue(snapDistance); - bool warnBeforeStreamStart = config_get_bool(GetGlobalConfig(), "BasicWindow", "WarnBeforeStartingStream"); ui->warnBeforeStreamStart->setChecked(warnBeforeStreamStart); @@ -2166,6 +2175,15 @@ void OBSBasicSettings::SaveGeneralSettings() config_set_bool(GetGlobalConfig(), "BasicWindow", "HideProjectorCursor", ui->hideProjectorCursor->isChecked()); + + if (WidgetChanged(ui->recordWhenStreaming)) + config_set_bool(GetGlobalConfig(), "BasicWindow", + "RecordWhenStreaming", + ui->recordWhenStreaming->isChecked()); + if (WidgetChanged(ui->keepRecordStreamStops)) + config_set_bool(GetGlobalConfig(), "BasicWindow", + "KeepRecordingWhenStreamStops", + ui->keepRecordStreamStops->isChecked()); } void OBSBasicSettings::SaveStream1Settings()