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 // DO NOT EDIT
4 
5 use glib;
6 use glib::object::Cast;
7 use glib::object::IsA;
8 use glib::signal::connect_raw;
9 use glib::signal::SignalHandlerId;
10 use glib::translate::*;
11 use glib::GString;
12 use glib_sys;
13 use gst_sys;
14 use libc;
15 use std::boxed::Box as Box_;
16 use std::mem::transmute;
17 use Bus;
18 use Device;
19 use DeviceProviderFactory;
20 use Object;
21 
22 glib_wrapper! {
23     pub struct DeviceProvider(Object<gst_sys::GstDeviceProvider, gst_sys::GstDeviceProviderClass, DeviceProviderClass>) @extends Object;
24 
25     match fn {
26         get_type => || gst_sys::gst_device_provider_get_type(),
27     }
28 }
29 
30 unsafe impl Send for DeviceProvider {}
31 unsafe impl Sync for DeviceProvider {}
32 
33 pub const NONE_DEVICE_PROVIDER: Option<&DeviceProvider> = None;
34 
35 pub trait DeviceProviderExt: 'static {
can_monitor(&self) -> bool36     fn can_monitor(&self) -> bool;
37 
device_add<P: IsA<Device>>(&self, device: &P)38     fn device_add<P: IsA<Device>>(&self, device: &P);
39 
40     #[cfg(any(feature = "v1_16", feature = "dox"))]
device_changed<P: IsA<Device>, Q: IsA<Device>>(&self, device: &P, changed_device: &Q)41     fn device_changed<P: IsA<Device>, Q: IsA<Device>>(&self, device: &P, changed_device: &Q);
42 
device_remove<P: IsA<Device>>(&self, device: &P)43     fn device_remove<P: IsA<Device>>(&self, device: &P);
44 
get_bus(&self) -> Bus45     fn get_bus(&self) -> Bus;
46 
get_devices(&self) -> Vec<Device>47     fn get_devices(&self) -> Vec<Device>;
48 
get_factory(&self) -> Option<DeviceProviderFactory>49     fn get_factory(&self) -> Option<DeviceProviderFactory>;
50 
get_hidden_providers(&self) -> Vec<GString>51     fn get_hidden_providers(&self) -> Vec<GString>;
52 
hide_provider(&self, name: &str)53     fn hide_provider(&self, name: &str);
54 
start(&self) -> Result<(), glib::error::BoolError>55     fn start(&self) -> Result<(), glib::error::BoolError>;
56 
stop(&self)57     fn stop(&self);
58 
unhide_provider(&self, name: &str)59     fn unhide_provider(&self, name: &str);
60 
connect_provider_hidden<F: Fn(&Self, &str) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId61     fn connect_provider_hidden<F: Fn(&Self, &str) + Send + Sync + 'static>(
62         &self,
63         f: F,
64     ) -> SignalHandlerId;
65 
connect_provider_unhidden<F: Fn(&Self, &str) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId66     fn connect_provider_unhidden<F: Fn(&Self, &str) + Send + Sync + 'static>(
67         &self,
68         f: F,
69     ) -> SignalHandlerId;
70 }
71 
72 impl<O: IsA<DeviceProvider>> DeviceProviderExt for O {
can_monitor(&self) -> bool73     fn can_monitor(&self) -> bool {
74         unsafe {
75             from_glib(gst_sys::gst_device_provider_can_monitor(
76                 self.as_ref().to_glib_none().0,
77             ))
78         }
79     }
80 
device_add<P: IsA<Device>>(&self, device: &P)81     fn device_add<P: IsA<Device>>(&self, device: &P) {
82         unsafe {
83             gst_sys::gst_device_provider_device_add(
84                 self.as_ref().to_glib_none().0,
85                 device.as_ref().to_glib_none().0,
86             );
87         }
88     }
89 
90     #[cfg(any(feature = "v1_16", feature = "dox"))]
device_changed<P: IsA<Device>, Q: IsA<Device>>(&self, device: &P, changed_device: &Q)91     fn device_changed<P: IsA<Device>, Q: IsA<Device>>(&self, device: &P, changed_device: &Q) {
92         unsafe {
93             gst_sys::gst_device_provider_device_changed(
94                 self.as_ref().to_glib_none().0,
95                 device.as_ref().to_glib_none().0,
96                 changed_device.as_ref().to_glib_none().0,
97             );
98         }
99     }
100 
device_remove<P: IsA<Device>>(&self, device: &P)101     fn device_remove<P: IsA<Device>>(&self, device: &P) {
102         unsafe {
103             gst_sys::gst_device_provider_device_remove(
104                 self.as_ref().to_glib_none().0,
105                 device.as_ref().to_glib_none().0,
106             );
107         }
108     }
109 
get_bus(&self) -> Bus110     fn get_bus(&self) -> Bus {
111         unsafe {
112             from_glib_full(gst_sys::gst_device_provider_get_bus(
113                 self.as_ref().to_glib_none().0,
114             ))
115         }
116     }
117 
get_devices(&self) -> Vec<Device>118     fn get_devices(&self) -> Vec<Device> {
119         unsafe {
120             FromGlibPtrContainer::from_glib_full(gst_sys::gst_device_provider_get_devices(
121                 self.as_ref().to_glib_none().0,
122             ))
123         }
124     }
125 
get_factory(&self) -> Option<DeviceProviderFactory>126     fn get_factory(&self) -> Option<DeviceProviderFactory> {
127         unsafe {
128             from_glib_none(gst_sys::gst_device_provider_get_factory(
129                 self.as_ref().to_glib_none().0,
130             ))
131         }
132     }
133 
get_hidden_providers(&self) -> Vec<GString>134     fn get_hidden_providers(&self) -> Vec<GString> {
135         unsafe {
136             FromGlibPtrContainer::from_glib_full(gst_sys::gst_device_provider_get_hidden_providers(
137                 self.as_ref().to_glib_none().0,
138             ))
139         }
140     }
141 
hide_provider(&self, name: &str)142     fn hide_provider(&self, name: &str) {
143         unsafe {
144             gst_sys::gst_device_provider_hide_provider(
145                 self.as_ref().to_glib_none().0,
146                 name.to_glib_none().0,
147             );
148         }
149     }
150 
start(&self) -> Result<(), glib::error::BoolError>151     fn start(&self) -> Result<(), glib::error::BoolError> {
152         unsafe {
153             glib_result_from_gboolean!(
154                 gst_sys::gst_device_provider_start(self.as_ref().to_glib_none().0),
155                 "Failed to start"
156             )
157         }
158     }
159 
stop(&self)160     fn stop(&self) {
161         unsafe {
162             gst_sys::gst_device_provider_stop(self.as_ref().to_glib_none().0);
163         }
164     }
165 
unhide_provider(&self, name: &str)166     fn unhide_provider(&self, name: &str) {
167         unsafe {
168             gst_sys::gst_device_provider_unhide_provider(
169                 self.as_ref().to_glib_none().0,
170                 name.to_glib_none().0,
171             );
172         }
173     }
174 
connect_provider_hidden<F: Fn(&Self, &str) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId175     fn connect_provider_hidden<F: Fn(&Self, &str) + Send + Sync + 'static>(
176         &self,
177         f: F,
178     ) -> SignalHandlerId {
179         unsafe extern "C" fn provider_hidden_trampoline<
180             P,
181             F: Fn(&P, &str) + Send + Sync + 'static,
182         >(
183             this: *mut gst_sys::GstDeviceProvider,
184             object: *mut libc::c_char,
185             f: glib_sys::gpointer,
186         ) where
187             P: IsA<DeviceProvider>,
188         {
189             let f: &F = &*(f as *const F);
190             f(
191                 &DeviceProvider::from_glib_borrow(this).unsafe_cast(),
192                 &GString::from_glib_borrow(object),
193             )
194         }
195         unsafe {
196             let f: Box_<F> = Box_::new(f);
197             connect_raw(
198                 self.as_ptr() as *mut _,
199                 b"provider-hidden\0".as_ptr() as *const _,
200                 Some(transmute(provider_hidden_trampoline::<Self, F> as usize)),
201                 Box_::into_raw(f),
202             )
203         }
204     }
205 
connect_provider_unhidden<F: Fn(&Self, &str) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId206     fn connect_provider_unhidden<F: Fn(&Self, &str) + Send + Sync + 'static>(
207         &self,
208         f: F,
209     ) -> SignalHandlerId {
210         unsafe extern "C" fn provider_unhidden_trampoline<
211             P,
212             F: Fn(&P, &str) + Send + Sync + 'static,
213         >(
214             this: *mut gst_sys::GstDeviceProvider,
215             object: *mut libc::c_char,
216             f: glib_sys::gpointer,
217         ) where
218             P: IsA<DeviceProvider>,
219         {
220             let f: &F = &*(f as *const F);
221             f(
222                 &DeviceProvider::from_glib_borrow(this).unsafe_cast(),
223                 &GString::from_glib_borrow(object),
224             )
225         }
226         unsafe {
227             let f: Box_<F> = Box_::new(f);
228             connect_raw(
229                 self.as_ptr() as *mut _,
230                 b"provider-unhidden\0".as_ptr() as *const _,
231                 Some(transmute(provider_unhidden_trampoline::<Self, F> as usize)),
232                 Box_::into_raw(f),
233             )
234         }
235     }
236 }
237