From cef8d2897462d2cdf7fe010d98da6ce39d424fdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Sat, 17 Sep 2016 13:16:53 -0400 Subject: [PATCH] Some minor buffer changes --- src/buffer.rs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/buffer.rs b/src/buffer.rs index 9bf6b11d..d3c33ef7 100644 --- a/src/buffer.rs +++ b/src/buffer.rs @@ -264,8 +264,11 @@ impl Buffer { } } - pub fn share(&self) -> Buffer { - unsafe { Buffer::new_from_ptr(self.raw) } + pub fn copy(&self) -> Buffer { + extern "C" { + fn gst_mini_object_copy(obj: *const c_void) -> *mut c_void; + } + unsafe { Buffer::new_from_ptr_owned(gst_mini_object_copy(self.raw)) } } pub fn append(self, other: Buffer) -> Buffer { @@ -583,13 +586,16 @@ impl Drop for Buffer { } } +unsafe impl Sync for Buffer {} +unsafe impl Send for Buffer {} + impl Clone for Buffer { fn clone(&self) -> Buffer { extern "C" { - fn gst_mini_object_copy(obj: *const c_void) -> *mut c_void; + fn gst_mini_object_ref(obj: *mut c_void) -> *mut c_void; } - let raw = unsafe { gst_mini_object_copy(self.raw) }; + let raw = unsafe { gst_mini_object_ref(self.raw) }; Buffer { raw: raw, @@ -672,6 +678,9 @@ impl Drop for ReadMappedBuffer { } } +unsafe impl Sync for ReadMappedBuffer {} +unsafe impl Send for ReadMappedBuffer {} + impl ReadWriteMappedBuffer { pub fn as_mut_slice(&mut self) -> &mut [u8] { unsafe { slice::from_raw_parts_mut(self.map_info.data as *mut u8, self.map_info.size) } @@ -702,6 +711,9 @@ impl Drop for ReadWriteMappedBuffer { } } +unsafe impl Sync for ReadWriteMappedBuffer {} +unsafe impl Send for ReadWriteMappedBuffer {} + #[repr(C)] pub struct ScopedBufferPtr(*mut c_void);