From 8acd52c4ad9cd890bc689601775255e55912783f Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sun, 17 Sep 2023 16:33:59 +0200 Subject: [PATCH] Make it possible to quit while SRT is not connected, although slowly. --- nageru/video_encoder.cpp | 3 ++- nageru/video_encoder.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/nageru/video_encoder.cpp b/nageru/video_encoder.cpp index 4a84ddc..ec96acc 100644 --- a/nageru/video_encoder.cpp +++ b/nageru/video_encoder.cpp @@ -114,6 +114,7 @@ VideoEncoder::VideoEncoder(ResourcePool *resource_pool, QSurface *surface, const VideoEncoder::~VideoEncoder() { + should_quit = true; quicksync_encoder->shutdown(); x264_encoder.reset(nullptr); x264_disk_encoder.reset(nullptr); @@ -405,7 +406,7 @@ int VideoEncoder::write_srt_packet(uint8_t *buf, int buf_size) if (want_srt_metric_update.exchange(false) && srt_sock != -1) { srt_metrics.update_srt_stats(srt_sock); } - while (buf_size > 0) { + while (buf_size > 0 && !should_quit.load()) { if (srt_sock == -1) { srt_sock = connect_to_srt(); if (srt_sock == -1) { diff --git a/nageru/video_encoder.h b/nageru/video_encoder.h index 91d2c75..1c2a949 100644 --- a/nageru/video_encoder.h +++ b/nageru/video_encoder.h @@ -120,6 +120,7 @@ private: std::atomic quicksync_encoders_in_shutdown{0}; std::atomic overriding_bitrate{0}; + std::atomic should_quit{false}; // Encoders that are shutdown, but need to call release_gl_resources() // (or be deleted) from some thread with an OpenGL context. -- 2.39.2