diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 4a3d0e6b3..42d51b5da 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -8493,6 +8493,9 @@ YouTubeAppDock *OBSBasic::GetYouTubeAppDock() void OBSBasic::NewYouTubeAppDock() { + if (!cef) + return; + if (youtubeAppDock) delete youtubeAppDock; youtubeAppDock = new YouTubeAppDock(); @@ -8500,6 +8503,9 @@ void OBSBasic::NewYouTubeAppDock() void OBSBasic::DeleteYouTubeAppDock() { + if (!cef) + return; + if (youtubeAppDock) delete youtubeAppDock; youtubeAppDock = nullptr; diff --git a/UI/window-basic-settings-stream.cpp b/UI/window-basic-settings-stream.cpp index 918d23dca..e969ea61d 100644 --- a/UI/window-basic-settings-stream.cpp +++ b/UI/window-basic-settings-stream.cpp @@ -771,7 +771,7 @@ void OBSBasicSettings::on_connectAccount_clicked() if (!!auth) { OnAuthConnected(); #ifdef YOUTUBE_ENABLED - if (IsYouTubeService(service)) { + if (cef && IsYouTubeService(service)) { if (!main->GetYouTubeAppDock()) { main->NewYouTubeAppDock(); } @@ -822,7 +822,7 @@ void OBSBasicSettings::on_disconnectAccount_clicked() ui->connectedAccountText->setVisible(false); #ifdef YOUTUBE_ENABLED - if (IsYouTubeService(service)) { + if (cef && IsYouTubeService(service)) { if (!main->GetYouTubeAppDock()) { main->NewYouTubeAppDock(); } diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index 77378a7c1..8bdda23aa 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -4245,18 +4245,9 @@ void OBSBasicSettings::on_listWidget_itemSelectionChanged() pageIndex = row; } -void OBSBasicSettings::on_buttonBox_clicked(QAbstractButton *button) +void OBSBasicSettings::UpdateYouTubeAppDockSettings() { - QDialogButtonBox::ButtonRole val = ui->buttonBox->buttonRole(button); - - if (val == QDialogButtonBox::ApplyRole || - val == QDialogButtonBox::AcceptRole) { - if (!QueryAllowedToClose()) - return; - - SaveSettings(); - -#ifdef YOUTUBE_ENABLED + if (cef) { std::string service = ui->service->currentText().toStdString(); if (IsYouTubeService(service)) { if (!main->GetYouTubeAppDock()) { @@ -4270,6 +4261,22 @@ void OBSBasicSettings::on_buttonBox_clicked(QAbstractButton *button) } main->DeleteYouTubeAppDock(); } + } +} + +void OBSBasicSettings::on_buttonBox_clicked(QAbstractButton *button) +{ + QDialogButtonBox::ButtonRole val = ui->buttonBox->buttonRole(button); + + if (val == QDialogButtonBox::ApplyRole || + val == QDialogButtonBox::AcceptRole) { + if (!QueryAllowedToClose()) + return; + + SaveSettings(); + +#ifdef YOUTUBE_ENABLED + UpdateYouTubeAppDockSettings(); #endif ClearChanged(); } diff --git a/UI/window-basic-settings.hpp b/UI/window-basic-settings.hpp index 394b36f93..9f3f85a3b 100644 --- a/UI/window-basic-settings.hpp +++ b/UI/window-basic-settings.hpp @@ -350,6 +350,8 @@ private: bool AskIfCanCloseSettings(); + void UpdateYouTubeAppDockSettings(); + QIcon generalIcon; QIcon streamIcon; QIcon outputIcon; diff --git a/UI/window-dock-youtube-app.cpp b/UI/window-dock-youtube-app.cpp index 24e0c56f9..643bda923 100644 --- a/UI/window-dock-youtube-app.cpp +++ b/UI/window-dock-youtube-app.cpp @@ -50,6 +50,9 @@ YouTubeAppDock::~YouTubeAppDock() bool YouTubeAppDock::IsYTServiceSelected() { + if (!cef) + return false; + obs_service_t *service_obj = OBSBasic::Get()->GetService(); OBSDataAutoRelease settings = obs_service_get_settings(service_obj); const char *service = obs_data_get_string(settings, "service"); @@ -430,6 +433,9 @@ YoutubeApiWrappers *YouTubeAppDock::GetYTApi() void YouTubeAppDock::CleanupYouTubeUrls() { + if (!cef) + return; + static constexpr const char *YOUTUBE_VIDEO_URL = "://studio.youtube.com/video/"; // remove legacy YouTube Browser Docks (once)