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:
jp9000 2017-10-12 09:56:47 -07:00
parent 8e66f180d8
commit 5cfefce55e
2 changed files with 2 additions and 2 deletions

View File

@ -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 {

View File

@ -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 {