Merge pull request #486 from tomaka/context-error

Handle errors from MakeCurrent and SwapBuffers
This commit is contained in:
tomaka
2015-06-17 07:36:00 +02:00
20 changed files with 123 additions and 62 deletions

View File

@@ -1,3 +1,4 @@
use ContextError;
use CreationError;
use CreationError::OsError;
use BuilderAttribs;
@@ -61,7 +62,7 @@ impl HeadlessContext {
}
impl GlContext for HeadlessContext {
unsafe fn make_current(&self) {
unsafe fn make_current(&self) -> Result<(), ContextError> {
self.context.makeCurrentContext();
gl::GenFramebuffersEXT(1, &mut framebuffer);
@@ -78,6 +79,8 @@ impl GlContext for HeadlessContext {
if status != gl::FRAMEBUFFER_COMPLETE_EXT {
panic!("Error while creating the framebuffer");
}
Ok(())
}
fn is_current(&self) -> bool {
@@ -96,7 +99,8 @@ impl GlContext for HeadlessContext {
symbol as *const libc::c_void
}
fn swap_buffers(&self) {
fn swap_buffers(&self) -> Result<(), ContextError> {
Ok(())
}
fn get_api(&self) -> ::Api {

View File

@@ -8,6 +8,7 @@ use libc;
use Api;
use BuilderAttribs;
use ContextError;
use GlContext;
use GlProfile;
use GlRequest;
@@ -781,9 +782,10 @@ impl Window {
}
impl GlContext for Window {
unsafe fn make_current(&self) {
unsafe fn make_current(&self) -> Result<(), ContextError> {
let _: () = msg_send![*self.context, update];
self.context.makeCurrentContext();
Ok(())
}
fn is_current(&self) -> bool {
@@ -810,8 +812,9 @@ impl GlContext for Window {
symbol as *const _
}
fn swap_buffers(&self) {
fn swap_buffers(&self) -> Result<(), ContextError> {
unsafe { self.context.flushBuffer(); }
Ok(())
}
fn get_api(&self) -> ::Api {