diff --git a/generic/threadshare/src/inter/src/imp.rs b/generic/threadshare/src/inter/src/imp.rs index e3a451eef..dc8a5c14e 100644 --- a/generic/threadshare/src/inter/src/imp.rs +++ b/generic/threadshare/src/inter/src/imp.rs @@ -493,11 +493,7 @@ impl TaskImpl for InterSrcTask { async fn stop(&mut self) -> Result<(), gst::ErrorMessage> { gst::log!(CAT, obj = self.elem, "Stopping task"); - - self.dataqueue.stop(); - self.dataqueue.clear(); - self.got_first_item = false; - + self.flush_start().await?; gst::log!(CAT, obj = self.elem, "Task stopped"); Ok(()) @@ -506,6 +502,7 @@ impl TaskImpl for InterSrcTask { async fn flush_start(&mut self) -> Result<(), gst::ErrorMessage> { gst::log!(CAT, obj = self.elem, "Starting task flush"); + self.dataqueue.stop(); self.dataqueue.clear(); self.got_first_item = false;