jay-compositor 1.15.0

The Jay compositor
use crate::ei::ei_object::EiVersion;
use std::cell::Cell;

pub mod ei_acceptor;
pub mod ei_client;
pub mod ei_ifs;
pub mod ei_object;

#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum EiContext {
    Sender,
    Receiver,
}

pub struct EiInterfaceVersion {
    server_max_version: EiVersion,
    client_max_version: Cell<EiVersion>,
    pub version: Cell<EiVersion>,
}

impl EiInterfaceVersion {
    fn new(server_max_version: u32) -> Self {
        Self {
            server_max_version: EiVersion(server_max_version),
            client_max_version: Cell::new(EiVersion(0)),
            version: Cell::new(EiVersion(0)),
        }
    }

    fn set_client_version(&self, version: EiVersion) {
        self.client_max_version.set(version);
        self.version.set(self.server_max_version.min(version));
    }
}