mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2024-11-25 02:51:10 +00:00
video: Don't change the VideoOverlayComposition
constructor API based on feature flags
Feature flags are additive and a higher feature might be enabled by some other dependency, which then can cause code that assumes the other API fail to compile. Still implement the constructor separately per version to make it clear to the compiler that the constructor can't fail at all in newer versions.
This commit is contained in:
parent
d83faa044e
commit
a34bc85ca1
1 changed files with 26 additions and 16 deletions
|
@ -213,14 +213,16 @@ impl fmt::Debug for VideoOverlayCompositionRef {
|
|||
}
|
||||
|
||||
impl VideoOverlayComposition {
|
||||
#[cfg(any(feature = "v1_20", feature = "dox"))]
|
||||
#[doc(alias = "gst_video_overlay_composition_new")]
|
||||
pub fn new<'a>(rects: impl IntoIterator<Item = &'a VideoOverlayRectangle>) -> Self {
|
||||
pub fn new<'a>(
|
||||
rects: impl IntoIterator<Item = &'a VideoOverlayRectangle>,
|
||||
) -> Result<Self, glib::error::BoolError> {
|
||||
assert_initialized_main_thread!();
|
||||
|
||||
use std::ptr;
|
||||
|
||||
#[cfg(feature = "v1_20")]
|
||||
unsafe {
|
||||
use std::ptr;
|
||||
|
||||
let composition =
|
||||
Self::from_glib_full(ffi::gst_video_overlay_composition_new(ptr::null_mut()));
|
||||
|
||||
|
@ -231,16 +233,9 @@ impl VideoOverlayComposition {
|
|||
);
|
||||
});
|
||||
|
||||
composition
|
||||
Ok(composition)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(any(feature = "v1_20", feature = "dox")))]
|
||||
#[doc(alias = "gst_video_overlay_composition_new")]
|
||||
pub fn new<'a>(
|
||||
rects: impl IntoIterator<Item = &'a VideoOverlayRectangle>,
|
||||
) -> Result<Self, glib::error::BoolError> {
|
||||
assert_initialized_main_thread!();
|
||||
#[cfg(not(feature = "v1_20"))]
|
||||
unsafe {
|
||||
let mut iter = rects.into_iter();
|
||||
|
||||
|
@ -352,9 +347,9 @@ impl std::iter::FromIterator<VideoOverlayRectangle> for VideoOverlayComposition
|
|||
fn from_iter<T: IntoIterator<Item = VideoOverlayRectangle>>(iter: T) -> Self {
|
||||
assert_initialized_main_thread!();
|
||||
|
||||
use std::ptr;
|
||||
|
||||
unsafe {
|
||||
use std::ptr;
|
||||
|
||||
let composition =
|
||||
Self::from_glib_full(ffi::gst_video_overlay_composition_new(ptr::null_mut()));
|
||||
|
||||
|
@ -374,7 +369,22 @@ impl std::iter::FromIterator<VideoOverlayRectangle> for VideoOverlayComposition
|
|||
impl<'a> std::iter::FromIterator<&'a VideoOverlayRectangle> for VideoOverlayComposition {
|
||||
fn from_iter<T: IntoIterator<Item = &'a VideoOverlayRectangle>>(iter: T) -> Self {
|
||||
assert_initialized_main_thread!();
|
||||
VideoOverlayComposition::new(iter.into_iter())
|
||||
|
||||
unsafe {
|
||||
use std::ptr;
|
||||
|
||||
let composition =
|
||||
Self::from_glib_full(ffi::gst_video_overlay_composition_new(ptr::null_mut()));
|
||||
|
||||
iter.into_iter().for_each(|rect| {
|
||||
ffi::gst_video_overlay_composition_add_rectangle(
|
||||
composition.as_mut_ptr(),
|
||||
rect.as_mut_ptr(),
|
||||
);
|
||||
});
|
||||
|
||||
composition
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue