diff options
| author | Pierre Krieger <pierre.krieger1708@gmail.com> | 2015-07-09 08:55:29 +0200 | 
|---|---|---|
| committer | Pierre Krieger <pierre.krieger1708@gmail.com> | 2015-07-09 08:55:29 +0200 | 
| commit | bbd31608e87facd2fa07b5a6f2ab73f829e6d9fe (patch) | |
| tree | f589c5580d5dcadada5ac001e9f24b2dcc90d623 | |
| parent | 6b5d0e6e2831f2461fab9fc40e43b7c64591449b (diff) | |
| download | glutin-bbd31608e87facd2fa07b5a6f2ab73f829e6d9fe.tar.gz glutin-bbd31608e87facd2fa07b5a6f2ab73f829e6d9fe.zip | |
Better win32 error messages
| -rw-r--r-- | src/api/wgl/mod.rs | 39 | 
1 files changed, 19 insertions, 20 deletions
| diff --git a/src/api/wgl/mod.rs b/src/api/wgl/mod.rs index cf09ad0..222620c 100644 --- a/src/api/wgl/mod.rs +++ b/src/api/wgl/mod.rs @@ -216,7 +216,7 @@ unsafe fn create_context(extra: Option<(&gl::wgl_extra::Wgl, &BuilderAttribs<'st  {      let share = share.unwrap_or(ptr::null_mut()); -    let ctxt = if let Some((extra_functions, builder, extensions)) = extra { +    if let Some((extra_functions, builder, extensions)) = extra {          if extensions.split(' ').find(|&i| i == "WGL_ARB_create_context").is_some() {              let mut attributes = Vec::new(); @@ -308,33 +308,32 @@ unsafe fn create_context(extra: Option<(&gl::wgl_extra::Wgl, &BuilderAttribs<'st              attributes.push(0); -            Some(extra_functions.CreateContextAttribsARB(hdc as *const libc::c_void, -                                                         share as *const libc::c_void, -                                                         attributes.as_ptr())) +            let ctxt = extra_functions.CreateContextAttribsARB(hdc as *const libc::c_void, +                                                               share as *const libc::c_void, +                                                               attributes.as_ptr()); -        } else { -            None -        } -    } else { -        None -    }; - -    let ctxt = match ctxt { -        Some(ctxt) => ctxt, -        None => { -            let ctxt = gl::wgl::CreateContext(hdc as *const libc::c_void); -            if !ctxt.is_null() && !share.is_null() { -                gl::wgl::ShareLists(share as *const libc::c_void, ctxt); -            }; -            ctxt +            if ctxt.is_null() { +                return Err(CreationError::OsError(format!("wglCreateContextAttribsARB failed: {}", +                                                      format!("{}", io::Error::last_os_error())))); +            } else { +                return Ok(ContextWrapper(ctxt as winapi::HGLRC)); +            }          }      }; +    let ctxt = gl::wgl::CreateContext(hdc as *const libc::c_void);      if ctxt.is_null() { -        return Err(CreationError::OsError(format!("OpenGL context creation failed: {}", +        return Err(CreationError::OsError(format!("wglCreateContext failed: {}",                                                    format!("{}", io::Error::last_os_error()))));      } +    if !share.is_null() { +        if gl::wgl::ShareLists(share as *const libc::c_void, ctxt) == 0 { +            return Err(CreationError::OsError(format!("wglShareLists failed: {}", +                                                      format!("{}", io::Error::last_os_error())))); +        } +    }; +      Ok(ContextWrapper(ctxt as winapi::HGLRC))  } | 
