pub struct AudioEnv {
pub device: AudioDevice,
pub live: u32,
}Expand description
What the driver’s audio output is doing, for views to read. A fact, not a verb: nothing here lets a view close the device, which stays the driver’s decision (it closes an idle one itself, after a while).
Worth a row because an open output stream is a real-time thread that
runs whether or not anything plays — ~94 buffer callbacks a second at
the usual period — which is the whole of an idle app’s CPU once a
session has held a sound. A view that shows device still Open ten
seconds after its last click is showing a bug that otherwise only
top can see. Headless drivers leave it at the default, which is the
truth for them: no device, nothing playing.
Fields§
§device: AudioDeviceWhether the output device is open, and so costing something.
live: u32Playbacks started and not yet ended, plus the ones waiting on the device to open. A play that waits counts from the frame it was asked until the open answers; if the device refuses, the play is refused on the next apply and leaves the count with it (F63).
Trait Implementations§
impl Copy for AudioEnv
impl Eq for AudioEnv
impl StructuralPartialEq for AudioEnv
Auto Trait Implementations§
impl Freeze for AudioEnv
impl RefUnwindSafe for AudioEnv
impl Send for AudioEnv
impl Sync for AudioEnv
impl Unpin for AudioEnv
impl UnsafeUnpin for AudioEnv
impl UnwindSafe for AudioEnv
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.