diff options
-rw-r--r-- | src/win32/headless.rs | 35 | ||||
-rw-r--r-- | src/win32/mod.rs | 36 |
2 files changed, 37 insertions, 34 deletions
diff --git a/src/win32/headless.rs b/src/win32/headless.rs new file mode 100644 index 0000000..1da8b02 --- /dev/null +++ b/src/win32/headless.rs @@ -0,0 +1,35 @@ +use super::Window; +use super::init; + +use Api; +use BuilderAttribs; +use CreationError; + +/// +pub struct HeadlessContext(Window); + +impl HeadlessContext { + /// See the docs in the crate root file. + pub fn new(builder: BuilderAttribs) -> Result<HeadlessContext, CreationError> { + let (builder, _) = builder.extract_non_static(); + init::new_window(builder, None).map(|w| HeadlessContext(w)) + } + + /// See the docs in the crate root file. + pub unsafe fn make_current(&self) { + self.0.make_current() + } + + /// See the docs in the crate root file. + pub fn get_proc_address(&self, addr: &str) -> *const () { + self.0.get_proc_address(addr) + } + + /// See the docs in the crate root file. + pub fn get_api(&self) -> Api { + Api::OpenGl + } + + pub fn set_window_resize_callback(&mut self, _: Option<fn(u32, u32)>) { + } +} diff --git a/src/win32/mod.rs b/src/win32/mod.rs index c2fd103..10e03a3 100644 --- a/src/win32/mod.rs +++ b/src/win32/mod.rs @@ -8,6 +8,7 @@ use {CreationError, Event, MouseCursor}; use BuilderAttribs; +pub use self::headless::HeadlessContext; pub use self::monitor::{MonitorID, get_available_monitors, get_primary_monitor}; use winapi; @@ -17,43 +18,10 @@ use gdi32; mod event; mod gl; +mod headless; mod init; mod monitor; -/// -pub struct HeadlessContext(Window); - -impl HeadlessContext { - /// See the docs in the crate root file. - pub fn new(builder: BuilderAttribs) -> Result<HeadlessContext, CreationError> { - let (builder, _) = builder.extract_non_static(); - init::new_window(builder, None).map(|w| HeadlessContext(w)) - } - - /// See the docs in the crate root file. - pub unsafe fn make_current(&self) { - self.0.make_current() - } - - /// See the docs in the crate root file. - pub fn get_proc_address(&self, addr: &str) -> *const () { - self.0.get_proc_address(addr) - } - - /// See the docs in the crate root file. - pub fn get_api(&self) -> ::Api { - ::Api::OpenGl - } - - pub fn set_window_resize_callback(&mut self, _: Option<fn(u32, u32)>) { - } -} - -#[cfg(feature = "headless")] -unsafe impl Send for HeadlessContext {} -#[cfg(feature = "headless")] -unsafe impl Sync for HeadlessContext {} - /// The Win32 implementation of the main `Window` object. pub struct Window { /// Main handle for the window. |