diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 687896560..d7535e5b0 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -340,6 +340,20 @@ OBSBasic::OBSBasic(QWidget *parent) connect(ui->modeSwitch, &QAbstractButton::clicked, this, &OBSBasic::TogglePreviewProgramMode); + /* Set up streaming connections */ + connect( + this, &OBSBasic::StreamingStarting, this, + [this] { this->streamingStarting = true; }, + Qt::DirectConnection); + connect( + this, &OBSBasic::StreamingStarted, this, + [this] { this->streamingStarting = false; }, + Qt::DirectConnection); + connect( + this, &OBSBasic::StreamingStopped, this, + [this] { this->streamingStarting = false; }, + Qt::DirectConnection); + /* Set up recording connections */ connect( this, &OBSBasic::RecordingStarted, this, @@ -2803,10 +2817,10 @@ void OBSBasic::CreateHotkeys() "OBSBasic.StartStreaming", Str("Basic.Main.StartStreaming"), "OBSBasic.StopStreaming", Str("Basic.Main.StopStreaming"), MAKE_CALLBACK(!basic.outputHandler->StreamingActive() && - basic.ui->streamButton->isEnabled(), + !basic.streamingStarting, basic.StartStreaming, "Starting stream"), MAKE_CALLBACK(basic.outputHandler->StreamingActive() && - basic.ui->streamButton->isEnabled(), + !basic.streamingStarting, basic.StopStreaming, "Stopping stream"), this, this); LoadHotkeyPair(streamingHotkeys, "OBSBasic.StartStreaming", @@ -6929,6 +6943,8 @@ void OBSBasic::DisplayStreamStartError() QString message = !outputHandler->lastError.empty() ? QTStr(outputHandler->lastError.c_str()) : QTStr("Output.StartFailedGeneric"); + + emit StreamingStopped(); ui->streamButton->setText(QTStr("Basic.Main.StartStreaming")); ui->streamButton->setEnabled(true); ui->streamButton->setChecked(false); @@ -7089,6 +7105,7 @@ void OBSBasic::StartStreaming() sysTrayStream->setText(text); }; + emit StreamingStarting(); ui->streamButton->setEnabled(false); ui->streamButton->setChecked(false); ui->broadcastButton->setChecked(false); @@ -7481,6 +7498,7 @@ void OBSBasic::ForceStopStreaming() void OBSBasic::StreamDelayStarting(int sec) { + emit StreamingStarted(); ui->streamButton->setText(QTStr("Basic.Main.StopStreaming")); ui->streamButton->setEnabled(true); ui->streamButton->setChecked(true); @@ -7507,6 +7525,7 @@ void OBSBasic::StreamDelayStarting(int sec) void OBSBasic::StreamDelayStopping(int sec) { + emit StreamingStopped(); ui->streamButton->setText(QTStr("Basic.Main.StartStreaming")); ui->streamButton->setEnabled(true); ui->streamButton->setChecked(false); @@ -7534,6 +7553,7 @@ void OBSBasic::StreamDelayStopping(int sec) void OBSBasic::StreamingStart() { + emit StreamingStarted(); OBSOutputAutoRelease output = obs_frontend_get_streaming_output(); ui->streamButton->setText(QTStr("Basic.Main.StopStreaming")); @@ -7638,6 +7658,7 @@ void OBSBasic::StreamingStop(int code, QString last_error) ui->statusbar->StreamStopped(); + emit StreamingStopped(); ui->streamButton->setText(QTStr("Basic.Main.StartStreaming")); ui->streamButton->setEnabled(true); ui->streamButton->setChecked(false); diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index 0e3b514d6..a478c49ff 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -677,6 +677,8 @@ private: void UpdatePreviewOverflowSettings(); + bool streamingStarting = false; + bool recordingStarted = false; bool isRecordingPausable = false; bool recordingPaused = false; @@ -1256,6 +1258,11 @@ public slots: void UpdateContextBarVisibility(); signals: + /* Streaming signals */ + void StreamingStarting(); + void StreamingStarted(); + void StreamingStopped(); + /* Recording signals */ void RecordingStarted(); void RecordingPaused();