Add an os module containing platform-specific traits
This commit is contained in:
parent
9fccb2e06e
commit
8c6a27d426
6 changed files with 113 additions and 29 deletions
9
src/os/mod.rs
Normal file
9
src/os/mod.rs
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
//! Contains traits with platform-specific methods in them.
|
||||
//!
|
||||
//! Contains the follow modules:
|
||||
//!
|
||||
//! - `unix`
|
||||
//! - `windows`
|
||||
//!
|
||||
pub mod unix;
|
||||
pub mod windows;
|
||||
40
src/os/unix.rs
Normal file
40
src/os/unix.rs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
#![cfg(any(target_os = "linux", target_os = "dragonfly", target_os = "freebsd"))]
|
||||
|
||||
use libc;
|
||||
use Window;
|
||||
use platform::Window as LinuxWindow;
|
||||
|
||||
/// Additional methods on `Window` that are specific to unix.
|
||||
pub trait WindowExt {
|
||||
/// Returns a pointer to the `Window` object of xlib that is used by this window.
|
||||
///
|
||||
/// Returns `None` if the window doesn't use xlib (if it uses wayland for example).
|
||||
///
|
||||
/// The pointer will become invalid when the glutin `Window` is destroyed.
|
||||
fn get_xlib_window(&self) -> Option<*mut libc::c_void>;
|
||||
|
||||
/// Returns a pointer to the `Display` object of xlib that is used by this window.
|
||||
///
|
||||
/// Returns `None` if the window doesn't use xlib (if it uses wayland for example).
|
||||
///
|
||||
/// The pointer will become invalid when the glutin `Window` is destroyed.
|
||||
fn get_xlib_display(&self) -> Option<*mut libc::c_void>;
|
||||
}
|
||||
|
||||
impl WindowExt for Window {
|
||||
#[inline]
|
||||
fn get_xlib_window(&self) -> Option<*mut libc::c_void> {
|
||||
match self.window {
|
||||
LinuxWindow::X(ref w) => Some(w.get_xlib_window()),
|
||||
_ => None
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn get_xlib_display(&self) -> Option<*mut libc::c_void> {
|
||||
match self.window {
|
||||
LinuxWindow::X(ref w) => Some(w.get_xlib_window()),
|
||||
_ => None
|
||||
}
|
||||
}
|
||||
}
|
||||
21
src/os/windows.rs
Normal file
21
src/os/windows.rs
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#![cfg(target_os = "windows")]
|
||||
|
||||
use libc;
|
||||
use Window;
|
||||
|
||||
/// Additional methods on `Window` that are specific to unix.
|
||||
pub trait WindowExt {
|
||||
/// Returns a pointer to the `Window` object of xlib that is used by this window.
|
||||
///
|
||||
/// Returns `None` if the window doesn't use xlib (if it uses wayland for example).
|
||||
///
|
||||
/// The pointer will become invalid when the glutin `Window` is destroyed.
|
||||
fn get_hwnd(&self) -> *mut libc::c_void;
|
||||
}
|
||||
|
||||
impl WindowExt for Window {
|
||||
#[inline]
|
||||
fn get_hwnd(&self) -> *mut libc::c_void {
|
||||
self.window.platform_window()
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue