Struct smithay_client_toolkit::shm::multi::MultiPool
source · pub struct MultiPool<K> {
buffer_list: Vec<BufferSlot<K>>,
pub(crate) inner: RawPool,
}
Expand description
This pool manages buffers associated with keys. Only one buffer can be attributed to a given key.
Fields§
§buffer_list: Vec<BufferSlot<K>>
§inner: RawPool
Implementations§
source§impl<K> MultiPool<K>
impl<K> MultiPool<K>
pub fn new( shm: &impl ProvidesBoundGlobal<WlShm, 1>, ) -> Result<Self, CreatePoolError>
sourcepub fn resize(&mut self, size: usize) -> Result<()>
pub fn resize(&mut self, size: usize) -> Result<()>
Resizes the memory pool, notifying the server the pool has changed in size.
The wl_shm protocol only allows the pool to be made bigger. If the new size is smaller than the current size of the pool, this function will do nothing.
sourcepub fn remove<Q>(&mut self, key: &Q) -> Option<BufferSlot<K>>
pub fn remove<Q>(&mut self, key: &Q) -> Option<BufferSlot<K>>
Removes the buffer with the given key from the pool and rearranges the others.
sourcepub fn insert<Q>(
&mut self,
width: i32,
stride: i32,
height: i32,
key: &Q,
format: Format,
) -> Result<usize, PoolError>
pub fn insert<Q>( &mut self, width: i32, stride: i32, height: i32, key: &Q, format: Format, ) -> Result<usize, PoolError>
Insert a buffer into the pool.
The parameters are:
width
: the width of this buffer (in pixels)height
: the height of this buffer (in pixels)stride
: distance (in bytes) between the beginning of a row and the next onekey
: a borrowed form of the stored key typeformat
: the encoding format of the pixels.
sourcepub fn get<Q>(
&mut self,
width: i32,
stride: i32,
height: i32,
key: &Q,
format: Format,
) -> Option<(usize, &WlBuffer, &mut [u8])>
pub fn get<Q>( &mut self, width: i32, stride: i32, height: i32, key: &Q, format: Format, ) -> Option<(usize, &WlBuffer, &mut [u8])>
Retreives the buffer associated with the given key.
The parameters are:
width
: the width of this buffer (in pixels)height
: the height of this buffer (in pixels)stride
: distance (in bytes) between the beginning of a row and the next onekey
: a borrowed form of the stored key typeformat
: the encoding format of the pixels.
sourcepub fn create_buffer<Q>(
&mut self,
width: i32,
stride: i32,
height: i32,
key: &Q,
format: Format,
) -> Result<(usize, &WlBuffer, &mut [u8]), PoolError>
pub fn create_buffer<Q>( &mut self, width: i32, stride: i32, height: i32, key: &Q, format: Format, ) -> Result<(usize, &WlBuffer, &mut [u8]), PoolError>
Returns the buffer associated with the given key and its offset (usize) in the mempool.
The parameters are:
width
: the width of this buffer (in pixels)height
: the height of this buffer (in pixels)stride
: distance (in bytes) between the beginning of a row and the next onekey
: a borrowed form of the stored key typeformat
: the encoding format of the pixels.
The offset can be used to determine whether or not a buffer was moved in the mempool and by consequence if it should be damaged partially or fully.
sourcefn get_at(
&mut self,
index: usize,
width: i32,
stride: i32,
height: i32,
format: Format,
) -> Result<(usize, &WlBuffer, &mut [u8]), PoolError>
fn get_at( &mut self, index: usize, width: i32, stride: i32, height: i32, format: Format, ) -> Result<(usize, &WlBuffer, &mut [u8]), PoolError>
Retreives the buffer at the given index.
Trait Implementations§
Auto Trait Implementations§
impl<K> Freeze for MultiPool<K>
impl<K> !RefUnwindSafe for MultiPool<K>
impl<K> Send for MultiPool<K>where
K: Send,
impl<K> Sync for MultiPool<K>where
K: Sync,
impl<K> Unpin for MultiPool<K>where
K: Unpin,
impl<K> !UnwindSafe for MultiPool<K>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.