30 lines
982 B
Rust
30 lines
982 B
Rust
//! Cross-process IOSurface descriptors used by the macOS hardware path.
|
|
|
|
/// A send right for importing the current IOSurface in another process.
|
|
///
|
|
/// `surface_id` is the system IOSurface ID. The receiver owns the transferred
|
|
/// Mach send right and must deallocate it after importing the surface.
|
|
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
|
#[cfg_attr(feature = "servo-engine", derive(serde::Deserialize, serde::Serialize))]
|
|
pub struct IOSurfaceHandle {
|
|
pub mach_port_name: u32,
|
|
pub surface_id: u64,
|
|
pub width: u32,
|
|
pub height: u32,
|
|
}
|
|
|
|
/// Stable identity of a presented IOSurface without creating a Mach port.
|
|
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
|
pub struct IOSurfaceIdentity {
|
|
pub surface_id: u64,
|
|
pub width: u32,
|
|
pub height: u32,
|
|
}
|
|
|
|
impl IOSurfaceIdentity {
|
|
#[must_use]
|
|
pub fn from_handle(handle: IOSurfaceHandle) -> Self {
|
|
Self { surface_id: handle.surface_id, width: handle.width, height: handle.height }
|
|
}
|
|
}
|