From 2dfb211956d4684c6fccab4f31f8ba6aed63bfae Mon Sep 17 00:00:00 2001 From: cg2121 Date: Thu, 16 Jun 2016 12:59:36 -0500 Subject: [PATCH] UI: Add option to automatically record while streaming Allows the ability for users to make it so recording automatically starts when they start streaming. Also adds the option to allow the recording to continue when stream is stopped. Closes jp9000/obs-studio#554 --- obs/data/locale/en-US.ini | 2 + obs/forms/OBSBasicSettings.ui | 221 +++++++++++++++++++--------------- obs/obs-app.cpp | 4 + obs/window-basic-main.cpp | 26 +++- obs/window-basic-settings.cpp | 20 ++- 5 files changed, 175 insertions(+), 98 deletions(-) diff --git a/obs/data/locale/en-US.ini b/obs/data/locale/en-US.ini index 338a6c0d6..76d0abf73 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 8e474bd2e..cfd5e14e5 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 0422027fd..cd89f8fa5 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 66b82dad5..96dbb993d 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 6c46f7e32..24b6c731e 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() -- GitLab