pub struct PwStream {
core: Arc<PwCore>,
stream: *mut c_void,
shared: Arc<Shared>,
_events: Box<PwStreamEvents>,
_hook: Box<[u64; 8]>,
}Expand description
One output’s stream: the consumer end of a portal monitor stream.
Fields§
§core: Arc<PwCore>§stream: *mut c_void§_events: Box<PwStreamEvents>§_hook: Box<[u64; 8]>Implementations§
Source§impl PwStream
impl PwStream
Sourcepub(crate) fn connect(
core: &Arc<PwCore>,
node_id: u32,
sink: FrameSink,
cursor_tx: Sender<CursorJob>,
cfg: StreamConfig,
) -> Result<Self, String>
pub(crate) fn connect( core: &Arc<PwCore>, node_id: u32, sink: FrameSink, cursor_tx: Sender<CursorJob>, cfg: StreamConfig, ) -> Result<Self, String>
Connect to the stream node node_id and start negotiating cfg; frames reach sink,
cursor sprites cursor_tx.
Sourcepub fn reconfigure(&self, cfg: StreamConfig)
pub fn reconfigure(&self, cfg: StreamConfig)
Offer a new configuration; unchanged asks cost nothing, a change renegotiates. A monitor stream’s size is its monitor’s whatever the consumer prefers, so once a format stands, a new preferred size alone is kept for later offers without renegotiating: a renegotiation drops the buffers in flight, and with them the cursor bitmap KWin sends once per change.
Sourcepub fn release(&self, generation: u64, slot: usize)
pub fn release(&self, generation: u64, slot: usize)
Return a published frame’s buffer to the compositor.
Sourcepub fn release_all(&self)
pub fn release_all(&self)
Return every held buffer (an idled output has no consumer for them).
pub fn set_active(&self, active: bool)
pub fn negotiated(&self) -> Option<Negotiated>
pub fn errored(&self) -> bool
pub fn frames(&self) -> u64
Sourcepub fn cursor_position(&self) -> Option<(i32, i32)>
pub fn cursor_position(&self) -> Option<(i32, i32)>
The host cursor position the last cursor meta carried, in stream pixels.
Sourcepub fn wait_negotiated(&self, timeout: Duration) -> bool
pub fn wait_negotiated(&self, timeout: Duration) -> bool
Block up to timeout for the stream to reach a state where frames may flow.
Trait Implementations§
Auto Trait Implementations§
impl !Sync for PwStream
impl Freeze for PwStream
impl RefUnwindSafe for PwStream
impl Unpin for PwStream
impl UnsafeUnpin for PwStream
impl UnwindSafe for PwStream
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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.§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.§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.§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.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more