use seat::Seat;
use wayland_sys::server::wl_display as wl_server_display;
use wlroots_sys::{wl_display, wlr_idle, wlr_idle_create,
wlr_idle_destroy, wlr_idle_notify_activity,
wlr_idle_set_enabled};
#[derive(Debug)]
pub struct Manager {
manager: *mut wlr_idle
}
impl Manager {
pub(crate) unsafe fn new(display: *mut wl_server_display) -> Option<Self> {
let manager_raw = wlr_idle_create(display as *mut wl_display);
if !manager_raw.is_null() {
Some(Manager { manager: manager_raw })
} else {
None
}
}
pub fn notify_activity(&mut self, seat: &Seat) {
unsafe { wlr_idle_notify_activity(self.manager, seat.as_ptr()) }
}
pub fn set_enabled(&mut self, seat: &Seat, enabled: bool) {
unsafe { wlr_idle_set_enabled(self.manager, seat.as_ptr(), enabled) }
}
}
impl Drop for Manager {
fn drop(&mut self) {
unsafe { wlr_idle_destroy(self.manager) }
}
}