Skip to content

Commit 6ef9c1e

Browse files
committed
frontend: Allow 5 multitrack reconnect attempts before re-running GCC
1 parent 01d5198 commit 6ef9c1e

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#pragma once
2+
3+
#define PROJECT_VERSION "1.5.2"
4+
#define PROJECT_VERSION_MAJOR 1
5+
#define PROJECT_VERSION_MINOR 5
6+
#define PROJECT_VERSION_PATCH 2

frontend/utility/MultitrackVideoOutput.cpp

+8-3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717

1818
#include <cinttypes>
1919

20+
// Maximum reconnect attempts with an invalid key error before giving up (roughly 30 seconds with default start value).
21+
static constexpr uint8_t MAX_RECONNECT_ATTEMPTS = 5;
22+
2023
Qt::ConnectionType BlockingConnectionTypeFor(QObject *object)
2124
{
2225
return object->thread() == QThread::currentThread() ? Qt::DirectConnection : Qt::BlockingQueuedConnection;
@@ -395,10 +398,11 @@ void MultitrackVideoOutput::PrepareStreaming(QWidget *parent, const char *servic
395398
obs_output_add_packet_callback(output, bpm_inject, NULL);
396399

397400
// Set callback to prevent reconnection attempts once the stream key has become invalid
398-
static auto reconnect_cb = [](void *, obs_output_t *, int code) -> bool {
399-
return code != OBS_OUTPUT_INVALID_STREAM;
401+
static auto reconnect_cb = [](void *param, obs_output_t *, int code) -> bool {
402+
auto _this = static_cast<MultitrackVideoOutput *>(param);
403+
return code != OBS_OUTPUT_INVALID_STREAM || (_this->reconnect_attempts++ < MAX_RECONNECT_ATTEMPTS);
400404
};
401-
obs_output_set_reconnect_callback(output, reconnect_cb, nullptr);
405+
obs_output_set_reconnect_callback(output, reconnect_cb, this);
402406

403407
OBSSignal start_streaming;
404408
OBSSignal stop_streaming;
@@ -810,6 +814,7 @@ void StreamStartHandler(void *arg, calldata_t *)
810814
{
811815
auto self = static_cast<MultitrackVideoOutput *>(arg);
812816
self->restart_on_error = true;
817+
self->reconnect_attempts = 0;
813818
}
814819

815820
void StreamStopHandler(void *arg, calldata_t *data)

frontend/utility/MultitrackVideoOutput.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ struct MultitrackVideoOutput {
6363
std::optional<OBSOutputObjects> current_stream_dump;
6464

6565
bool restart_on_error = false;
66+
uint8_t reconnect_attempts = 0;
6667

6768
friend void StreamStartHandler(void *arg, calldata_t *data);
6869
friend void StreamStopHandler(void *arg, calldata_t *data);

0 commit comments

Comments
 (0)