From ace4808facf085c4ccd068d33b9ab9f018e9072e Mon Sep 17 00:00:00 2001
From: Pierre Krieger <pierre.krieger1708@gmail.com>
Date: Mon, 4 May 2015 07:32:02 +0200
Subject: Remove the "headless" feature

---
 src/api/osmesa/mod.rs | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

(limited to 'src/api/osmesa')

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
             }
-- 
cgit v1.2.3