gstreamer_vulkan/auto/
vulkan_fence.rs1use crate::{VulkanDevice, ffi};
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 #[doc(alias = "gst_vulkan_fence_new")]
22 pub fn new(device: &impl IsA<VulkanDevice>) -> Result<VulkanFence, glib::Error> {
23 skip_assert_initialized!();
24 unsafe {
25 let mut error = std::ptr::null_mut();
26 let ret = ffi::gst_vulkan_fence_new(device.as_ref().to_glib_none().0, &mut error);
27 if error.is_null() {
28 Ok(from_glib_full(ret))
29 } else {
30 Err(from_glib_full(error))
31 }
32 }
33 }
34
35 #[doc(alias = "gst_vulkan_fence_new_always_signalled")]
36 pub fn new_always_signalled(device: &impl IsA<VulkanDevice>) -> VulkanFence {
37 skip_assert_initialized!();
38 unsafe {
39 from_glib_full(ffi::gst_vulkan_fence_new_always_signalled(
40 device.as_ref().to_glib_none().0,
41 ))
42 }
43 }
44
45 #[doc(alias = "gst_vulkan_fence_is_signaled")]
46 pub fn is_signaled(&mut self) -> bool {
47 unsafe { from_glib(ffi::gst_vulkan_fence_is_signaled(self.to_glib_none_mut().0)) }
48 }
49
50 #[doc(alias = "gst_vulkan_fence_reset")]
51 pub fn reset(&mut self) {
52 unsafe {
53 ffi::gst_vulkan_fence_reset(self.to_glib_none_mut().0);
54 }
55 }
56}
57
58unsafe impl Send for VulkanFence {}
59unsafe impl Sync for VulkanFence {}