gstreamer_vulkan/auto/vulkan_display.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, VulkanDisplayType, VulkanInstance, VulkanWindow};
7use glib::{prelude::*, translate::*};
8
9glib::wrapper! {
10 /// The contents of a [`VulkanDisplay`][crate::VulkanDisplay] are private and should only be accessed
11 /// through the provided API
12 ///
13 /// # Implements
14 ///
15 /// [`VulkanDisplayExt`][trait@crate::prelude::VulkanDisplayExt], [`trait@gst::prelude::ObjectExt`], [`trait@glib::ObjectExt`]
16 #[doc(alias = "GstVulkanDisplay")]
17 pub struct VulkanDisplay(Object<ffi::GstVulkanDisplay, ffi::GstVulkanDisplayClass>) @extends gst::Object;
18
19 match fn {
20 type_ => || ffi::gst_vulkan_display_get_type(),
21 }
22}
23
24impl VulkanDisplay {
25 pub const NONE: Option<&'static VulkanDisplay> = None;
26
27 ///
28 /// # Returns
29 ///
30 /// a new [`VulkanDisplay`][crate::VulkanDisplay]
31 #[doc(alias = "gst_vulkan_display_new")]
32 pub fn new(instance: &impl IsA<VulkanInstance>) -> VulkanDisplay {
33 skip_assert_initialized!();
34 unsafe {
35 from_glib_full(ffi::gst_vulkan_display_new(
36 instance.as_ref().to_glib_none().0,
37 ))
38 }
39 }
40
41 /// ## `instance`
42 /// a [`VulkanInstance`][crate::VulkanInstance]
43 /// ## `type_`
44 /// the [`VulkanDisplayType`][crate::VulkanDisplayType] to create
45 ///
46 /// # Returns
47 ///
48 /// a new [`VulkanDisplay`][crate::VulkanDisplay] or [`None`] if
49 /// e.g. `type_` is unsupported
50 #[doc(alias = "gst_vulkan_display_new_with_type")]
51 #[doc(alias = "new_with_type")]
52 pub fn with_type(
53 instance: &impl IsA<VulkanInstance>,
54 type_: VulkanDisplayType,
55 ) -> Option<VulkanDisplay> {
56 skip_assert_initialized!();
57 unsafe {
58 from_glib_full(ffi::gst_vulkan_display_new_with_type(
59 instance.as_ref().to_glib_none().0,
60 type_.into_glib(),
61 ))
62 }
63 }
64
65 /// This function will read the `GST_VULKAN_WINDOW` environment variable for
66 /// a user choice or choose the first supported implementation.
67 ///
68 /// [`VulkanInstanceExt::fill_info()`][crate::prelude::VulkanInstanceExt::fill_info()] must have been called prior to this function.
69 /// ## `instance`
70 /// a [`VulkanInstance`][crate::VulkanInstance]
71 ///
72 /// # Returns
73 ///
74 /// the default [`VulkanDisplayType`][crate::VulkanDisplayType] [`VulkanInstance`][crate::VulkanInstance] will choose
75 /// on creation
76 #[doc(alias = "gst_vulkan_display_choose_type")]
77 pub fn choose_type(instance: &impl IsA<VulkanInstance>) -> VulkanDisplayType {
78 skip_assert_initialized!();
79 unsafe {
80 from_glib(ffi::gst_vulkan_display_choose_type(
81 instance.as_ref().to_glib_none().0,
82 ))
83 }
84 }
85
86 /// If a [`VulkanDisplay`][crate::VulkanDisplay] is requested in `query`, sets `device` as the reply.
87 ///
88 /// Intended for use with element query handlers to respond to `GST_QUERY_CONTEXT`
89 /// for a [`VulkanDisplay`][crate::VulkanDisplay].
90 /// ## `element`
91 /// a [`gst::Element`][crate::gst::Element]
92 /// ## `query`
93 /// a [`gst::Query`][crate::gst::Query] of type `GST_QUERY_CONTEXT`
94 /// ## `display`
95 /// the [`VulkanDisplay`][crate::VulkanDisplay]
96 ///
97 /// # Returns
98 ///
99 /// whether `query` was responded to with `display`
100 #[doc(alias = "gst_vulkan_display_handle_context_query")]
101 pub fn handle_context_query(
102 element: &impl IsA<gst::Element>,
103 query: &gst::Query,
104 display: Option<&impl IsA<VulkanDisplay>>,
105 ) -> bool {
106 assert_initialized_main_thread!();
107 unsafe {
108 from_glib(ffi::gst_vulkan_display_handle_context_query(
109 element.as_ref().to_glib_none().0,
110 query.to_glib_none().0,
111 display.map(|p| p.as_ref()).to_glib_none().0,
112 ))
113 }
114 }
115
116 //#[doc(alias = "gst_vulkan_display_run_context_query")]
117 //pub fn run_context_query(element: &impl IsA<gst::Element>, display: impl IsA<VulkanDisplay>) -> bool {
118 // unsafe { TODO: call ffi:gst_vulkan_display_run_context_query() }
119 //}
120}
121
122unsafe impl Send for VulkanDisplay {}
123unsafe impl Sync for VulkanDisplay {}
124
125/// Trait containing all [`struct@VulkanDisplay`] methods.
126///
127/// # Implementors
128///
129/// [`VulkanDisplay`][struct@crate::VulkanDisplay]
130pub trait VulkanDisplayExt: IsA<VulkanDisplay> + 'static {
131 ///
132 /// # Returns
133 ///
134 /// a new [`VulkanWindow`][crate::VulkanWindow] for `self` or
135 /// [`None`].
136 #[doc(alias = "gst_vulkan_display_create_window")]
137 fn create_window(&self) -> Option<VulkanWindow> {
138 unsafe {
139 from_glib_full(ffi::gst_vulkan_display_create_window(
140 self.as_ref().to_glib_none().0,
141 ))
142 }
143 }
144
145 //#[doc(alias = "gst_vulkan_display_find_window")]
146 //fn find_window(&self, data: /*Unimplemented*/Option<Basic: Pointer>, compare_func: /*Unimplemented*/FnMut(/*Unimplemented*/Option<Basic: Pointer>) -> i32) -> Option<VulkanWindow> {
147 // unsafe { TODO: call ffi:gst_vulkan_display_find_window() }
148 //}
149
150 //#[doc(alias = "gst_vulkan_display_get_handle")]
151 //#[doc(alias = "get_handle")]
152 //fn handle(&self) -> /*Unimplemented*/Option<Basic: Pointer> {
153 // unsafe { TODO: call ffi:gst_vulkan_display_get_handle() }
154 //}
155
156 ///
157 /// # Returns
158 ///
159 /// the [`VulkanDisplayType`][crate::VulkanDisplayType] of `self`
160 #[doc(alias = "gst_vulkan_display_get_handle_type")]
161 #[doc(alias = "get_handle_type")]
162 fn handle_type(&self) -> VulkanDisplayType {
163 unsafe {
164 from_glib(ffi::gst_vulkan_display_get_handle_type(
165 self.as_ref().to_glib_none().0,
166 ))
167 }
168 }
169
170 /// ## `window`
171 /// the [`VulkanWindow`][crate::VulkanWindow] to remove
172 ///
173 /// # Returns
174 ///
175 /// whether the window was successfully removed
176 #[doc(alias = "gst_vulkan_display_remove_window")]
177 fn remove_window(&self, window: &impl IsA<VulkanWindow>) -> bool {
178 unsafe {
179 from_glib(ffi::gst_vulkan_display_remove_window(
180 self.as_ref().to_glib_none().0,
181 window.as_ref().to_glib_none().0,
182 ))
183 }
184 }
185}
186
187impl<O: IsA<VulkanDisplay>> VulkanDisplayExt for O {}