🔒 Repository is read-only – file editing is disabled.
12345678910111213141516171819202122232425262728293031323334353637383940414243
//! idle-inhibit inhibitor.
use _idle_inhibit::zwp_idle_inhibitor_v1::{Request, ZwpIdleInhibitorV1};
use wayland_protocols::wp::idle_inhibit::zv1::server as _idle_inhibit;
use wayland_server::protocol::wl_surface::WlSurface;
use wayland_server::{Client, DataInit, Dispatch, DisplayHandle};
use crate::wayland::idle_inhibit::{IdleInhibitHandler, IdleInhibitManagerState};
/// State of zwp_idle_inhibitor_v1.
#[derive(Debug)]
pub struct IdleInhibitorState {
surface: WlSurface,
}
impl IdleInhibitorState {
/// Create `zwp_idle_inhibitor_v1` state.
pub fn new(surface: WlSurface) -> Self {
Self { surface }
}
}
impl<D> Dispatch<ZwpIdleInhibitorV1, IdleInhibitorState, D> for IdleInhibitManagerState
where
D: Dispatch<ZwpIdleInhibitorV1, IdleInhibitorState>,
D: IdleInhibitHandler,
D: 'static,
{
fn request(
state: &mut D,
_client: &Client,
_inhibitor: &ZwpIdleInhibitorV1,
request: Request,
data: &IdleInhibitorState,
_display: &DisplayHandle,
_data_init: &mut DataInit<'_, D>,
) {
match request {
Request::Destroy => state.uninhibit(data.surface.clone()),
_ => unreachable!(),
}
}
}