gstreamer_vulkan/auto/
vulkan_fence.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, VulkanDevice};
7use glib::{prelude::*, translate::*};
8
9glib::wrapper! {
10    #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
11    pub struct VulkanFence(Boxed<ffi::GstVulkanFence>);
12
13    match fn {
14        copy => |ptr| glib::gobject_ffi::g_boxed_copy(ffi::gst_vulkan_fence_get_type(), ptr as *mut _) as *mut ffi::GstVulkanFence,
15        free => |ptr| glib::gobject_ffi::g_boxed_free(ffi::gst_vulkan_fence_get_type(), ptr as *mut _),
16        type_ => || ffi::gst_vulkan_fence_get_type(),
17    }
18}
19
20impl VulkanFence {
21    /// ## `device`
22    /// the parent [`VulkanDevice`][crate::VulkanDevice]
23    ///
24    /// # Returns
25    ///
26    /// a new [`VulkanFence`][crate::VulkanFence] or [`None`] on error
27    #[doc(alias = "gst_vulkan_fence_new")]
28    pub fn new(device: &impl IsA<VulkanDevice>) -> Result<VulkanFence, glib::Error> {
29        skip_assert_initialized!();
30        unsafe {
31            let mut error = std::ptr::null_mut();
32            let ret = ffi::gst_vulkan_fence_new(device.as_ref().to_glib_none().0, &mut error);
33            if error.is_null() {
34                Ok(from_glib_full(ret))
35            } else {
36                Err(from_glib_full(error))
37            }
38        }
39    }
40
41    ///
42    /// # Returns
43    ///
44    /// a new [`VulkanFence`][crate::VulkanFence] that is always in the signalled state
45    #[doc(alias = "gst_vulkan_fence_new_always_signalled")]
46    pub fn new_always_signalled(device: &impl IsA<VulkanDevice>) -> VulkanFence {
47        skip_assert_initialized!();
48        unsafe {
49            from_glib_full(ffi::gst_vulkan_fence_new_always_signalled(
50                device.as_ref().to_glib_none().0,
51            ))
52        }
53    }
54
55    ///
56    /// # Returns
57    ///
58    /// whether `self` has been signalled
59    #[doc(alias = "gst_vulkan_fence_is_signaled")]
60    pub fn is_signaled(&mut self) -> bool {
61        unsafe { from_glib(ffi::gst_vulkan_fence_is_signaled(self.to_glib_none_mut().0)) }
62    }
63
64    #[doc(alias = "gst_vulkan_fence_reset")]
65    pub fn reset(&mut self) {
66        unsafe {
67            ffi::gst_vulkan_fence_reset(self.to_glib_none_mut().0);
68        }
69    }
70}
71
72unsafe impl Send for VulkanFence {}
73unsafe impl Sync for VulkanFence {}