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