gstreamer_vulkan/
vulkan_command_pool.rs1use crate::VulkanCommandPool;
2
3use glib::{prelude::*, translate::*};
4
5#[derive(Debug)]
8pub struct VulkanCommandPoolGuard<'a> {
9 obj: &'a VulkanCommandPool,
10}
11
12impl Drop for VulkanCommandPoolGuard<'_> {
13 fn drop(&mut self) {
14 unsafe {
15 ffi::gst_vulkan_command_pool_unlock(self.obj.to_glib_none().0);
16 }
17 }
18}
19impl PartialEq for VulkanCommandPoolGuard<'_> {
20 fn eq(&self, other: &Self) -> bool {
21 self.obj == other.obj
22 }
23}
24impl Eq for VulkanCommandPoolGuard<'_> {}
25
26pub trait VulkanCommandPoolExtManual: IsA<VulkanCommandPool> + 'static {
27 #[doc(alias = "gst_vulkan_command_pool_lock")]
37 fn lock<'a>(&'a self) -> VulkanCommandPoolGuard<'a> {
38 unsafe {
39 ffi::gst_vulkan_command_pool_lock(self.as_ref().to_glib_none().0);
40 }
41 VulkanCommandPoolGuard {
42 obj: self.upcast_ref(),
43 }
44 }
45}
46impl<O: IsA<VulkanCommandPool>> VulkanCommandPoolExtManual for O {}