1use glib::translate::*;
4
5use crate::{ffi, Plugin, PluginFeature, Registry};
6
7impl Registry {
8 #[doc(alias = "gst_registry_update")]
9 pub fn update() -> Result<(), glib::BoolError> {
10 crate::auto::functions::update_registry()
11 }
12
13 #[doc(alias = "gst_registry_feature_filter")]
14 pub fn features_filtered<P: FnMut(&PluginFeature) -> bool>(
15 &self,
16 filter: P,
17 first: bool,
18 ) -> glib::List<PluginFeature> {
19 let mut filter_data: P = filter;
20 unsafe extern "C" fn filter_func<P: FnMut(&PluginFeature) -> bool>(
21 feature: *mut ffi::GstPluginFeature,
22 user_data: glib::ffi::gpointer,
23 ) -> glib::ffi::gboolean {
24 let feature = from_glib_borrow(feature);
25 let callback = user_data as *mut P;
26 let res = (*callback)(&feature);
27 res.into_glib()
28 }
29 let filter = Some(filter_func::<P> as _);
30 let super_callback0: &mut P = &mut filter_data;
31 unsafe {
32 FromGlibPtrContainer::from_glib_full(ffi::gst_registry_feature_filter(
33 self.to_glib_none().0,
34 filter,
35 first.into_glib(),
36 super_callback0 as *mut _ as *mut _,
37 ))
38 }
39 }
40
41 #[doc(alias = "gst_registry_get_feature_list")]
42 #[doc(alias = "get_feature_list")]
43 pub fn features(&self, type_: glib::types::Type) -> glib::List<PluginFeature> {
44 unsafe {
45 FromGlibPtrContainer::from_glib_full(ffi::gst_registry_get_feature_list(
46 self.to_glib_none().0,
47 type_.into_glib(),
48 ))
49 }
50 }
51
52 #[doc(alias = "gst_registry_get_feature_list_by_plugin")]
53 #[doc(alias = "get_feature_list_by_plugin")]
54 pub fn features_by_plugin(&self, name: &str) -> glib::List<PluginFeature> {
55 unsafe {
56 FromGlibPtrContainer::from_glib_full(ffi::gst_registry_get_feature_list_by_plugin(
57 self.to_glib_none().0,
58 name.to_glib_none().0,
59 ))
60 }
61 }
62
63 #[doc(alias = "gst_registry_get_plugin_list")]
64 #[doc(alias = "get_plugin_list")]
65 pub fn plugins(&self) -> glib::List<Plugin> {
66 unsafe {
67 FromGlibPtrContainer::from_glib_full(ffi::gst_registry_get_plugin_list(
68 self.to_glib_none().0,
69 ))
70 }
71 }
72
73 #[doc(alias = "gst_registry_plugin_filter")]
74 pub fn plugins_filtered<P: FnMut(&Plugin) -> bool>(
75 &self,
76 filter: P,
77 first: bool,
78 ) -> glib::List<Plugin> {
79 let mut filter_data: P = filter;
80 unsafe extern "C" fn filter_func<P: FnMut(&Plugin) -> bool>(
81 plugin: *mut ffi::GstPlugin,
82 user_data: glib::ffi::gpointer,
83 ) -> glib::ffi::gboolean {
84 let plugin = from_glib_borrow(plugin);
85 let callback = user_data as *mut P;
86 let res = (*callback)(&plugin);
87 res.into_glib()
88 }
89 let filter = Some(filter_func::<P> as _);
90 let super_callback0: &mut P = &mut filter_data;
91 unsafe {
92 FromGlibPtrContainer::from_glib_full(ffi::gst_registry_plugin_filter(
93 self.to_glib_none().0,
94 filter,
95 first.into_glib(),
96 super_callback0 as *mut _ as *mut _,
97 ))
98 }
99 }
100}