diff options
Diffstat (limited to 'src/api/egl')
| -rw-r--r-- | src/api/egl/mod.rs | 23 | 
1 files changed, 19 insertions, 4 deletions
diff --git a/src/api/egl/mod.rs b/src/api/egl/mod.rs index 3335de0..7b31017 100644 --- a/src/api/egl/mod.rs +++ b/src/api/egl/mod.rs @@ -2,6 +2,7 @@  #![allow(unused_variables)]  use BuilderAttribs; +use ContextError;  use CreationError;  use GlContext;  use GlRequest; @@ -161,11 +162,18 @@ impl Context {  }  impl GlContext for Context { -    unsafe fn make_current(&self) { +    unsafe fn make_current(&self) -> Result<(), ContextError> {          let ret = self.egl.MakeCurrent(self.display, self.surface, self.surface, self.context);          if ret == 0 { -            panic!("eglMakeCurrent failed"); +            if self.egl.GetError() as u32 == ffi::egl::CONTEXT_LOST { +                return Err(ContextError::ContextLost); +            } else { +                panic!("eglMakeCurrent failed"); +            } + +        } else { +            Ok(())          }      } @@ -181,13 +189,20 @@ impl GlContext for Context {          }      } -    fn swap_buffers(&self) { +    fn swap_buffers(&self) -> Result<(), ContextError> {          let ret = unsafe {              self.egl.SwapBuffers(self.display, self.surface)          };          if ret == 0 { -            panic!("eglSwapBuffers failed"); +            if unsafe { self.egl.GetError() } as u32 == ffi::egl::CONTEXT_LOST { +                return Err(ContextError::ContextLost); +            } else { +                panic!("eglSwapBuffers failed"); +            } + +        } else { +            Ok(())          }      }  | 
