use wlroots_sys::{wlr_backend, wlr_backend_autocreate, wl_display, wlr_multi_backend_add,
wlr_multi_backend_remove, wlr_multi_is_empty};
use backend::UnsafeRenderSetupFunction;
#[derive(Debug, Hash, Eq, PartialEq)]
pub struct Multi {
pub(crate) backend: *mut wlr_backend
}
impl Multi {
pub unsafe fn auto_create(display: *mut wl_display,
render_setup_func: Option<UnsafeRenderSetupFunction>)
-> Self {
let backend = wlr_backend_autocreate(display, render_setup_func);
if backend.is_null() {
panic!("Could not auto construct backend");
}
Multi { backend }
}
pub unsafe fn add_backend(&self, new_backend: *mut wlr_backend) -> bool {
wlr_multi_backend_add(self.backend, new_backend)
}
pub unsafe fn remove_backend(&self, backend: *mut wlr_backend) {
wlr_multi_backend_remove(self.backend, backend)
}
pub fn is_empty(&self) -> bool {
unsafe {
wlr_multi_is_empty(self.backend)
}
}
}