gstreamer_vulkan/auto/
vulkan_fence.rs1use 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 #[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 #[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 #[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 {}