Add ability to get wayland display from events loop. (#829)

Signed-off-by: Hal Gentz <zegentzy@protonmail.com>
This commit is contained in:
Hal Gentz
2019-04-07 23:07:47 -06:00
committed by Osspial
parent dfa972eab1
commit 8522071c2c
3 changed files with 20 additions and 0 deletions

View File

@@ -113,6 +113,13 @@ pub trait EventsLoopExt {
#[doc(hidden)]
fn get_xlib_xconnection(&self) -> Option<Arc<XConnection>>;
/// Returns a pointer to the `wl_display` object of wayland that is used by this `EventsLoop`.
///
/// Returns `None` if the `EventsLoop` doesn't use wayland (if it uses xlib for example).
///
/// The pointer will become invalid when the glutin `EventsLoop` is destroyed.
fn get_wayland_display(&self) -> Option<*mut raw::c_void>;
}
impl EventsLoopExt for EventsLoop {
@@ -152,6 +159,14 @@ impl EventsLoopExt for EventsLoop {
fn get_xlib_xconnection(&self) -> Option<Arc<XConnection>> {
self.events_loop.x_connection().cloned()
}
#[inline]
fn get_wayland_display(&self) -> Option<*mut raw::c_void> {
match self.events_loop {
LinuxEventsLoop::Wayland(ref e) => Some(e.get_display().c_ptr() as *mut _),
_ => None
}
}
}
/// Additional methods on `Window` that are specific to Unix.

View File

@@ -229,6 +229,10 @@ impl EventsLoop {
pub fn get_available_monitors(&self) -> VecDeque<MonitorId> {
get_available_monitors(&self.env.outputs)
}
pub fn get_display(&self) -> &Display {
&*self.display
}
}
/*