From 4a3804518d51b96a85295b8d220a42ab0a3e6bc9 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Wed, 22 Jun 2016 01:47:08 -0700 Subject: [PATCH] UI: Show "stopping" text on buttons when waiting for stop The new cutoff timing fix means that streaming/recording has to remain active for bit until the stream/recording has reached the expecting stop timestamp. This means that the buttons would continue to say "Stop streaming/recording" while waiting for the output to stop itself at the appropriate timing. So instead of letting it do that and confusing the user, the buttons will now say "stopping" when the button is pressed to indicate to the user that the stream/recording is in the process of stopping. --- obs/data/locale/en-US.ini | 2 ++ obs/window-basic-main-outputs.cpp | 24 ++++++++++++++++++------ obs/window-basic-main-outputs.hpp | 3 ++- obs/window-basic-main.cpp | 10 ++++++++++ obs/window-basic-main.hpp | 2 ++ 5 files changed, 34 insertions(+), 7 deletions(-) diff --git a/obs/data/locale/en-US.ini b/obs/data/locale/en-US.ini index bbf728b72..6ab950d11 100644 --- a/obs/data/locale/en-US.ini +++ b/obs/data/locale/en-US.ini @@ -293,7 +293,9 @@ Basic.Main.Connecting="Connecting..." Basic.Main.StartRecording="Start Recording" Basic.Main.StartStreaming="Start Streaming" Basic.Main.StopRecording="Stop Recording" +Basic.Main.StoppingRecording="Stopping Recording..." Basic.Main.StopStreaming="Stop Streaming" +Basic.Main.StoppingStreaming="Stopping Stream..." Basic.Main.ForceStopStreaming="Stop Streaming (discard delay)" # basic mode file menu diff --git a/obs/window-basic-main-outputs.cpp b/obs/window-basic-main-outputs.cpp index c1f4f08ec..66a84cb55 100644 --- a/obs/window-basic-main-outputs.cpp +++ b/obs/window-basic-main-outputs.cpp @@ -27,10 +27,10 @@ static void OBSStreamStopping(void *data, calldata_t *params) int sec = (int)obs_output_get_active_delay(obj); if (sec == 0) - return; - - QMetaObject::invokeMethod(output->main, - "StreamDelayStopping", Q_ARG(int, sec)); + QMetaObject::invokeMethod(output->main, "StreamStopping"); + else + QMetaObject::invokeMethod(output->main, + "StreamDelayStopping", Q_ARG(int, sec)); } static void OBSStartStreaming(void *data, calldata_t *params) @@ -75,6 +75,14 @@ static void OBSStopRecording(void *data, calldata_t *params) UNUSED_PARAMETER(params); } +static void OBSRecordStopping(void *data, calldata_t *params) +{ + BasicOutputHandler *output = static_cast(data); + QMetaObject::invokeMethod(output->main, "RecordStopping"); + + UNUSED_PARAMETER(params); +} + static void FindBestFilename(string &strPath, bool noSpace) { int num = 2; @@ -281,7 +289,7 @@ SimpleOutput::SimpleOutput(OBSBasic *main_) : BasicOutputHandler(main_) streamDelayStarting.Connect(obs_output_get_signal_handler(streamOutput), "starting", OBSStreamStarting, this); - streamDelayStopping.Connect(obs_output_get_signal_handler(streamOutput), + streamStopping.Connect(obs_output_get_signal_handler(streamOutput), "stopping", OBSStreamStopping, this); startStreaming.Connect(obs_output_get_signal_handler(streamOutput), @@ -304,6 +312,8 @@ SimpleOutput::SimpleOutput(OBSBasic *main_) : BasicOutputHandler(main_) "start", OBSStartRecording, this); stopRecording.Connect(obs_output_get_signal_handler(fileOutput), "stop", OBSStopRecording, this); + recordStopping.Connect(obs_output_get_signal_handler(fileOutput), + "stopping", OBSRecordStopping, this); } int SimpleOutput::GetAudioBitrate() const @@ -762,7 +772,7 @@ AdvancedOutput::AdvancedOutput(OBSBasic *main_) : BasicOutputHandler(main_) streamDelayStarting.Connect(obs_output_get_signal_handler(streamOutput), "starting", OBSStreamStarting, this); - streamDelayStopping.Connect(obs_output_get_signal_handler(streamOutput), + streamStopping.Connect(obs_output_get_signal_handler(streamOutput), "stopping", OBSStreamStopping, this); startStreaming.Connect(obs_output_get_signal_handler(streamOutput), @@ -774,6 +784,8 @@ AdvancedOutput::AdvancedOutput(OBSBasic *main_) : BasicOutputHandler(main_) "start", OBSStartRecording, this); stopRecording.Connect(obs_output_get_signal_handler(fileOutput), "stop", OBSStopRecording, this); + recordStopping.Connect(obs_output_get_signal_handler(fileOutput), + "stopping", OBSRecordStopping, this); } void AdvancedOutput::UpdateStreamSettings() diff --git a/obs/window-basic-main-outputs.hpp b/obs/window-basic-main-outputs.hpp index ec041c004..186d3b4da 100644 --- a/obs/window-basic-main-outputs.hpp +++ b/obs/window-basic-main-outputs.hpp @@ -15,7 +15,8 @@ struct BasicOutputHandler { OBSSignal startStreaming; OBSSignal stopStreaming; OBSSignal streamDelayStarting; - OBSSignal streamDelayStopping; + OBSSignal streamStopping; + OBSSignal recordStopping; inline BasicOutputHandler(OBSBasic *main_) : main(main_) {} diff --git a/obs/window-basic-main.cpp b/obs/window-basic-main.cpp index 20eb76511..66b82dad5 100644 --- a/obs/window-basic-main.cpp +++ b/obs/window-basic-main.cpp @@ -3422,6 +3422,11 @@ void OBSBasic::StreamingStart() blog(LOG_INFO, STREAMING_START); } +void OBSBasic::StreamStopping() +{ + ui->streamButton->setText(QTStr("Basic.Main.StoppingStreaming")); +} + void OBSBasic::StreamingStop(int code) { const char *errorMessage; @@ -3482,6 +3487,11 @@ void OBSBasic::StartRecording() outputHandler->StartRecording(); } +void OBSBasic::RecordStopping() +{ + ui->recordButton->setText(QTStr("Basic.Main.StoppingRecording")); +} + void OBSBasic::StopRecording() { SaveProject(); diff --git a/obs/window-basic-main.hpp b/obs/window-basic-main.hpp index f75feb531..aa2db1b29 100644 --- a/obs/window-basic-main.hpp +++ b/obs/window-basic-main.hpp @@ -289,12 +289,14 @@ public slots: void StreamDelayStopping(int sec); void StreamingStart(); + void StreamStopping(); void StreamingStop(int errorcode); void StartRecording(); void StopRecording(); void RecordingStart(); + void RecordStopping(); void RecordingStop(int code); void SaveProjectDeferred();