diff --git a/UI/window-basic-settings-stream.cpp b/UI/window-basic-settings-stream.cpp index 27c44990c..e28c5b189 100644 --- a/UI/window-basic-settings-stream.cpp +++ b/UI/window-basic-settings-stream.cpp @@ -180,6 +180,28 @@ void OBSBasicSettings::LoadStream1Settings() Qt::QueuedConnection); } +#define SRT_PROTOCOL "srt" +#define RIST_PROTOCOL "rist" + +bool OBSBasicSettings::AllowsMultiTrack(const char *protocol) +{ + return astrcmpi_n(protocol, SRT_PROTOCOL, strlen(SRT_PROTOCOL)) == 0 || + astrcmpi_n(protocol, RIST_PROTOCOL, strlen(RIST_PROTOCOL)) == 0; +} + +void OBSBasicSettings::SwapMultiTrack(const char *protocol) +{ + if (protocol) { + if (AllowsMultiTrack(protocol)) { + ui->advStreamTrackWidget->setCurrentWidget( + ui->streamMultiTracks); + } else { + ui->advStreamTrackWidget->setCurrentWidget( + ui->streamSingleTracks); + } + } +} + void OBSBasicSettings::SaveStream1Settings() { bool customServer = IsCustomService(); @@ -264,6 +286,7 @@ void OBSBasicSettings::SaveStream1Settings() } SaveCheckBox(ui->ignoreRecommended, "Stream1", "IgnoreRecommended"); + SwapMultiTrack(QT_TO_UTF8(protocol)); } void OBSBasicSettings::UpdateMoreInfoLink() @@ -509,6 +532,13 @@ void OBSBasicSettings::on_service_currentIndexChanged(int idx) if (idx == 0) lastCustomServer = ui->customServer->text(); } + + if (!IsCustomService()) { + ui->advStreamTrackWidget->setCurrentWidget( + ui->streamSingleTracks); + } else { + SwapMultiTrack(QT_TO_UTF8(protocol)); + } } void OBSBasicSettings::on_customServer_textChanged(const QString &) @@ -520,6 +550,8 @@ void OBSBasicSettings::on_customServer_textChanged(const QString &) if (ServiceSupportsCodecCheck()) lastCustomServer = ui->customServer->text(); + + SwapMultiTrack(QT_TO_UTF8(protocol)); } void OBSBasicSettings::ServiceChanged(bool resetFields) diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index ec0a35d13..5aa1cf658 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -2057,16 +2057,6 @@ static inline QString makeFormatToolTip() return html; } -#define RTMP_PROTOCOL "rtmp" -#define SRT_PROTOCOL "srt" -#define RIST_PROTOCOL "rist" - -inline bool allowsMultiTrack(const char *protocol) -{ - return astrcmpi_n(protocol, SRT_PROTOCOL, strlen(SRT_PROTOCOL)) == 0 || - astrcmpi_n(protocol, RIST_PROTOCOL, strlen(RIST_PROTOCOL)) == 0; -} - void OBSBasicSettings::LoadAdvOutputStreamingSettings() { const char *rescaleRes = @@ -2118,21 +2108,10 @@ void OBSBasicSettings::LoadAdvOutputStreamingSettings() ui->advOutMultiTrack5->setChecked(audioMixes & (1 << 4)); ui->advOutMultiTrack6->setChecked(audioMixes & (1 << 5)); - bool is_multitrack_output = false; obs_service_t *service_obj = main->GetService(); const char *protocol = nullptr; protocol = obs_service_get_protocol(service_obj); - if (protocol) { - is_multitrack_output = allowsMultiTrack(protocol); - } - - if (is_multitrack_output) { - ui->advStreamTrackWidget->setCurrentWidget( - ui->streamMultiTracks); - } else { - ui->advStreamTrackWidget->setCurrentWidget( - ui->streamSingleTracks); - } + SwapMultiTrack(protocol); } OBSPropertiesView * diff --git a/UI/window-basic-settings.hpp b/UI/window-basic-settings.hpp index 8b7042283..01bffeb49 100644 --- a/UI/window-basic-settings.hpp +++ b/UI/window-basic-settings.hpp @@ -383,6 +383,9 @@ private: bool ServiceAndACodecCompatible(); bool ServiceSupportsCodecCheck(); + inline bool AllowsMultiTrack(const char *protocol); + void SwapMultiTrack(const char *protocol); + private slots: void on_theme_activated(int idx);