jay-compositor 1.15.0

The Jay compositor
use crate::async_engine::SpawnedFuture;
use crate::backend;
use crate::backend::Backend;
use crate::backend::BackendConnectorState;
use crate::backend::BackendConnectorStateSerial;
use crate::backend::Connector;
use crate::backend::ConnectorEvent;
use crate::backend::ConnectorId;
use crate::backend::ConnectorKernelId;
use crate::backend::DrmDeviceId;
use crate::format::XRGB8888;
use crate::utils::liveness::Liveness;
use crate::video::drm::ConnectorType;
use jay_proc::GetLiveness;
use std::error::Error;
use std::rc::Rc;

#[derive(Default, GetLiveness)]
pub struct DummyBackend {
    liveness: Liveness,
}

impl Backend for DummyBackend {
    fn run(self: Rc<Self>) -> SpawnedFuture<Result<(), Box<dyn Error>>> {
        unreachable!();
    }
}

pub struct DummyOutput {
    pub id: ConnectorId,
}

impl Connector for DummyOutput {
    fn id(&self) -> ConnectorId {
        self.id
    }

    fn kernel_id(&self) -> ConnectorKernelId {
        ConnectorKernelId {
            ty: ConnectorType::Unknown(0),
            idx: 0,
        }
    }

    fn event(&self) -> Option<ConnectorEvent> {
        None
    }

    fn on_change(&self, _cb: Rc<dyn Fn()>) {
        // nothing
    }

    fn damage(&self) {
        // nothing
    }

    fn drm_dev(&self) -> Option<DrmDeviceId> {
        None
    }

    fn effectively_locked(&self) -> bool {
        true
    }

    fn state(&self) -> BackendConnectorState {
        let mode = backend::Mode {
            width: 0,
            height: 0,
            refresh_rate_millihz: 40_000,
        };
        BackendConnectorState {
            serial: BackendConnectorStateSerial::from_raw(0),
            enabled: true,
            active: false,
            mode,
            non_desktop_override: None,
            vrr: false,
            tearing: false,
            format: XRGB8888,
            color_space: Default::default(),
            eotf: Default::default(),
            gamma_lut: Default::default(),
        }
    }
}