mirror of
https://github.com/rust-windowing/winit.git
synced 2026-08-29 04:40:04 -04:00
Add ability to get wayland display from events loop. (#829)
Signed-off-by: Hal Gentz <zegentzy@protonmail.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
# Unreleased
|
# Unreleased
|
||||||
|
|
||||||
|
- On Wayland, added a `get_wayland_display` function to `EventsLoopExt`.
|
||||||
- On Windows, fix `CursorMoved(0, 0)` getting dispatched on window focus.
|
- On Windows, fix `CursorMoved(0, 0)` getting dispatched on window focus.
|
||||||
- On macOS, fix command key event left and right reverse.
|
- On macOS, fix command key event left and right reverse.
|
||||||
- On FreeBSD, NetBSD, and OpenBSD, fix build of X11 backend.
|
- On FreeBSD, NetBSD, and OpenBSD, fix build of X11 backend.
|
||||||
|
|||||||
@@ -113,6 +113,13 @@ pub trait EventsLoopExt {
|
|||||||
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
fn get_xlib_xconnection(&self) -> Option<Arc<XConnection>>;
|
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 {
|
impl EventsLoopExt for EventsLoop {
|
||||||
@@ -152,6 +159,14 @@ impl EventsLoopExt for EventsLoop {
|
|||||||
fn get_xlib_xconnection(&self) -> Option<Arc<XConnection>> {
|
fn get_xlib_xconnection(&self) -> Option<Arc<XConnection>> {
|
||||||
self.events_loop.x_connection().cloned()
|
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.
|
/// Additional methods on `Window` that are specific to Unix.
|
||||||
|
|||||||
@@ -229,6 +229,10 @@ impl EventsLoop {
|
|||||||
pub fn get_available_monitors(&self) -> VecDeque<MonitorId> {
|
pub fn get_available_monitors(&self) -> VecDeque<MonitorId> {
|
||||||
get_available_monitors(&self.env.outputs)
|
get_available_monitors(&self.env.outputs)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_display(&self) -> &Display {
|
||||||
|
&*self.display
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user