Remove unnecessary trait sealing

For all these traits only the implementation that already exists is possible.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1563>
This commit is contained in:
Sebastian Dröge 2024-10-19 18:09:56 +03:00 committed by GStreamer Marge Bot
parent 887bffbb2c
commit abbc85c3d0
59 changed files with 78 additions and 368 deletions

View file

@ -10,12 +10,7 @@ use gst::prelude::*;
use crate::{ffi, AudioAggregator, AudioAggregatorPad}; use crate::{ffi, AudioAggregator, AudioAggregatorPad};
mod sealed { pub trait AudioAggregatorExtManual: IsA<AudioAggregator> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::AudioAggregator>> Sealed for T {}
}
pub trait AudioAggregatorExtManual: sealed::Sealed + IsA<AudioAggregator> + 'static {
#[doc(alias = "gst_audio_aggregator_set_sink_caps")] #[doc(alias = "gst_audio_aggregator_set_sink_caps")]
fn set_sink_caps(&self, pad: &impl IsA<AudioAggregatorPad>, caps: &gst::CapsRef) { fn set_sink_caps(&self, pad: &impl IsA<AudioAggregatorPad>, caps: &gst::CapsRef) {
unsafe { unsafe {

View file

@ -8,14 +8,7 @@ use glib::{
use crate::{ffi, AudioAggregatorConvertPad}; use crate::{ffi, AudioAggregatorConvertPad};
mod sealed { pub trait AudioAggregatorConvertPadExtManual: IsA<AudioAggregatorConvertPad> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::AudioAggregatorConvertPad>> Sealed for T {}
}
pub trait AudioAggregatorConvertPadExtManual:
sealed::Sealed + IsA<AudioAggregatorConvertPad> + 'static
{
#[doc(alias = "converter-config")] #[doc(alias = "converter-config")]
fn converter_config(&self) -> Option<crate::AudioConverterConfig> { fn converter_config(&self) -> Option<crate::AudioConverterConfig> {
ObjectExt::property::<Option<gst::Structure>>(self.as_ref(), "converter-config") ObjectExt::property::<Option<gst::Structure>>(self.as_ref(), "converter-config")

View file

@ -3,12 +3,7 @@ use gst::prelude::*;
use crate::{ffi, AudioAggregatorPad}; use crate::{ffi, AudioAggregatorPad};
mod sealed { pub trait AudioAggregatorPadExtManual: IsA<AudioAggregatorPad> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::AudioAggregatorPad>> Sealed for T {}
}
pub trait AudioAggregatorPadExtManual: sealed::Sealed + IsA<AudioAggregatorPad> + 'static {
fn audio_info(&self) -> Option<crate::AudioInfo> { fn audio_info(&self) -> Option<crate::AudioInfo> {
unsafe { unsafe {
let ptr = self.as_ptr() as *mut ffi::GstAudioAggregatorPad; let ptr = self.as_ptr() as *mut ffi::GstAudioAggregatorPad;

View file

@ -20,12 +20,7 @@ extern "C" {
) -> gst::ffi::GstFlowReturn; ) -> gst::ffi::GstFlowReturn;
} }
mod sealed { pub trait AudioDecoderExtManual: IsA<AudioDecoder> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::AudioDecoder>> Sealed for T {}
}
pub trait AudioDecoderExtManual: sealed::Sealed + IsA<AudioDecoder> + 'static {
#[doc(alias = "gst_audio_decoder_negotiate")] #[doc(alias = "gst_audio_decoder_negotiate")]
fn negotiate(&self) -> Result<(), gst::FlowError> { fn negotiate(&self) -> Result<(), gst::FlowError> {
unsafe { unsafe {

View file

@ -6,12 +6,7 @@ use glib::{prelude::*, translate::*};
use crate::{ffi, AudioEncoder}; use crate::{ffi, AudioEncoder};
mod sealed { pub trait AudioEncoderExtManual: IsA<AudioEncoder> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::AudioEncoder>> Sealed for T {}
}
pub trait AudioEncoderExtManual: sealed::Sealed + IsA<AudioEncoder> + 'static {
#[doc(alias = "gst_audio_encoder_negotiate")] #[doc(alias = "gst_audio_encoder_negotiate")]
fn negotiate(&self) -> Result<(), gst::FlowError> { fn negotiate(&self) -> Result<(), gst::FlowError> {
unsafe { unsafe {

View file

@ -5,12 +5,7 @@ use gst_base::prelude::*;
use crate::{ffi, AudioFilter, AudioInfo}; use crate::{ffi, AudioFilter, AudioInfo};
mod sealed { pub trait AudioFilterExtManual: IsA<AudioFilter> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::AudioFilter>> Sealed for T {}
}
pub trait AudioFilterExtManual: sealed::Sealed + IsA<AudioFilter> + 'static {
fn audio_info(&self) -> Option<AudioInfo> { fn audio_info(&self) -> Option<AudioInfo> {
unsafe { unsafe {
let ptr: &ffi::GstAudioFilter = &*(self.as_ptr() as *const _); let ptr: &ffi::GstAudioFilter = &*(self.as_ptr() as *const _);

View file

@ -16,12 +16,7 @@ use gst::{format::FormattedValue, prelude::*};
use crate::{ffi, Aggregator, AggregatorPad}; use crate::{ffi, Aggregator, AggregatorPad};
mod sealed { pub trait AggregatorExtManual: IsA<Aggregator> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::Aggregator>> Sealed for T {}
}
pub trait AggregatorExtManual: sealed::Sealed + IsA<Aggregator> + 'static {
#[doc(alias = "get_allocator")] #[doc(alias = "get_allocator")]
#[doc(alias = "gst_aggregator_get_allocator")] #[doc(alias = "gst_aggregator_get_allocator")]
fn allocator(&self) -> (Option<gst::Allocator>, gst::AllocationParams) { fn allocator(&self) -> (Option<gst::Allocator>, gst::AllocationParams) {

View file

@ -5,12 +5,7 @@ use gst::prelude::*;
use crate::{ffi, AggregatorPad}; use crate::{ffi, AggregatorPad};
mod sealed { pub trait AggregatorPadExtManual: IsA<AggregatorPad> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::AggregatorPad>> Sealed for T {}
}
pub trait AggregatorPadExtManual: sealed::Sealed + IsA<AggregatorPad> + 'static {
#[doc(alias = "get_segment")] #[doc(alias = "get_segment")]
fn segment(&self) -> gst::Segment { fn segment(&self) -> gst::Segment {
unsafe { unsafe {

View file

@ -10,12 +10,7 @@ use gst::{
use crate::{ffi, BaseParse, BaseParseFrame}; use crate::{ffi, BaseParse, BaseParseFrame};
mod sealed { pub trait BaseParseExtManual: IsA<BaseParse> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::BaseParse>> Sealed for T {}
}
pub trait BaseParseExtManual: sealed::Sealed + IsA<BaseParse> + 'static {
#[doc(alias = "get_sink_pad")] #[doc(alias = "get_sink_pad")]
fn sink_pad(&self) -> &gst::Pad { fn sink_pad(&self) -> &gst::Pad {
unsafe { unsafe {

View file

@ -7,12 +7,7 @@ use gst::prelude::*;
use crate::{ffi, BaseSink}; use crate::{ffi, BaseSink};
mod sealed { pub trait BaseSinkExtManual: IsA<BaseSink> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::BaseSink>> Sealed for T {}
}
pub trait BaseSinkExtManual: sealed::Sealed + IsA<BaseSink> + 'static {
#[doc(alias = "get_segment")] #[doc(alias = "get_segment")]
fn segment(&self) -> gst::Segment { fn segment(&self) -> gst::Segment {
unsafe { unsafe {

View file

@ -7,12 +7,7 @@ use gst::prelude::*;
use crate::{ffi, BaseSrc}; use crate::{ffi, BaseSrc};
mod sealed { pub trait BaseSrcExtManual: IsA<BaseSrc> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::BaseSrc>> Sealed for T {}
}
pub trait BaseSrcExtManual: sealed::Sealed + IsA<BaseSrc> + 'static {
#[doc(alias = "get_allocator")] #[doc(alias = "get_allocator")]
#[doc(alias = "gst_base_src_get_allocator")] #[doc(alias = "gst_base_src_get_allocator")]
fn allocator(&self) -> (Option<gst::Allocator>, gst::AllocationParams) { fn allocator(&self) -> (Option<gst::Allocator>, gst::AllocationParams) {

View file

@ -7,12 +7,7 @@ use gst::prelude::*;
use crate::{ffi, BaseTransform}; use crate::{ffi, BaseTransform};
mod sealed { pub trait BaseTransformExtManual: IsA<BaseTransform> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::BaseTransform>> Sealed for T {}
}
pub trait BaseTransformExtManual: sealed::Sealed + IsA<BaseTransform> + 'static {
#[doc(alias = "get_allocator")] #[doc(alias = "get_allocator")]
#[doc(alias = "gst_base_transform_get_allocator")] #[doc(alias = "gst_base_transform_get_allocator")]
fn allocator(&self) -> (Option<gst::Allocator>, gst::AllocationParams) { fn allocator(&self) -> (Option<gst::Allocator>, gst::AllocationParams) {

View file

@ -2,12 +2,7 @@
use crate::{ffi, prelude::*, Formatter}; use crate::{ffi, prelude::*, Formatter};
use gst::glib::translate::*; use gst::glib::translate::*;
mod sealed { pub trait FormatterExtManual: IsA<Formatter> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::Formatter>> Sealed for T {}
}
pub trait FormatterExtManual: sealed::Sealed + IsA<Formatter> + 'static {
fn can_load_uri(&self, uri: &str) -> Result<(), glib::Error> { fn can_load_uri(&self, uri: &str) -> Result<(), glib::Error> {
unsafe { unsafe {
let klass = self.class_of::<crate::Formatter>().unwrap(); let klass = self.class_of::<crate::Formatter>().unwrap();

View file

@ -45,12 +45,7 @@ impl GLContext {
} }
} }
mod sealed { pub trait GLContextExtManual: IsA<GLContext> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::GLContext>> Sealed for T {}
}
pub trait GLContextExtManual: sealed::Sealed + IsA<GLContext> + 'static {
#[doc(alias = "get_gl_context")] #[doc(alias = "get_gl_context")]
#[doc(alias = "gst_gl_context_get_gl_context")] #[doc(alias = "gst_gl_context_get_gl_context")]
fn gl_context(&self) -> uintptr_t { fn gl_context(&self) -> uintptr_t {

View file

@ -3,12 +3,7 @@ use crate::{ffi, GLContext, GLDisplay};
use glib::prelude::*; use glib::prelude::*;
use glib::translate::*; use glib::translate::*;
mod sealed { pub trait GLDisplayExtManual: IsA<GLDisplay> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::GLDisplay>> Sealed for T {}
}
pub trait GLDisplayExtManual: sealed::Sealed + IsA<GLDisplay> + 'static {
#[doc(alias = "gst_gl_display_get_handle")] #[doc(alias = "gst_gl_display_get_handle")]
#[doc(alias = "get_handle")] #[doc(alias = "get_handle")]
fn handle(&self) -> usize { fn handle(&self) -> usize {

View file

@ -2,12 +2,7 @@ use glib::{prelude::*, translate::*};
use crate::{ffi, GLFramebuffer, GLMemoryRef}; use crate::{ffi, GLFramebuffer, GLMemoryRef};
mod sealed { pub trait GLFramebufferExtManual: IsA<GLFramebuffer> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::GLFramebuffer>> Sealed for T {}
}
pub trait GLFramebufferExtManual: sealed::Sealed + IsA<GLFramebuffer> + 'static {
#[doc(alias = "gst_gl_framebuffer_draw_to_texture")] #[doc(alias = "gst_gl_framebuffer_draw_to_texture")]
fn draw_to_texture<F: FnOnce()>(&self, mem: &mut GLMemoryRef, func: F) { fn draw_to_texture<F: FnOnce()>(&self, mem: &mut GLMemoryRef, func: F) {
let mut func = std::mem::ManuallyDrop::new(func); let mut func = std::mem::ManuallyDrop::new(func);

View file

@ -12,14 +12,9 @@ pub enum Writable {}
// TODO: implement copy for videoframes. This would need to go through all the individual memories // TODO: implement copy for videoframes. This would need to go through all the individual memories
// and copy them. Some GL textures can be copied, others cannot. // and copy them. Some GL textures can be copied, others cannot.
pub trait IsGLVideoFrame: IsVideoFrame + Sized {} pub unsafe trait IsGLVideoFrame: IsVideoFrame {}
mod sealed { pub trait GLVideoFrameExt: IsGLVideoFrame + VideoFrameExt {
pub trait Sealed {}
impl<T: super::IsGLVideoFrame> Sealed for T {}
}
pub trait GLVideoFrameExt: sealed::Sealed + IsGLVideoFrame {
#[inline] #[inline]
fn memory(&self, idx: u32) -> Result<&GLMemoryRef, glib::BoolError> { fn memory(&self, idx: u32) -> Result<&GLMemoryRef, glib::BoolError> {
if idx >= self.info().n_planes() { if idx >= self.info().n_planes() {
@ -80,14 +75,14 @@ pub struct GLVideoFrame<T> {
unsafe impl<T> Send for GLVideoFrame<T> {} unsafe impl<T> Send for GLVideoFrame<T> {}
unsafe impl<T> Sync for GLVideoFrame<T> {} unsafe impl<T> Sync for GLVideoFrame<T> {}
impl<T> IsVideoFrame for GLVideoFrame<T> { unsafe impl<T> IsVideoFrame for GLVideoFrame<T> {
#[inline] #[inline]
fn as_raw(&self) -> &gst_video::ffi::GstVideoFrame { fn as_raw(&self) -> &gst_video::ffi::GstVideoFrame {
&self.frame &self.frame
} }
} }
impl<T> IsGLVideoFrame for GLVideoFrame<T> {} unsafe impl<T> IsGLVideoFrame for GLVideoFrame<T> {}
impl<T> Debug for GLVideoFrame<T> { impl<T> Debug for GLVideoFrame<T> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
@ -272,14 +267,14 @@ pub struct GLVideoFrameRef<T> {
unsafe impl<T> Send for GLVideoFrameRef<T> {} unsafe impl<T> Send for GLVideoFrameRef<T> {}
unsafe impl<T> Sync for GLVideoFrameRef<T> {} unsafe impl<T> Sync for GLVideoFrameRef<T> {}
impl<T> IsVideoFrame for GLVideoFrameRef<T> { unsafe impl<T> IsVideoFrame for GLVideoFrameRef<T> {
#[inline] #[inline]
fn as_raw(&self) -> &gst_video::ffi::GstVideoFrame { fn as_raw(&self) -> &gst_video::ffi::GstVideoFrame {
&self.frame &self.frame
} }
} }
impl<T> IsGLVideoFrame for GLVideoFrameRef<T> {} unsafe impl<T> IsGLVideoFrame for GLVideoFrameRef<T> {}
impl<T> Debug for GLVideoFrameRef<T> { impl<T> Debug for GLVideoFrameRef<T> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {

View file

@ -4,18 +4,11 @@ use gst::prelude::*;
use crate::{ffi, subclass::AudioVisualizerSetupToken, AudioVisualizer}; use crate::{ffi, subclass::AudioVisualizerSetupToken, AudioVisualizer};
mod sealed { pub trait AudioVisualizerExtManual: IsA<AudioVisualizer> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::AudioVisualizer>> Sealed for T {}
}
pub trait AudioVisualizerExtManual:
sealed::Sealed + IsA<AudioVisualizer> + IsA<gst::Element> + 'static
{
// rustdoc-stripper-ignore-next // rustdoc-stripper-ignore-next
/// Returns the number of samples per frame required before calling the render method /// Returns the number of samples per frame required before calling the render method
fn req_spf(&self) -> u32 { fn req_spf(&self) -> u32 {
let sinkpad = self.static_pad("sink").expect("sink pad presence"); let sinkpad = self.as_ref().static_pad("sink").expect("sink pad presence");
let _stream_lock = sinkpad.stream_lock(); let _stream_lock = sinkpad.stream_lock();
let ptr = self.as_ptr() as *mut ffi::GstAudioVisualizer; let ptr = self.as_ptr() as *mut ffi::GstAudioVisualizer;
@ -31,7 +24,7 @@ pub trait AudioVisualizerExtManual:
token.0.as_ptr() token.0.as_ptr()
); );
let sinkpad = self.static_pad("sink").expect("sink pad presence"); let sinkpad = self.as_ref().static_pad("sink").expect("sink pad presence");
let _stream_lock = sinkpad.stream_lock(); let _stream_lock = sinkpad.stream_lock();
let ptr = self.as_ptr() as *mut ffi::GstAudioVisualizer; let ptr = self.as_ptr() as *mut ffi::GstAudioVisualizer;
@ -41,7 +34,7 @@ pub trait AudioVisualizerExtManual:
} }
fn audio_info(&self) -> gst_audio::AudioInfo { fn audio_info(&self) -> gst_audio::AudioInfo {
let sinkpad = self.static_pad("sink").expect("sink pad presence"); let sinkpad = self.as_ref().static_pad("sink").expect("sink pad presence");
let _stream_lock = sinkpad.stream_lock(); let _stream_lock = sinkpad.stream_lock();
let ptr = self.as_ptr() as *mut ffi::GstAudioVisualizer; let ptr = self.as_ptr() as *mut ffi::GstAudioVisualizer;
@ -54,7 +47,7 @@ pub trait AudioVisualizerExtManual:
} }
fn video_info(&self) -> gst_video::VideoInfo { fn video_info(&self) -> gst_video::VideoInfo {
let srcpad = self.static_pad("src").expect("src pad presence"); let srcpad = self.as_ref().static_pad("src").expect("src pad presence");
let _stream_lock = srcpad.stream_lock(); let _stream_lock = srcpad.stream_lock();
let ptr = self.as_ptr() as *mut ffi::GstAudioVisualizer; let ptr = self.as_ptr() as *mut ffi::GstAudioVisualizer;
@ -67,4 +60,4 @@ pub trait AudioVisualizerExtManual:
} }
} }
impl<O: IsA<AudioVisualizer> + IsA<gst::Element>> AudioVisualizerExtManual for O {} impl<O: IsA<AudioVisualizer>> AudioVisualizerExtManual for O {}

View file

@ -31,14 +31,7 @@ impl Iterator for Iter {
impl std::iter::FusedIterator for Iter {} impl std::iter::FusedIterator for Iter {}
mod sealed { pub trait DiscovererStreamInfoExtManual: IsA<DiscovererStreamInfo> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::DiscovererStreamInfo>> Sealed for T {}
}
pub trait DiscovererStreamInfoExtManual:
sealed::Sealed + IsA<DiscovererStreamInfo> + 'static
{
fn next_iter(&self) -> Iter { fn next_iter(&self) -> Iter {
Iter { Iter {
stream_info: self.next(), stream_info: self.next(),

View file

@ -8,12 +8,7 @@ use crate::{
ffi, EncodingAudioProfile, EncodingContainerProfile, EncodingProfile, EncodingVideoProfile, ffi, EncodingAudioProfile, EncodingContainerProfile, EncodingProfile, EncodingVideoProfile,
}; };
mod sealed { pub trait EncodingProfileExtManual: IsA<EncodingProfile> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::EncodingProfile>> Sealed for T {}
}
pub trait EncodingProfileExtManual: sealed::Sealed + IsA<EncodingProfile> + 'static {
#[cfg(feature = "v1_20")] #[cfg(feature = "v1_20")]
#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))] #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
#[doc(alias = "gst_encoding_profile_get_element_properties")] #[doc(alias = "gst_encoding_profile_get_element_properties")]

View file

@ -5,12 +5,7 @@ use glib::translate::*;
use crate::{ffi, RTPBaseDepayload}; use crate::{ffi, RTPBaseDepayload};
mod sealed { pub trait RTPBaseDepayloadExtManual: IsA<RTPBaseDepayload> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::RTPBaseDepayload>> Sealed for T {}
}
pub trait RTPBaseDepayloadExtManual: sealed::Sealed + IsA<RTPBaseDepayload> + 'static {
#[cfg(feature = "v1_24")] #[cfg(feature = "v1_24")]
#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
fn extensions(&self) -> Vec<crate::RTPHeaderExtension> { fn extensions(&self) -> Vec<crate::RTPHeaderExtension> {

View file

@ -4,12 +4,7 @@ use glib::{prelude::*, translate::*};
use crate::{ffi, RTPBasePayload}; use crate::{ffi, RTPBasePayload};
mod sealed { pub trait RTPBasePayloadExtManual: IsA<RTPBasePayload> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::RTPBasePayload>> Sealed for T {}
}
pub trait RTPBasePayloadExtManual: sealed::Sealed + IsA<RTPBasePayload> + 'static {
#[cfg(feature = "v1_20")] #[cfg(feature = "v1_20")]
#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))] #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
#[doc(alias = "gst_rtp_base_payload_set_outcaps_structure")] #[doc(alias = "gst_rtp_base_payload_set_outcaps_structure")]

View file

@ -2,12 +2,7 @@ use glib::{object::IsA, translate::*};
use crate::{ffi, RTPHeaderExtension, RTPHeaderExtensionFlags}; use crate::{ffi, RTPHeaderExtension, RTPHeaderExtensionFlags};
mod sealed { pub trait RTPHeaderExtensionExtManual: IsA<RTPHeaderExtension> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::RTPHeaderExtension>> Sealed for T {}
}
pub trait RTPHeaderExtensionExtManual: sealed::Sealed + IsA<RTPHeaderExtension> + 'static {
#[doc(alias = "gst_rtp_header_extension_read")] #[doc(alias = "gst_rtp_header_extension_read")]
fn read( fn read(
&self, &self,

View file

@ -6,12 +6,7 @@ use glib::{prelude::*, translate::*};
use crate::{ffi, RTSPAddress, RTSPAddressPool, RTSPAddressPoolResult}; use crate::{ffi, RTSPAddress, RTSPAddressPool, RTSPAddressPoolResult};
mod sealed { pub trait RTSPAddressPoolExtManual: IsA<RTSPAddressPool> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::RTSPAddressPool>> Sealed for T {}
}
pub trait RTSPAddressPoolExtManual: sealed::Sealed + IsA<RTSPAddressPool> + 'static {
#[doc(alias = "gst_rtsp_address_pool_reserve_address")] #[doc(alias = "gst_rtsp_address_pool_reserve_address")]
fn reserve_address( fn reserve_address(
&self, &self,

View file

@ -10,12 +10,7 @@ use glib::{
use crate::{ffi, RTSPAuth, RTSPToken}; use crate::{ffi, RTSPAuth, RTSPToken};
mod sealed { pub trait RTSPAuthExtManual: IsA<RTSPAuth> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::RTSPAuth>> Sealed for T {}
}
pub trait RTSPAuthExtManual: sealed::Sealed + IsA<RTSPAuth> + 'static {
#[doc(alias = "gst_rtsp_auth_set_default_token")] #[doc(alias = "gst_rtsp_auth_set_default_token")]
fn set_default_token(&self, mut token: Option<&mut RTSPToken>) { fn set_default_token(&self, mut token: Option<&mut RTSPToken>) {
unsafe { unsafe {

View file

@ -4,12 +4,7 @@ use crate::{ffi, RTSPClient, RTSPSession};
use glib::{prelude::*, source::SourceId, translate::*}; use glib::{prelude::*, source::SourceId, translate::*};
use gst_rtsp::rtsp_message::RTSPMessage; use gst_rtsp::rtsp_message::RTSPMessage;
mod sealed { pub trait RTSPClientExtManual: IsA<RTSPClient> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::RTSPClient>> Sealed for T {}
}
pub trait RTSPClientExtManual: sealed::Sealed + IsA<RTSPClient> + 'static {
#[doc(alias = "gst_rtsp_client_attach")] #[doc(alias = "gst_rtsp_client_attach")]
fn attach(&self, context: Option<&glib::MainContext>) -> SourceId { fn attach(&self, context: Option<&glib::MainContext>) -> SourceId {
unsafe { unsafe {

View file

@ -4,12 +4,7 @@ use glib::{prelude::*, translate::*};
use crate::{ffi, RTSPMedia}; use crate::{ffi, RTSPMedia};
mod sealed { pub trait RTSPMediaExtManual: IsA<RTSPMedia> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::RTSPMedia>> Sealed for T {}
}
pub trait RTSPMediaExtManual: sealed::Sealed + IsA<RTSPMedia> + 'static {
#[doc(alias = "gst_rtsp_media_take_pipeline")] #[doc(alias = "gst_rtsp_media_take_pipeline")]
fn take_pipeline(&self, pipeline: &impl IsA<gst::Pipeline>) { fn take_pipeline(&self, pipeline: &impl IsA<gst::Pipeline>) {
unsafe { unsafe {

View file

@ -4,12 +4,7 @@ use glib::{prelude::*, translate::*};
use crate::{ffi, RTSPMediaFactory}; use crate::{ffi, RTSPMediaFactory};
mod sealed { pub trait RTSPMediaFactoryExtManual: IsA<RTSPMediaFactory> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::RTSPMediaFactory>> Sealed for T {}
}
pub trait RTSPMediaFactoryExtManual: sealed::Sealed + IsA<RTSPMediaFactory> + 'static {
#[doc(alias = "gst_rtsp_media_factory_add_role_from_structure")] #[doc(alias = "gst_rtsp_media_factory_add_role_from_structure")]
fn add_role_from_structure(&self, structure: &gst::StructureRef) { fn add_role_from_structure(&self, structure: &gst::StructureRef) {
unsafe { unsafe {

View file

@ -4,14 +4,7 @@ use glib::{prelude::*, translate::*};
use crate::{ffi, RTSPContext, RTSPOnvifMediaFactory}; use crate::{ffi, RTSPContext, RTSPOnvifMediaFactory};
mod sealed { pub trait RTSPOnvifMediaFactoryExtManual: IsA<RTSPOnvifMediaFactory> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::RTSPOnvifMediaFactory>> Sealed for T {}
}
pub trait RTSPOnvifMediaFactoryExtManual:
sealed::Sealed + IsA<RTSPOnvifMediaFactory> + 'static
{
#[doc(alias = "gst_rtsp_onvif_media_factory_requires_backchannel")] #[doc(alias = "gst_rtsp_onvif_media_factory_requires_backchannel")]
fn requires_backchannel(&self, ctx: &RTSPContext) -> bool { fn requires_backchannel(&self, ctx: &RTSPContext) -> bool {
skip_assert_initialized!(); skip_assert_initialized!();

View file

@ -4,12 +4,7 @@ use glib::{prelude::*, source::SourceId, translate::*};
use crate::{ffi, RTSPServer}; use crate::{ffi, RTSPServer};
mod sealed { pub trait RTSPServerExtManual: IsA<RTSPServer> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::RTSPServer>> Sealed for T {}
}
pub trait RTSPServerExtManual: sealed::Sealed + IsA<RTSPServer> + 'static {
#[doc(alias = "gst_rtsp_server_attach")] #[doc(alias = "gst_rtsp_server_attach")]
fn attach( fn attach(
&self, &self,

View file

@ -6,12 +6,7 @@ use glib::{prelude::*, translate::*};
use crate::{ffi, RTSPSession, RTSPSessionMedia}; use crate::{ffi, RTSPSession, RTSPSessionMedia};
mod sealed { pub trait RTSPSessionExtManual: IsA<super::RTSPSession> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::RTSPSession>> Sealed for T {}
}
pub trait RTSPSessionExtManual: sealed::Sealed + IsA<super::RTSPSession> + 'static {
#[doc(alias = "gst_rtsp_session_dup_media")] #[doc(alias = "gst_rtsp_session_dup_media")]
#[doc(alias = "gst_rtsp_session_get_media")] #[doc(alias = "gst_rtsp_session_get_media")]
fn media(&self, path: &str) -> (Option<RTSPSessionMedia>, i32) { fn media(&self, path: &str) -> (Option<RTSPSessionMedia>, i32) {

View file

@ -36,12 +36,7 @@ fn into_raw_watch<F: FnMut(&RTSPSessionPool) -> ControlFlow + Send + 'static>(fu
Box::into_raw(func) as gpointer Box::into_raw(func) as gpointer
} }
mod sealed { pub trait RTSPSessionPoolExtManual: IsA<RTSPSessionPool> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::RTSPSessionPool>> Sealed for T {}
}
pub trait RTSPSessionPoolExtManual: sealed::Sealed + IsA<RTSPSessionPool> + 'static {
#[doc(alias = "gst_rtsp_session_pool_create_watch")] #[doc(alias = "gst_rtsp_session_pool_create_watch")]
fn create_watch<F>(&self, name: Option<&str>, priority: Priority, func: F) -> glib::Source fn create_watch<F>(&self, name: Option<&str>, priority: Priority, func: F) -> glib::Source
where where

View file

@ -3,12 +3,7 @@ use gst::prelude::*;
use crate::{ffi, VideoAggregator}; use crate::{ffi, VideoAggregator};
mod sealed { pub trait VideoAggregatorExtManual: IsA<VideoAggregator> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::VideoAggregator>> Sealed for T {}
}
pub trait VideoAggregatorExtManual: sealed::Sealed + IsA<VideoAggregator> + 'static {
fn video_info(&self) -> Option<crate::VideoInfo> { fn video_info(&self) -> Option<crate::VideoInfo> {
unsafe { unsafe {
let ptr = self.as_ptr() as *mut ffi::GstVideoAggregator; let ptr = self.as_ptr() as *mut ffi::GstVideoAggregator;

View file

@ -8,14 +8,7 @@ use glib::{
use crate::{ffi, VideoAggregatorConvertPad}; use crate::{ffi, VideoAggregatorConvertPad};
mod sealed { pub trait VideoAggregatorConvertPadExtManual: IsA<VideoAggregatorConvertPad> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::VideoAggregatorConvertPad>> Sealed for T {}
}
pub trait VideoAggregatorConvertPadExtManual:
sealed::Sealed + IsA<VideoAggregatorConvertPad> + 'static
{
#[doc(alias = "converter-config")] #[doc(alias = "converter-config")]
fn converter_config(&self) -> Option<crate::VideoConverterConfig> { fn converter_config(&self) -> Option<crate::VideoConverterConfig> {
ObjectExt::property::<Option<gst::Structure>>(self.as_ref(), "converter-config") ObjectExt::property::<Option<gst::Structure>>(self.as_ref(), "converter-config")

View file

@ -3,12 +3,7 @@ use gst::prelude::*;
use crate::{ffi, subclass::AggregateFramesToken, VideoAggregatorPad}; use crate::{ffi, subclass::AggregateFramesToken, VideoAggregatorPad};
mod sealed { pub trait VideoAggregatorPadExtManual: IsA<VideoAggregatorPad> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::VideoAggregatorPad>> Sealed for T {}
}
pub trait VideoAggregatorPadExtManual: sealed::Sealed + IsA<VideoAggregatorPad> + 'static {
#[doc(alias = "gst_video_aggregator_pad_has_current_buffer")] #[doc(alias = "gst_video_aggregator_pad_has_current_buffer")]
fn has_current_buffer(&self, _token: &AggregateFramesToken) -> bool { fn has_current_buffer(&self, _token: &AggregateFramesToken) -> bool {
unsafe { unsafe {

View file

@ -28,12 +28,7 @@ extern "C" {
) -> gst::ffi::GstFlowReturn; ) -> gst::ffi::GstFlowReturn;
} }
mod sealed { pub trait VideoDecoderExtManual: IsA<VideoDecoder> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::VideoDecoder>> Sealed for T {}
}
pub trait VideoDecoderExtManual: sealed::Sealed + IsA<VideoDecoder> + 'static {
#[doc(alias = "gst_video_decoder_allocate_output_frame")] #[doc(alias = "gst_video_decoder_allocate_output_frame")]
fn allocate_output_frame( fn allocate_output_frame(
&self, &self,

View file

@ -10,12 +10,8 @@ use crate::{
video_codec_state::{InNegotiation, Readable, VideoCodecState, VideoCodecStateContext}, video_codec_state::{InNegotiation, Readable, VideoCodecState, VideoCodecStateContext},
VideoCodecFrame, VideoEncoder, VideoCodecFrame, VideoEncoder,
}; };
mod sealed {
pub trait Sealed {}
impl<T: super::IsA<super::VideoEncoder>> Sealed for T {}
}
pub trait VideoEncoderExtManual: sealed::Sealed + IsA<VideoEncoder> + 'static { pub trait VideoEncoderExtManual: IsA<VideoEncoder> + 'static {
#[doc(alias = "gst_video_encoder_allocate_output_frame")] #[doc(alias = "gst_video_encoder_allocate_output_frame")]
fn allocate_output_frame( fn allocate_output_frame(
&self, &self,

View file

@ -6,12 +6,7 @@ use gst_base::prelude::*;
use crate::{ffi, VideoFilter}; use crate::{ffi, VideoFilter};
mod sealed { pub trait VideoFilterExtManual: IsA<VideoFilter> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::VideoFilter>> Sealed for T {}
}
pub trait VideoFilterExtManual: sealed::Sealed + IsA<VideoFilter> + 'static {
fn input_video_info(&self) -> Option<crate::VideoInfo> { fn input_video_info(&self) -> Option<crate::VideoInfo> {
unsafe { unsafe {
let ptr = self.as_ptr() as *mut ffi::GstVideoFilter; let ptr = self.as_ptr() as *mut ffi::GstVideoFilter;

View file

@ -8,11 +8,11 @@ use glib::translate::{from_glib, from_glib_none, Borrowed, ToGlibPtr};
pub enum Readable {} pub enum Readable {}
pub enum Writable {} pub enum Writable {}
pub trait IsVideoFrame { pub unsafe trait IsVideoFrame {
fn as_raw(&self) -> &ffi::GstVideoFrame; fn as_raw(&self) -> &ffi::GstVideoFrame;
} }
impl<T> IsVideoFrame for VideoFrame<T> { unsafe impl<T> IsVideoFrame for VideoFrame<T> {
#[inline] #[inline]
fn as_raw(&self) -> &ffi::GstVideoFrame { fn as_raw(&self) -> &ffi::GstVideoFrame {
&self.frame &self.frame
@ -39,12 +39,7 @@ impl<T> fmt::Debug for VideoFrame<T> {
} }
} }
mod sealed { pub trait VideoFrameExt: IsVideoFrame {
pub trait Sealed {}
impl<T: super::IsVideoFrame> Sealed for T {}
}
pub trait VideoFrameExt: sealed::Sealed + IsVideoFrame {
#[inline] #[inline]
fn as_ptr(&self) -> *const ffi::GstVideoFrame { fn as_ptr(&self) -> *const ffi::GstVideoFrame {
self.as_raw() as _ self.as_raw() as _
@ -556,7 +551,7 @@ pub struct VideoFrameRef<T> {
phantom: PhantomData<T>, phantom: PhantomData<T>,
} }
impl<T> IsVideoFrame for VideoFrameRef<T> { unsafe impl<T> IsVideoFrame for VideoFrameRef<T> {
#[inline] #[inline]
fn as_raw(&self) -> &ffi::GstVideoFrame { fn as_raw(&self) -> &ffi::GstVideoFrame {
&self.frame &self.frame

View file

@ -5,12 +5,7 @@ use libc::uintptr_t;
use crate::{ffi, VideoOverlay}; use crate::{ffi, VideoOverlay};
mod sealed { pub trait VideoOverlayExtManual: IsA<VideoOverlay> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::VideoOverlay>> Sealed for T {}
}
pub trait VideoOverlayExtManual: sealed::Sealed + IsA<VideoOverlay> + 'static {
unsafe fn set_window_handle(&self, handle: uintptr_t) { unsafe fn set_window_handle(&self, handle: uintptr_t) {
ffi::gst_video_overlay_set_window_handle(self.as_ref().to_glib_none().0, handle) ffi::gst_video_overlay_set_window_handle(self.as_ref().to_glib_none().0, handle)
} }

View file

@ -4,12 +4,7 @@ use glib::{prelude::*, translate::*};
use crate::{ffi, WebRTCICE, WebRTCICEStream}; use crate::{ffi, WebRTCICE, WebRTCICEStream};
mod sealed { pub trait WebRTCICEExtManual: IsA<WebRTCICE> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::WebRTCICE>> Sealed for T {}
}
pub trait WebRTCICEExtManual: sealed::Sealed + IsA<WebRTCICE> + 'static {
#[doc(alias = "gst_webrtc_ice_add_candidate")] #[doc(alias = "gst_webrtc_ice_add_candidate")]
fn add_candidate(&self, stream: &impl IsA<WebRTCICEStream>, candidate: &str) { fn add_candidate(&self, stream: &impl IsA<WebRTCICEStream>, candidate: &str) {
#[cfg(not(feature = "v1_24"))] #[cfg(not(feature = "v1_24"))]

View file

@ -42,12 +42,7 @@ impl Bin {
} }
} }
mod sealed { pub trait GstBinExtManual: IsA<Bin> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::Bin>> Sealed for T {}
}
pub trait GstBinExtManual: sealed::Sealed + IsA<Bin> + 'static {
#[doc(alias = "gst_bin_add_many")] #[doc(alias = "gst_bin_add_many")]
fn add_many( fn add_many(
&self, &self,

View file

@ -345,12 +345,7 @@ impl FromGlibPtrNone<*mut ffi::GstBufferPoolAcquireParams> for BufferPoolAcquire
} }
} }
mod sealed { pub trait BufferPoolExtManual: IsA<BufferPool> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::BufferPool>> Sealed for T {}
}
pub trait BufferPoolExtManual: sealed::Sealed + IsA<BufferPool> + 'static {
#[doc(alias = "get_config")] #[doc(alias = "get_config")]
#[doc(alias = "gst_buffer_pool_get_config")] #[doc(alias = "gst_buffer_pool_get_config")]
fn config(&self) -> BufferPoolConfig { fn config(&self) -> BufferPoolConfig {

View file

@ -17,19 +17,20 @@ cfg_if::cfg_if! {
} }
use super::Bus; use super::Bus;
use glib::prelude::*;
pub trait UnixBusExtManual: 'static { pub trait UnixBusExtManual: IsA<Bus> + 'static {
#[doc(alias = "get_pollfd")] #[doc(alias = "get_pollfd")]
#[doc(alias = "gst_bus_get_pollfd")] #[doc(alias = "gst_bus_get_pollfd")]
fn pollfd(&self) -> unix::io::RawFd; fn pollfd(&self) -> unix::io::RawFd;
} }
impl UnixBusExtManual for Bus { impl<T: IsA<Bus>> UnixBusExtManual for T {
fn pollfd(&self) -> unix::io::RawFd { fn pollfd(&self) -> unix::io::RawFd {
#[cfg(unix)] #[cfg(unix)]
unsafe { unsafe {
let mut pollfd = mem::MaybeUninit::uninit(); let mut pollfd = mem::MaybeUninit::uninit();
crate::ffi::gst_bus_get_pollfd(self.to_glib_none().0, pollfd.as_mut_ptr()); crate::ffi::gst_bus_get_pollfd(self.as_ref().to_glib_none().0, pollfd.as_mut_ptr());
let pollfd = pollfd.assume_init(); let pollfd = pollfd.assume_init();
pollfd.fd pollfd.fd
} }

View file

@ -16,20 +16,21 @@ cfg_if::cfg_if! {
} }
} }
use glib::prelude::*;
use super::Bus; use super::Bus;
pub trait WindowsBusExtManual: 'static { pub trait WindowsBusExtManual: IsA<Bus> + 'static {
#[doc(alias = "get_pollfd")] #[doc(alias = "get_pollfd")]
#[doc(alias = "gst_bus_get_pollfd")] #[doc(alias = "gst_bus_get_pollfd")]
fn pollfd(&self) -> windows::io::RawHandle; fn pollfd(&self) -> windows::io::RawHandle;
} }
impl WindowsBusExtManual for Bus { impl<T: IsA<Bus>> WindowsBusExtManual for T {
fn pollfd(&self) -> windows::io::RawHandle { fn pollfd(&self) -> windows::io::RawHandle {
#[cfg(windows)] #[cfg(windows)]
unsafe { unsafe {
let mut pollfd = mem::MaybeUninit::uninit(); let mut pollfd = mem::MaybeUninit::uninit();
crate::ffi::gst_bus_get_pollfd(self.to_glib_none().0, pollfd.as_mut_ptr()); crate::ffi::gst_bus_get_pollfd(self.as_ref().to_glib_none().0, pollfd.as_mut_ptr());
let pollfd = pollfd.assume_init(); let pollfd = pollfd.assume_init();
pollfd.fd as *mut _ pollfd.fd as *mut _
} }

View file

@ -6,12 +6,7 @@ use glib::{prelude::*, translate::*};
use crate::ChildProxy; use crate::ChildProxy;
mod sealed { pub trait ChildProxyExtManual: IsA<ChildProxy> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::ChildProxy>> Sealed for T {}
}
pub trait ChildProxyExtManual: sealed::Sealed + IsA<ChildProxy> + 'static {
#[doc(alias = "gst_child_proxy_lookup")] #[doc(alias = "gst_child_proxy_lookup")]
fn lookup(&self, name: &str) -> Result<(glib::Object, glib::ParamSpec), glib::BoolError> { fn lookup(&self, name: &str) -> Result<(glib::Object, glib::ParamSpec), glib::BoolError> {
unsafe { unsafe {

View file

@ -420,12 +420,7 @@ impl Clock {
} }
} }
mod sealed { pub trait ClockExtManual: IsA<Clock> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::Clock>> Sealed for T {}
}
pub trait ClockExtManual: sealed::Sealed + IsA<Clock> + 'static {
#[doc(alias = "gst_clock_new_periodic_id")] #[doc(alias = "gst_clock_new_periodic_id")]
fn new_periodic_id(&self, start_time: ClockTime, interval: ClockTime) -> PeriodicClockId { fn new_periodic_id(&self, start_time: ClockTime, interval: ClockTime) -> PeriodicClockId {
assert_ne!(interval, ClockTime::ZERO); assert_ne!(interval, ClockTime::ZERO);

View file

@ -4,12 +4,7 @@ use glib::{prelude::*, translate::*};
use crate::{ClockTime, ControlBinding}; use crate::{ClockTime, ControlBinding};
mod sealed { pub trait ControlBindingExtManual: IsA<ControlBinding> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::ControlBinding>> Sealed for T {}
}
pub trait ControlBindingExtManual: sealed::Sealed + IsA<ControlBinding> + 'static {
#[doc(alias = "get_g_value_array")] #[doc(alias = "get_g_value_array")]
#[doc(alias = "gst_control_binding_get_g_value_array")] #[doc(alias = "gst_control_binding_get_g_value_array")]
fn g_value_array( fn g_value_array(

View file

@ -4,12 +4,7 @@ use glib::{prelude::*, translate::*};
use crate::{ClockTime, ControlSource}; use crate::{ClockTime, ControlSource};
mod sealed { pub trait ControlSourceExtManual: IsA<ControlSource> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::ControlSource>> Sealed for T {}
}
pub trait ControlSourceExtManual: sealed::Sealed + IsA<ControlSource> + 'static {
#[doc(alias = "get_value_array")] #[doc(alias = "get_value_array")]
#[doc(alias = "gst_control_source_get_value_array")] #[doc(alias = "gst_control_source_get_value_array")]
fn value_array( fn value_array(

View file

@ -26,12 +26,8 @@ impl FromGlib<libc::c_uint> for DeviceMonitorFilterId {
DeviceMonitorFilterId(NonZeroU32::new_unchecked(val)) DeviceMonitorFilterId(NonZeroU32::new_unchecked(val))
} }
} }
mod sealed {
pub trait Sealed {}
impl<T: super::IsA<super::DeviceMonitor>> Sealed for T {}
}
pub trait DeviceMonitorExtManual: sealed::Sealed + IsA<DeviceMonitor> + 'static { pub trait DeviceMonitorExtManual: IsA<DeviceMonitor> + 'static {
#[doc(alias = "gst_device_monitor_add_filter")] #[doc(alias = "gst_device_monitor_add_filter")]
fn add_filter( fn add_filter(
&self, &self,

View file

@ -29,12 +29,7 @@ impl DeviceProvider {
} }
} }
mod sealed { pub trait DeviceProviderExtManual: IsA<DeviceProvider> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::DeviceProvider>> Sealed for T {}
}
pub trait DeviceProviderExtManual: sealed::Sealed + IsA<DeviceProvider> + 'static {
#[doc(alias = "get_metadata")] #[doc(alias = "get_metadata")]
#[doc(alias = "gst_device_provider_class_get_metadata")] #[doc(alias = "gst_device_provider_class_get_metadata")]
fn metadata<'a>(&self, key: &str) -> Option<&'a str> { fn metadata<'a>(&self, key: &str) -> Option<&'a str> {

View file

@ -102,12 +102,7 @@ impl FromGlib<libc::c_ulong> for NotifyWatchId {
} }
} }
mod sealed { pub trait ElementExtManual: IsA<Element> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::Element>> Sealed for T {}
}
pub trait ElementExtManual: sealed::Sealed + IsA<Element> + 'static {
#[doc(alias = "get_element_class")] #[doc(alias = "get_element_class")]
#[inline] #[inline]
fn element_class(&self) -> &glib::Class<Element> { fn element_class(&self) -> &glib::Class<Element> {

View file

@ -4,12 +4,7 @@ use glib::prelude::*;
use crate::value::GstValueExt; use crate::value::GstValueExt;
mod sealed { pub trait GObjectExtManualGst: IsA<glib::Object> + 'static {
pub trait Sealed {}
impl<T: super::IsA<glib::Object>> Sealed for T {}
}
pub trait GObjectExtManualGst: sealed::Sealed + IsA<glib::Object> + 'static {
#[doc(alias = "gst_util_set_object_arg")] #[doc(alias = "gst_util_set_object_arg")]
#[track_caller] #[track_caller]
fn set_property_from_str(&self, name: &str, value: &str) { fn set_property_from_str(&self, name: &str, value: &str) {

View file

@ -4,12 +4,7 @@ use glib::{prelude::*, signal::SignalHandlerId, translate::*};
use crate::{ffi, ClockTime, Object, ObjectFlags}; use crate::{ffi, ClockTime, Object, ObjectFlags};
mod sealed { pub trait GstObjectExtManual: IsA<Object> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::Object>> Sealed for T {}
}
pub trait GstObjectExtManual: sealed::Sealed + IsA<Object> + 'static {
#[doc(alias = "deep-notify")] #[doc(alias = "deep-notify")]
fn connect_deep_notify< fn connect_deep_notify<
F: Fn(&Self, &crate::Object, &glib::ParamSpec) + Send + Sync + 'static, F: Fn(&Self, &crate::Object, &glib::ParamSpec) + Send + Sync + 'static,

View file

@ -195,12 +195,7 @@ pub enum EventForeachAction {
Replace(Event), Replace(Event),
} }
mod sealed { pub trait PadExtManual: IsA<Pad> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::Pad>> Sealed for T {}
}
pub trait PadExtManual: sealed::Sealed + IsA<Pad> + 'static {
#[doc(alias = "gst_pad_add_probe")] #[doc(alias = "gst_pad_add_probe")]
fn add_probe<F>(&self, mask: PadProbeType, func: F) -> Option<PadProbeId> fn add_probe<F>(&self, mask: PadProbeType, func: F) -> Option<PadProbeId>
where where

View file

@ -40,12 +40,7 @@ impl Pipeline {
} }
} }
mod sealed { pub trait GstPipelineExtManual: IsA<Pipeline> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::Pipeline>> Sealed for T {}
}
pub trait GstPipelineExtManual: sealed::Sealed + IsA<Pipeline> + 'static {
fn set_pipeline_flags(&self, flags: PipelineFlags) { fn set_pipeline_flags(&self, flags: PipelineFlags) {
unsafe { unsafe {
let ptr: *mut ffi::GstObject = self.as_ptr() as *mut _; let ptr: *mut ffi::GstObject = self.as_ptr() as *mut _;

View file

@ -7,12 +7,7 @@ use glib::{
use crate::{ffi, PluginFeature, Rank}; use crate::{ffi, PluginFeature, Rank};
mod sealed { pub trait PluginFeatureExtManual: IsA<PluginFeature> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::PluginFeature>> Sealed for T {}
}
pub trait PluginFeatureExtManual: sealed::Sealed + IsA<PluginFeature> + Sized + 'static {
#[doc(alias = "get_rank")] #[doc(alias = "get_rank")]
#[doc(alias = "gst_plugin_feature_get_rank")] #[doc(alias = "gst_plugin_feature_get_rank")]
fn rank(&self) -> Rank { fn rank(&self) -> Rank {

View file

@ -4,12 +4,7 @@ use glib::{prelude::*, translate::*};
use crate::{ffi, tags::*, TagMergeMode, TagSetter}; use crate::{ffi, tags::*, TagMergeMode, TagSetter};
mod sealed { pub trait TagSetterExtManual: IsA<TagSetter> + 'static {
pub trait Sealed {}
impl<T: super::IsA<super::TagSetter>> Sealed for T {}
}
pub trait TagSetterExtManual: sealed::Sealed + IsA<TagSetter> + 'static {
#[doc(alias = "gst_tag_setter_add_tag_value")] #[doc(alias = "gst_tag_setter_add_tag_value")]
fn add_tag<'a, T: Tag<'a>>(&self, value: &T::TagType, mode: TagMergeMode) { fn add_tag<'a, T: Tag<'a>>(&self, value: &T::TagType, mode: TagMergeMode) {
unsafe { unsafe {

View file

@ -10,12 +10,8 @@ unsafe extern "C" fn task_pool_trampoline<P: FnOnce() + Send + 'static>(data: gp
let func = Box::from_raw(data as *mut P); let func = Box::from_raw(data as *mut P);
func() func()
} }
mod sealed {
pub trait Sealed {}
impl<T: super::IsA<super::TaskPool>> Sealed for T {}
}
pub trait TaskPoolExtManual: sealed::Sealed + IsA<TaskPool> + 'static { pub trait TaskPoolExtManual: IsA<TaskPool> + 'static {
#[doc(alias = "gst_task_pool_push")] #[doc(alias = "gst_task_pool_push")]
fn push<P: FnOnce() + Send + 'static>( fn push<P: FnOnce() + Send + 'static>(
&self, &self,