diff options
author | Tomaka17 <pierre.krieger1708@gmail.com> | 2014-08-23 18:44:24 +0200 |
---|---|---|
committer | Pierre Krieger <pierre.krieger1708@gmail.com> | 2015-05-03 10:24:42 +0200 |
commit | de7b1aa2ebb8fcf7a9e605bf720d6e644d2fa33a (patch) | |
tree | 2e9a21dd41d06fd0a8cca4ef88e779021a213794 /src/platform | |
parent | b9aa741c261b12c3edd7f17d228f0b639f203952 (diff) | |
download | glutin-de7b1aa2ebb8fcf7a9e605bf720d6e644d2fa33a.tar.gz glutin-de7b1aa2ebb8fcf7a9e605bf720d6e644d2fa33a.zip |
Basic implementation of emscripten
Diffstat (limited to 'src/platform')
-rw-r--r-- | src/platform/emscripten/mod.rs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/platform/emscripten/mod.rs b/src/platform/emscripten/mod.rs new file mode 100644 index 0000000..f9b011a --- /dev/null +++ b/src/platform/emscripten/mod.rs @@ -0,0 +1,49 @@ +#![cfg(target_os = "emscripten")] + +use GlContext; + +pub use api::emscripten::{Window, WindowProxy, MonitorID, get_available_monitors}; +pub use api::emscripten::{get_primary_monitor, WaitEventsIterator, PollEventsIterator}; + +#[cfg(feature = "headless")] +pub struct HeadlessContext(Window); + +#[cfg(feature = "headless")] +impl HeadlessContext { + /// See the docs in the crate root file. + pub fn new(builder: BuilderAttribs) -> Result<HeadlessContext, CreationError> { + Window::new(builder).map(|w| HeadlessContext(w)) + } +} + +#[cfg(feature = "headless")] +impl GlContext for HeadlessContext { + unsafe fn make_current(&self) { + self.0.make_current() + } + + fn is_current(&self) -> bool { + self.0.is_current() + } + + fn get_proc_address(&self, addr: &str) -> *const libc::c_void { + self.0.get_proc_address(addr) + } + + fn swap_buffers(&self) { + self.0.swap_buffers() + } + + fn get_api(&self) -> Api { + self.0.get_api() + } + + fn get_pixel_format(&self) -> PixelFormat { + self.0.get_pixel_format() + } +} + +#[cfg(feature = "headless")] +unsafe impl Send for HeadlessContext {} +#[cfg(feature = "headless")] +unsafe impl Sync for HeadlessContext {} |