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 {}