From 98cc289bcc21bdc6ffcfc89e24b4a451f2c9f471 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 12 May 2022 10:51:56 +0300 Subject: [PATCH] utils/streamproducer: Add `StreamProducer::error()` to signal an error message to all consumers --- gstreamer-utils/src/streamproducer.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/gstreamer-utils/src/streamproducer.rs b/gstreamer-utils/src/streamproducer.rs index 7088db0ee..6b8f34c81 100644 --- a/gstreamer-utils/src/streamproducer.rs +++ b/gstreamer-utils/src/streamproducer.rs @@ -118,6 +118,21 @@ impl StreamProducer { pub fn appsink(&self) -> &gst_app::AppSink { &self.appsink } + + /// Signals an error on all consumers + pub fn error(&self, error: &gst::glib::Error, debug: Option<&str>) { + let consumers = self.consumers.lock().unwrap(); + + for consumer in consumers.consumers.keys() { + let mut msg_builder = + gst::message::Error::builder_from_error(error.clone()).src(consumer); + if let Some(debug) = debug { + msg_builder = msg_builder.debug(debug); + } + + let _ = consumer.post_message(msg_builder.build()); + } + } } impl<'a> From<&'a gst_app::AppSink> for StreamProducer {