gstreamer: query: Tidy up allocation pool API

Use `impl IsA<BufferPool>` and make the `set_nth_` and
`remove_nth_` methods check the index bounds.
This commit is contained in:
Philippe Normand 2021-10-12 16:48:55 +01:00
parent 6d88e18772
commit b9cd38b796

View file

@ -1049,7 +1049,7 @@ impl<T: AsMutPtr> Allocation<T> {
#[doc(alias = "gst_query_add_allocation_pool")] #[doc(alias = "gst_query_add_allocation_pool")]
pub fn add_allocation_pool( pub fn add_allocation_pool(
&mut self, &mut self,
pool: Option<&crate::BufferPool>, pool: Option<&impl IsA<crate::BufferPool>>,
size: u32, size: u32,
min_buffers: u32, min_buffers: u32,
max_buffers: u32, max_buffers: u32,
@ -1057,7 +1057,7 @@ impl<T: AsMutPtr> Allocation<T> {
unsafe { unsafe {
ffi::gst_query_add_allocation_pool( ffi::gst_query_add_allocation_pool(
self.0.as_mut_ptr(), self.0.as_mut_ptr(),
pool.to_glib_none().0, pool.to_glib_none().0 as *mut ffi::GstBufferPool,
size, size,
min_buffers, min_buffers,
max_buffers, max_buffers,
@ -1069,16 +1069,18 @@ impl<T: AsMutPtr> Allocation<T> {
pub fn set_nth_allocation_pool( pub fn set_nth_allocation_pool(
&mut self, &mut self,
idx: u32, idx: u32,
pool: Option<&crate::BufferPool>, pool: Option<&impl IsA<crate::BufferPool>>,
size: u32, size: u32,
min_buffers: u32, min_buffers: u32,
max_buffers: u32, max_buffers: u32,
) { ) {
unsafe { unsafe {
let n = ffi::gst_query_get_n_allocation_pools(self.0.as_ptr());
assert!(idx < n);
ffi::gst_query_set_nth_allocation_pool( ffi::gst_query_set_nth_allocation_pool(
self.0.as_mut_ptr(), self.0.as_mut_ptr(),
idx, idx,
pool.to_glib_none().0, pool.to_glib_none().0 as *mut ffi::GstBufferPool,
size, size,
min_buffers, min_buffers,
max_buffers, max_buffers,
@ -1089,6 +1091,8 @@ impl<T: AsMutPtr> Allocation<T> {
#[doc(alias = "gst_query_remove_nth_allocation_pool")] #[doc(alias = "gst_query_remove_nth_allocation_pool")]
pub fn remove_nth_allocation_pool(&mut self, idx: u32) { pub fn remove_nth_allocation_pool(&mut self, idx: u32) {
unsafe { unsafe {
let n = ffi::gst_query_get_n_allocation_pools(self.0.as_ptr());
assert!(idx < n);
ffi::gst_query_remove_nth_allocation_pool(self.0.as_mut_ptr(), idx); ffi::gst_query_remove_nth_allocation_pool(self.0.as_mut_ptr(), idx);
} }
} }
@ -1157,6 +1161,8 @@ impl<T: AsMutPtr> Allocation<T> {
#[doc(alias = "gst_query_remove_nth_allocation_meta")] #[doc(alias = "gst_query_remove_nth_allocation_meta")]
pub fn remove_nth_allocation_meta(&mut self, idx: u32) { pub fn remove_nth_allocation_meta(&mut self, idx: u32) {
unsafe { unsafe {
let n = ffi::gst_query_get_n_allocation_metas(self.0.as_ptr());
assert!(idx < n);
ffi::gst_query_remove_nth_allocation_meta(self.0.as_mut_ptr(), idx); ffi::gst_query_remove_nth_allocation_meta(self.0.as_mut_ptr(), idx);
} }
} }