Browse Source

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.
jp9000 8 years ago
parent
commit
5cfefce55e
2 changed files with 2 additions and 2 deletions
  1. 1 1
      plugins/obs-outputs/ftl-stream.c
  2. 1 1
      plugins/obs-outputs/rtmp-stream.c

+ 1 - 1
plugins/obs-outputs/ftl-stream.c

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

+ 1 - 1
plugins/obs-outputs/rtmp-stream.c

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