pub enum CompositorCommand {
Show 22 variants
KeyInput {
surface_id: u16,
keycode: u32,
pressed: bool,
},
PointerMotion {
surface_id: u16,
x: f64,
y: f64,
},
PointerButton {
surface_id: u16,
button: u32,
pressed: bool,
},
PointerAxis {
surface_id: u16,
axis: u8,
value: f64,
},
SurfaceResize {
surface_id: u16,
width: u16,
height: u16,
scale_120: u16,
},
SurfaceFocus {
surface_id: u16,
},
SurfaceClose {
surface_id: u16,
},
ClipboardOffer {
mime_type: String,
data: Vec<u8>,
},
Capture {
surface_id: u16,
scale_120: u16,
reply: SyncSender<Option<(u32, u32, Vec<u8>)>>,
},
RequestFrame {
surface_id: u16,
},
ReleaseKeys {
keycodes: Vec<u32>,
},
ClipboardListMimes {
reply: SyncSender<Vec<String>>,
},
ClipboardGet {
mime_type: String,
reply: SyncSender<Option<Vec<u8>>>,
},
SetExternalOutputBuffers {
surface_id: u32,
target_w: u32,
target_h: u32,
buffers: Vec<ExternalOutputBuffer>,
},
RegisterDownscaleTarget {
surface_id: u32,
target_w: u32,
target_h: u32,
},
ClearDownscaleTarget {
surface_id: u32,
target_w: u32,
target_h: u32,
},
TextInput {
text: String,
},
SetRefreshRate {
mhz: u32,
},
SetVulkanEncoder {
surface_id: u32,
codec: u8,
qp: u8,
width: u32,
height: u32,
},
RequestVulkanKeyframe {
surface_id: u32,
},
DestroyVulkanEncoder {
surface_id: u32,
},
Shutdown,
}Variants§
KeyInput
PointerMotion
PointerButton
PointerAxis
SurfaceResize
SurfaceFocus
SurfaceClose
ClipboardOffer
Capture
RequestFrame
ReleaseKeys
ClipboardListMimes
List available clipboard MIME types.
Fields
reply: SyncSender<Vec<String>>ClipboardGet
Read clipboard content for a specific MIME type.
SetExternalOutputBuffers
Set externally-allocated DMA-BUF fds as GPU renderer output
targets for a (surface, encoder target size) pair. Each
per-client encoder owns its own pool of target-sized buffers;
the compositor composites at native size, then GPU-blits
(LINEAR) into each registered target so every viewer gets a
zero-copy stream at its own physical viewport. Pass an empty
buffers to clear a target.
RegisterDownscaleTarget
Allocate a server-side BGRA “downscale target” for a per-client
encoder that doesn’t import GBM buffers (NVENC, software h264,
software AV1). After registration the renderer GPU-blits
(LINEAR) the native composite into a target-sized BGRA image
then copies it into a CPU-mapped staging buffer; the resulting
frame is delivered as PixelData::Bgra sized at
(target_w, target_h) so the per-client encoder consumes
already-downscaled pixels. Sending the same (surface_id, target_w, target_h) again is a no-op.
ClearDownscaleTarget
Tear down the BGRA downscale target previously registered for
(surface_id, target_w, target_h). No-op when none exists.
TextInput
Synthesize text input as key press/release sequences.
SetRefreshRate
Update the advertised output refresh rate (millihertz).
SetVulkanEncoder
Set up a Vulkan Video encoder for a surface.
RequestVulkanKeyframe
Request a keyframe from the Vulkan Video encoder for a surface.
DestroyVulkanEncoder
Destroy the Vulkan Video encoder for a surface.
Shutdown
Auto Trait Implementations§
impl Freeze for CompositorCommand
impl RefUnwindSafe for CompositorCommand
impl Send for CompositorCommand
impl Sync for CompositorCommand
impl Unpin for CompositorCommand
impl UnsafeUnpin for CompositorCommand
impl UnwindSafe for CompositorCommand
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.