Skip to main content

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