feat: PipeWire capture on X11

Co-authored-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
galister
2024-06-06 01:08:20 +09:00
parent 7641a662dc
commit 415ef91a43
6 changed files with 167 additions and 31 deletions

View File

@@ -31,7 +31,7 @@ pub struct MirrorRenderer {
}
impl MirrorRenderer {
pub fn new(name: Arc<str>) -> Self {
let selector = Box::pin(pipewire_select_screen(None, false, false, false));
let selector = Box::pin(pipewire_select_screen(None, false, false, false, false));
Self {
name,
renderer: None,
@@ -58,12 +58,9 @@ impl OverlayRenderer for MirrorRenderer {
};
if let Ok(pw_result) = maybe_pw_result {
log::info!(
"{}: PipeWire node selected: {}",
self.name.clone(),
pw_result.node_id
);
let capture = PipewireCapture::new(self.name.clone(), pw_result.node_id);
let node_id = pw_result.streams.first().unwrap().node_id; // streams guaranteed to have at least one element
log::info!("{}: PipeWire node selected: {}", self.name.clone(), node_id,);
let capture = PipewireCapture::new(self.name.clone(), node_id);
self.renderer = Some(ScreenRenderer::new_raw(
self.name.clone(),
Box::new(capture),