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>

source

pub fn new( shm: &impl ProvidesBoundGlobal<WlShm, 1>, ) -> Result<Self, CreatePoolError>

source

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.

source

pub fn remove<Q>(&mut self, key: &Q) -> Option<BufferSlot<K>>
where Q: PartialEq, K: Borrow<Q>,

Removes the buffer with the given key from the pool and rearranges the others.

source

pub fn insert<Q>( &mut self, width: i32, stride: i32, height: i32, key: &Q, format: Format, ) -> Result<usize, PoolError>
where K: Borrow<Q>, Q: PartialEq + ToOwned<Owned = K>,

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 one
  • key: a borrowed form of the stored key type
  • format: the encoding format of the pixels.
source

pub fn get<Q>( &mut self, width: i32, stride: i32, height: i32, key: &Q, format: Format, ) -> Option<(usize, &WlBuffer, &mut [u8])>
where Q: PartialEq, K: Borrow<Q>,

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 one
  • key: a borrowed form of the stored key type
  • format: the encoding format of the pixels.
source

pub fn create_buffer<Q>( &mut self, width: i32, stride: i32, height: i32, key: &Q, format: Format, ) -> Result<(usize, &WlBuffer, &mut [u8]), PoolError>
where K: Borrow<Q>, Q: PartialEq + ToOwned<Owned = K>,

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 one
  • key: a borrowed form of the stored key type
  • format: 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.

source

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.

source

fn offset(&self, offset: i32, stride: i32, height: i32) -> (usize, usize)

Calcule the offet and size of a buffer based on its stride.

source

fn dyn_resize( &mut self, offset: usize, width: i32, stride: i32, height: i32, key: K, format: Format, ) -> Option<()>

Resizes the pool and appends a new buffer.

Trait Implementations§

source§

impl<K: Debug> Debug for MultiPool<K>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Downcast for T
where T: Any,

source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more