obs-outputs: Only set stop events if still active
The new code in 3032535f56
would signal that the output has stopped to
the back-end and front-end, but the event used in the outputs themselves
to shut down the send thread would still be signaled, causing the next
connection to immediately stop as soon as it had started. This fixes it
so that the event does not get signaled unless the thread is active.
This commit is contained in:
@@ -257,7 +257,6 @@ static void ftl_stream_stop(void *data, uint64_t ts)
|
||||
}
|
||||
|
||||
stream->stop_ts = ts / 1000ULL;
|
||||
os_event_signal(stream->stop_event);
|
||||
|
||||
if (ts) {
|
||||
stream->shutdown_timeout_ts = ts +
|
||||
@@ -265,6 +264,7 @@ static void ftl_stream_stop(void *data, uint64_t ts)
|
||||
}
|
||||
|
||||
if (active(stream)) {
|
||||
os_event_signal(stream->stop_event);
|
||||
if (stream->stop_ts == 0)
|
||||
os_sem_post(stream->send_sem);
|
||||
} else {
|
||||
|
@@ -178,13 +178,13 @@ static void rtmp_stream_stop(void *data, uint64_t ts)
|
||||
pthread_join(stream->connect_thread, NULL);
|
||||
|
||||
stream->stop_ts = ts / 1000ULL;
|
||||
os_event_signal(stream->stop_event);
|
||||
|
||||
if (ts)
|
||||
stream->shutdown_timeout_ts = ts +
|
||||
(uint64_t)stream->max_shutdown_time_sec * 1000000000ULL;
|
||||
|
||||
if (active(stream)) {
|
||||
os_event_signal(stream->stop_event);
|
||||
if (stream->stop_ts == 0)
|
||||
os_sem_post(stream->send_sem);
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user