speechmatics: Handle multiple stream-start event

Do not spawn new task loop with channel if we have one already

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2205>
This commit is contained in:
Seungha Yang 2025-04-15 06:50:40 +09:00
parent 2519b9e51d
commit 731ceb58bd

View file

@ -878,11 +878,19 @@ impl TranscriberSrcPad {
}
fn start_task(&self) -> Result<(), gst::LoggableError> {
let mut state = self.state.lock().unwrap();
if state.sender.is_some() {
gst::debug!(CAT, imp = self, "Have task already");
return Ok(());
}
let this_weak = self.downgrade();
let pad_weak = self.obj().downgrade();
let (sender, mut receiver) = mpsc::channel(1);
self.state.lock().unwrap().sender = Some(sender);
state.sender = Some(sender);
drop(state);
let res = self.obj().start_task(move || {
let Some(this) = this_weak.upgrade() else {