UI: Start YouTube check thread after output starts

Fixes #5199
This commit is contained in:
derrod 2021-08-30 20:52:45 +02:00 • committed by Jim
commit 5ea7aa3b7e

View file

@ -6186,7 +6186,7 @@ void OBSBasic::YoutubeStreamCheck(const std::string &key)
json11::Json json;
QString id = key.c_str();
for (;;) {
while (StreamingActive()) {
if (timeout == 14) {
QMetaObject::invokeMethod(this, "ForceStopStreaming",
Qt::QueuedConnection);
@ -6318,20 +6318,7 @@ void OBSBasic::StartStreaming()
ui->broadcastButton->style()->unpolish(ui->broadcastButton);
ui->broadcastButton->style()->polish(ui->broadcastButton);
// well, we need to disable button while stream is not active
#if YOUTUBE_ENABLED
// get a current stream key
obs_service_t *service_obj = GetService();
obs_data_t *settings = obs_service_get_settings(service_obj);
std::string key = obs_data_get_string(settings, "stream_id");
if (!key.empty() && !youtubeStreamCheckThread) {
ui->broadcastButton->setEnabled(false);
youtubeStreamCheckThread = CreateQThread(
[this, key] { YoutubeStreamCheck(key); });
youtubeStreamCheckThread->setObjectName(
"YouTubeStreamCheckThread");
youtubeStreamCheckThread->start();
}
#endif
ui->broadcastButton->setEnabled(false);
} else if (!autoStopBroadcast) {
broadcastActive = true;
ui->broadcastButton->setVisible(true);
@ -6641,6 +6628,20 @@ void OBSBasic::StreamingStart()
sysTrayStream->setEnabled(true);
}
#if YOUTUBE_ENABLED
// get a current stream key
obs_service_t *service_obj = GetService();
obs_data_t *settings = obs_service_get_settings(service_obj);
std::string key = obs_data_get_string(settings, "stream_id");
if (!key.empty() && !youtubeStreamCheckThread) {
youtubeStreamCheckThread =
CreateQThread([this, key] { YoutubeStreamCheck(key); });
youtubeStreamCheckThread->setObjectName(
"YouTubeStreamCheckThread");
youtubeStreamCheckThread->start();
}
#endif
if (api)
api->on_event(OBS_FRONTEND_EVENT_STREAMING_STARTED);