diff options
author | tomaka <pierre.krieger1708@gmail.com> | 2015-05-04 10:40:25 +0200 |
---|---|---|
committer | tomaka <pierre.krieger1708@gmail.com> | 2015-05-04 10:40:25 +0200 |
commit | 01007dbfd4b5f98a03b660e9c76f1d01fb78cd22 (patch) | |
tree | 82698fd27ad9bcc48b384f54fea172cf683cee78 /src/api/osmesa | |
parent | f0309cb16588da65268fdfe959ad70fe28702054 (diff) | |
parent | ace4808facf085c4ccd068d33b9ab9f018e9072e (diff) | |
download | glutin-01007dbfd4b5f98a03b660e9c76f1d01fb78cd22.tar.gz glutin-01007dbfd4b5f98a03b660e9c76f1d01fb78cd22.zip |
Merge pull request #423 from tomaka/remove-headless
Remove the "headless" feature
Diffstat (limited to 'src/api/osmesa')
-rw-r--r-- | src/api/osmesa/mod.rs | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/api/osmesa/mod.rs b/src/api/osmesa/mod.rs index 61eebc1..22df72a 100644 --- a/src/api/osmesa/mod.rs +++ b/src/api/osmesa/mod.rs @@ -1,11 +1,10 @@ -#![cfg(all(any(target_os = "linux", target_os = "freebsd"), feature="headless"))] +#![cfg(any(target_os = "linux", target_os = "freebsd"))] extern crate osmesa_sys; use Api; use BuilderAttribs; use CreationError; -use CreationError::OsError; use GlContext; use PixelFormat; use libc; @@ -19,8 +18,23 @@ pub struct OsMesaContext { height: u32, } +pub enum OsMesaCreationError { + CreationError(CreationError), + NotSupported, +} + +impl From<CreationError> for OsMesaCreationError { + fn from(e: CreationError) -> OsMesaCreationError { + OsMesaCreationError::CreationError(e) + } +} + impl OsMesaContext { - pub fn new(builder: BuilderAttribs) -> Result<OsMesaContext, CreationError> { + pub fn new(builder: BuilderAttribs) -> Result<OsMesaContext, OsMesaCreationError> { + if let Err(_) = osmesa_sys::OsMesa::try_loading() { + return Err(OsMesaCreationError::NotSupported); + } + let dimensions = builder.dimensions.unwrap(); Ok(OsMesaContext { @@ -31,7 +45,7 @@ impl OsMesaContext { context: unsafe { let ctxt = osmesa_sys::OSMesaCreateContext(0x1908, ptr::null_mut()); if ctxt.is_null() { - return Err(OsError("OSMesaCreateContext failed".to_string())); + return Err(CreationError::OsError("OSMesaCreateContext failed".to_string()).into()); } ctxt } |