aboutsummaryrefslogtreecommitdiffstats
path: root/src/os/unix.rs
diff options
context:
space:
mode:
authorPierre Krieger <pierre.krieger1708@gmail.com>2015-09-25 18:04:55 +0200
committerPierre Krieger <pierre.krieger1708@gmail.com>2015-10-03 09:53:37 +0200
commit8c6a27d42615fc97b1aed31c20c3aff3d25c88d4 (patch)
tree1e08975b0bbfa982ead924ac67b2c873ec55ea53 /src/os/unix.rs
parent9fccb2e06e15f56f270da4f7cbd5fa39b49b6826 (diff)
downloadglutin-8c6a27d42615fc97b1aed31c20c3aff3d25c88d4.tar.gz
glutin-8c6a27d42615fc97b1aed31c20c3aff3d25c88d4.zip
Add an `os` module containing platform-specific traits
Diffstat (limited to 'src/os/unix.rs')
-rw-r--r--src/os/unix.rs40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/os/unix.rs b/src/os/unix.rs
new file mode 100644
index 0000000..4fef6ef
--- /dev/null
+++ b/src/os/unix.rs
@@ -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
+ }
+ }
+}