gstreamer/auto/
device_provider.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
4// DO NOT EDIT
5
6use crate::{ffi, Bus, Device, DeviceProviderFactory, Object};
7use glib::{
8    object::ObjectType as _,
9    prelude::*,
10    signal::{connect_raw, SignalHandlerId},
11    translate::*,
12};
13use std::boxed::Box as Box_;
14
15glib::wrapper! {
16    #[doc(alias = "GstDeviceProvider")]
17    pub struct DeviceProvider(Object<ffi::GstDeviceProvider, ffi::GstDeviceProviderClass>) @extends Object;
18
19    match fn {
20        type_ => || ffi::gst_device_provider_get_type(),
21    }
22}
23
24impl DeviceProvider {
25    pub const NONE: Option<&'static DeviceProvider> = None;
26}
27
28unsafe impl Send for DeviceProvider {}
29unsafe impl Sync for DeviceProvider {}
30
31mod sealed {
32    pub trait Sealed {}
33    impl<T: super::IsA<super::DeviceProvider>> Sealed for T {}
34}
35
36pub trait DeviceProviderExt: IsA<DeviceProvider> + sealed::Sealed + 'static {
37    #[doc(alias = "gst_device_provider_can_monitor")]
38    fn can_monitor(&self) -> bool {
39        unsafe {
40            from_glib(ffi::gst_device_provider_can_monitor(
41                self.as_ref().to_glib_none().0,
42            ))
43        }
44    }
45
46    #[doc(alias = "gst_device_provider_device_add")]
47    fn device_add(&self, device: &impl IsA<Device>) {
48        unsafe {
49            ffi::gst_device_provider_device_add(
50                self.as_ref().to_glib_none().0,
51                device.as_ref().to_glib_none().0,
52            );
53        }
54    }
55
56    #[cfg(feature = "v1_16")]
57    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
58    #[doc(alias = "gst_device_provider_device_changed")]
59    fn device_changed(&self, device: &impl IsA<Device>, changed_device: &impl IsA<Device>) {
60        unsafe {
61            ffi::gst_device_provider_device_changed(
62                self.as_ref().to_glib_none().0,
63                device.as_ref().to_glib_none().0,
64                changed_device.as_ref().to_glib_none().0,
65            );
66        }
67    }
68
69    #[doc(alias = "gst_device_provider_device_remove")]
70    fn device_remove(&self, device: &impl IsA<Device>) {
71        unsafe {
72            ffi::gst_device_provider_device_remove(
73                self.as_ref().to_glib_none().0,
74                device.as_ref().to_glib_none().0,
75            );
76        }
77    }
78
79    #[doc(alias = "gst_device_provider_get_bus")]
80    #[doc(alias = "get_bus")]
81    fn bus(&self) -> Bus {
82        unsafe {
83            from_glib_full(ffi::gst_device_provider_get_bus(
84                self.as_ref().to_glib_none().0,
85            ))
86        }
87    }
88
89    #[doc(alias = "gst_device_provider_get_factory")]
90    #[doc(alias = "get_factory")]
91    fn factory(&self) -> Option<DeviceProviderFactory> {
92        unsafe {
93            from_glib_none(ffi::gst_device_provider_get_factory(
94                self.as_ref().to_glib_none().0,
95            ))
96        }
97    }
98
99    #[doc(alias = "gst_device_provider_get_hidden_providers")]
100    #[doc(alias = "get_hidden_providers")]
101    fn hidden_providers(&self) -> Vec<glib::GString> {
102        unsafe {
103            FromGlibPtrContainer::from_glib_full(ffi::gst_device_provider_get_hidden_providers(
104                self.as_ref().to_glib_none().0,
105            ))
106        }
107    }
108
109    #[doc(alias = "gst_device_provider_hide_provider")]
110    fn hide_provider(&self, name: &str) {
111        unsafe {
112            ffi::gst_device_provider_hide_provider(
113                self.as_ref().to_glib_none().0,
114                name.to_glib_none().0,
115            );
116        }
117    }
118
119    #[cfg(feature = "v1_20")]
120    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
121    #[doc(alias = "gst_device_provider_is_started")]
122    fn is_started(&self) -> bool {
123        unsafe {
124            from_glib(ffi::gst_device_provider_is_started(
125                self.as_ref().to_glib_none().0,
126            ))
127        }
128    }
129
130    #[doc(alias = "gst_device_provider_start")]
131    fn start(&self) -> Result<(), glib::error::BoolError> {
132        unsafe {
133            glib::result_from_gboolean!(
134                ffi::gst_device_provider_start(self.as_ref().to_glib_none().0),
135                "Failed to start"
136            )
137        }
138    }
139
140    #[doc(alias = "gst_device_provider_stop")]
141    fn stop(&self) {
142        unsafe {
143            ffi::gst_device_provider_stop(self.as_ref().to_glib_none().0);
144        }
145    }
146
147    #[doc(alias = "gst_device_provider_unhide_provider")]
148    fn unhide_provider(&self, name: &str) {
149        unsafe {
150            ffi::gst_device_provider_unhide_provider(
151                self.as_ref().to_glib_none().0,
152                name.to_glib_none().0,
153            );
154        }
155    }
156
157    #[doc(alias = "provider-hidden")]
158    fn connect_provider_hidden<F: Fn(&Self, &str) + Send + Sync + 'static>(
159        &self,
160        f: F,
161    ) -> SignalHandlerId {
162        unsafe extern "C" fn provider_hidden_trampoline<
163            P: IsA<DeviceProvider>,
164            F: Fn(&P, &str) + Send + Sync + 'static,
165        >(
166            this: *mut ffi::GstDeviceProvider,
167            object: *mut std::ffi::c_char,
168            f: glib::ffi::gpointer,
169        ) {
170            let f: &F = &*(f as *const F);
171            f(
172                DeviceProvider::from_glib_borrow(this).unsafe_cast_ref(),
173                &glib::GString::from_glib_borrow(object),
174            )
175        }
176        unsafe {
177            let f: Box_<F> = Box_::new(f);
178            connect_raw(
179                self.as_ptr() as *mut _,
180                b"provider-hidden\0".as_ptr() as *const _,
181                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
182                    provider_hidden_trampoline::<Self, F> as *const (),
183                )),
184                Box_::into_raw(f),
185            )
186        }
187    }
188
189    #[doc(alias = "provider-unhidden")]
190    fn connect_provider_unhidden<F: Fn(&Self, &str) + Send + Sync + 'static>(
191        &self,
192        f: F,
193    ) -> SignalHandlerId {
194        unsafe extern "C" fn provider_unhidden_trampoline<
195            P: IsA<DeviceProvider>,
196            F: Fn(&P, &str) + Send + Sync + 'static,
197        >(
198            this: *mut ffi::GstDeviceProvider,
199            object: *mut std::ffi::c_char,
200            f: glib::ffi::gpointer,
201        ) {
202            let f: &F = &*(f as *const F);
203            f(
204                DeviceProvider::from_glib_borrow(this).unsafe_cast_ref(),
205                &glib::GString::from_glib_borrow(object),
206            )
207        }
208        unsafe {
209            let f: Box_<F> = Box_::new(f);
210            connect_raw(
211                self.as_ptr() as *mut _,
212                b"provider-unhidden\0".as_ptr() as *const _,
213                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
214                    provider_unhidden_trampoline::<Self, F> as *const (),
215                )),
216                Box_::into_raw(f),
217            )
218        }
219    }
220}
221
222impl<O: IsA<DeviceProvider>> DeviceProviderExt for O {}