From c71b14afb9709aef36477a3eab0a816a3f972cd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Sk=C3=B6ld?= Date: Sat, 16 Jan 2016 15:12:21 -0800 Subject: [PATCH] Adding os::macos. Also implements platform_window() for cocoa. --- src/api/cocoa/mod.rs | 2 +- src/os/macos.rs | 19 +++++++++++++++++++ src/os/mod.rs | 2 ++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 src/os/macos.rs diff --git a/src/api/cocoa/mod.rs b/src/api/cocoa/mod.rs index a720a512..2fc1bafb 100644 --- a/src/api/cocoa/mod.rs +++ b/src/api/cocoa/mod.rs @@ -690,7 +690,7 @@ impl Window { #[inline] pub fn platform_window(&self) -> *mut libc::c_void { - unimplemented!() + *self.window as *mut libc::c_void } #[inline] diff --git a/src/os/macos.rs b/src/os/macos.rs new file mode 100644 index 00000000..16ffe33c --- /dev/null +++ b/src/os/macos.rs @@ -0,0 +1,19 @@ +#![cfg(target_os = "macos")] + +use std::os::raw::c_void; +use Window; + +/// Additional methods on `Window` that are specific to MacOS. +pub trait WindowExt { + /// Returns a pointer to the cocoa `NSWindow` that is used by this window. + /// + /// The pointer will become invalid when the glutin `Window` is destroyed. + fn get_nswindow(&self) -> *mut c_void; +} + +impl WindowExt for Window { + #[inline] + fn get_nswindow(&self) -> *mut c_void { + self.window.platform_window() as *mut c_void + } +} diff --git a/src/os/mod.rs b/src/os/mod.rs index 251a8d46..04e82c2f 100644 --- a/src/os/mod.rs +++ b/src/os/mod.rs @@ -2,8 +2,10 @@ //! //! Contains the follow modules: //! +//! - `macos` //! - `unix` //! - `windows` //! +pub mod macos; pub mod unix; pub mod windows;