From f6c26ec593ba96d89cb3476c815d6f33a915bfdd Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Tue, 16 Jun 2015 10:15:31 +0200 Subject: Handle errors from MakeCurrent and SwapBuffers --- src/api/egl/mod.rs | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'src/api/egl') 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(()) } } -- cgit v1.2.3