mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-19 09:39:15 +00:00
UI: Fix YouTubeAppDock crash
Apparently the YouTube app dock thing didn't take into consideration the fact that the user may have the browser source available, but may not have browser docks available (via the `cef` global). This is because certain system configurations do not support browser widgets, such as Wayland on Linux. (Lain note: There's multiple things I'm unhappy about here. I'm mostly going to blame myself for multiple reasons.)
This commit is contained in:
parent
9d2715fe72
commit
0c6fa0a2ba
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -350,6 +350,8 @@ private:
|
|||
|
||||
bool AskIfCanCloseSettings();
|
||||
|
||||
void UpdateYouTubeAppDockSettings();
|
||||
|
||||
QIcon generalIcon;
|
||||
QIcon streamIcon;
|
||||
QIcon outputIcon;
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue