api/wayland: core context

This commit is contained in:
Victor Berger 2015-12-08 23:30:17 +01:00
parent 1b25d705ce
commit 741311b619
2 changed files with 44 additions and 1 deletions

View file

@ -0,0 +1,42 @@
use wayland_client::EventIterator;
use wayland_client::wayland::get_display;
use wayland_client::wayland::compositor::WlCompositor;
use wayland_client::wayland::seat::WlSeat;
use wayland_client::wayland::shell::WlShell;
use wayland_client::wayland::shm::WlShm;
use wayland_client::wayland::subcompositor::WlSubcompositor;
lazy_static! {
pub static ref WAYLAND_CONTEXT: Option<WaylandContext> = {
WaylandContext::init()
};
}
wayland_env!(InnerEnv,
compositor: WlCompositor,
seat: WlSeat,
shell: WlShell,
shm: WlShm,
subcompositor: WlSubcompositor
);
pub struct WaylandContext {
inner: InnerEnv,
iterator: EventIterator
}
impl WaylandContext {
fn init() -> Option<WaylandContext> {
let display = match get_display() {
Some(display) => display,
None => return None
};
let (inner_env, iterator) = InnerEnv::init(display);
Some(WaylandContext {
inner: inner_env,
iterator: iterator
})
}
}

View file

@ -6,10 +6,11 @@ pub use self::window::{PollEventsIterator, WaitEventsIterator, Window, WindowPro
extern crate wayland_kbd;
extern crate wayland_window;
mod context;
mod monitor;
mod window;
#[inline]
pub fn is_available() -> bool {
false
context::WAYLAND_CONTEXT.is_some()
}