forked from mirrors/gstreamer-rs
gstreamer: Improve StreamsSelectedBuilder::streams()
It's much easier to use if it takes any kind of iterator instead of a slice of references.
This commit is contained in:
parent
98e12e835a
commit
d1f978f9f1
1 changed files with 12 additions and 4 deletions
|
@ -2960,7 +2960,7 @@ pub struct StreamsSelectedBuilder<'a> {
|
|||
collection: &'a crate::StreamCollection,
|
||||
#[cfg(any(feature = "v1_10", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_10")))]
|
||||
streams: Option<&'a [&'a crate::Stream]>,
|
||||
streams: Option<Vec<crate::Stream>>,
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "v1_10", feature = "dox"))]
|
||||
|
@ -2975,16 +2975,24 @@ impl<'a> StreamsSelectedBuilder<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn streams(self, streams: &'a [&'a crate::Stream]) -> Self {
|
||||
pub fn streams(
|
||||
self,
|
||||
streams: impl IntoIterator<Item = impl std::borrow::Borrow<crate::Stream>>,
|
||||
) -> Self {
|
||||
Self {
|
||||
streams: Some(streams),
|
||||
streams: Some(
|
||||
streams
|
||||
.into_iter()
|
||||
.map(|s| s.borrow().clone())
|
||||
.collect::<Vec<_>>(),
|
||||
),
|
||||
..self
|
||||
}
|
||||
}
|
||||
|
||||
message_builder_generic_impl!(|s: &mut Self, src| {
|
||||
let msg = ffi::gst_message_new_streams_selected(src, s.collection.to_glib_none().0);
|
||||
if let Some(streams) = s.streams {
|
||||
if let Some(ref streams) = s.streams {
|
||||
for stream in streams {
|
||||
ffi::gst_message_streams_selected_add(msg, stream.to_glib_none().0);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue