pub mod mock;
pub use mock::MockBackend;
#[cfg(all(windows, feature = "wgc"))]
pub mod windows;
use crate::error::CaptureError;
use crate::frame::{RawFrame, WindowInfo};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ControlFlow {
Continue,
Stop,
}
pub trait CaptureBackend {
fn run(
&mut self,
on_frame: &mut dyn FnMut(RawFrame) -> ControlFlow,
) -> Result<(), CaptureError>;
fn stop(&mut self);
}
pub fn enumerate_windows() -> Result<Vec<WindowInfo>, CaptureError> {
#[cfg(all(windows, feature = "wgc"))]
{
windows::enumerate::enumerate_windows()
}
#[cfg(not(all(windows, feature = "wgc")))]
{
Err(CaptureError::Backend(
"window enumeration requires building on Windows with the `wgc` feature".into(),
))
}
}