From e92250847d4067263743237fb70b779821086f15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Laignel?= Date: Fri, 29 Aug 2025 11:16:44 +0200 Subject: [PATCH] threadshare: standalone examples: log stats on EOS ... not on stop as it added extra noise to the parked duration report. Part-of: --- .../standalone/sink/async_mutex/imp.rs | 9 ++++---- .../standalone/sink/sync_mutex/imp.rs | 9 ++++---- .../examples/standalone/sink/task/imp.rs | 21 +++++++++++++------ 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/generic/threadshare/examples/standalone/sink/async_mutex/imp.rs b/generic/threadshare/examples/standalone/sink/async_mutex/imp.rs index 9e76fe471..3b5e3a2a4 100644 --- a/generic/threadshare/examples/standalone/sink/async_mutex/imp.rs +++ b/generic/threadshare/examples/standalone/sink/async_mutex/imp.rs @@ -116,6 +116,9 @@ impl PadSinkHandler for AsyncPadSinkHandler { let is_main_elem = elem.imp().settings.lock().unwrap().is_main_elem; if is_main_elem { gst::info!(CAT, obj = elem, "EOS"); + if let Some(ref mut stats) = self.0.lock().await.stats { + stats.log_global(); + } let _ = elem.post_message( gst::message::Application::builder(gst::Structure::new_empty( "ts-standalone-sink/eos", @@ -181,11 +184,7 @@ impl AsyncPadSinkHandler { fn stop(&self) { futures::executor::block_on(async move { - let mut inner = self.0.lock().await; - if let Some(ref mut stats) = inner.stats { - stats.log_global(); - } - inner.is_flushing = true; + self.0.lock().await.is_flushing = true; }); } } diff --git a/generic/threadshare/examples/standalone/sink/sync_mutex/imp.rs b/generic/threadshare/examples/standalone/sink/sync_mutex/imp.rs index 13d3254bd..b8767e154 100644 --- a/generic/threadshare/examples/standalone/sink/sync_mutex/imp.rs +++ b/generic/threadshare/examples/standalone/sink/sync_mutex/imp.rs @@ -115,6 +115,9 @@ impl PadSinkHandler for SyncPadSinkHandler { let is_main_elem = elem.imp().settings.lock().unwrap().is_main_elem; if is_main_elem { gst::info!(CAT, obj = elem, "EOS"); + if let Some(ref mut stats) = self.0.lock().unwrap().stats { + stats.log_global(); + } let _ = elem.post_message( gst::message::Application::builder(gst::Structure::new_empty( "ts-standalone-sink/eos", @@ -175,11 +178,7 @@ impl SyncPadSinkHandler { } fn stop(&self) { - let mut inner = self.0.lock().unwrap(); - if let Some(ref mut stats) = inner.stats { - stats.log_global(); - } - inner.is_flushing = true; + self.0.lock().unwrap().is_flushing = true; } } diff --git a/generic/threadshare/examples/standalone/sink/task/imp.rs b/generic/threadshare/examples/standalone/sink/task/imp.rs index 1fb22e45a..ca57617e6 100644 --- a/generic/threadshare/examples/standalone/sink/task/imp.rs +++ b/generic/threadshare/examples/standalone/sink/task/imp.rs @@ -60,6 +60,12 @@ impl PadSinkHandler for TaskPadSinkHandler { if is_main_elem { gst::info!(CAT, obj = elem, "EOS"); + let _ = elem + .imp() + .clone_item_sender() + .send_async(StreamItem::Event(event)) + .await; + let _ = elem.post_message( gst::message::Application::builder(gst::Structure::new_empty( "ts-standalone-sink/eos", @@ -157,9 +163,6 @@ impl TaskImpl for TaskSinkTask { async fn stop(&mut self) -> Result<(), gst::ErrorMessage> { log_or_trace!(CAT, self.is_main_elem, obj = self.elem, "Stopping Task"); - if let Some(ref mut stats) = self.stats { - stats.log_global(); - } self.flush(); Ok(()) } @@ -207,11 +210,17 @@ impl TaskImpl for TaskSinkTask { log_or_trace!(CAT, self.is_main_elem, obj = self.elem, "Buffer processed"); } - StreamItem::Event(evt) => { - if let EventView::Segment(evt) = evt.view() { + StreamItem::Event(evt) => match evt.view() { + EventView::Eos(_) => { + if let Some(ref mut stats) = self.stats { + stats.log_global(); + } + } + EventView::Segment(evt) => { self.segment = evt.segment().downcast_ref::().cloned(); } - } + _ => (), + }, } Ok(())