mallumo_gls/raw/
errors.rs

1use super::*;
2
3error_chain! {
4    errors {
5        InvalidEnum
6        InvalidValue
7        InvalidOperation
8        StackOverflow
9        StackUnderflow
10        OutOfMemory
11        InvalidFramebufferOperation
12        ContextLost
13        UnknownError
14    }
15}
16
17pub fn get_error<T>(t: T) -> Result<T> {
18    if cfg!(debug_assertions) {
19        unsafe {
20            let error_code: u32 = gl::GetError();
21
22            use self::ErrorKind::*;
23            match error_code {
24                gl::INVALID_ENUM => Err(InvalidEnum.into()),
25                gl::INVALID_VALUE => Err(InvalidValue.into()),
26                gl::INVALID_OPERATION => Err(InvalidOperation.into()),
27                gl::STACK_OVERFLOW => Err(StackOverflow.into()),
28                gl::STACK_UNDERFLOW => Err(StackUnderflow.into()),
29                gl::OUT_OF_MEMORY => Err(OutOfMemory.into()),
30                gl::INVALID_FRAMEBUFFER_OPERATION => Err(InvalidFramebufferOperation.into()),
31                gl::CONTEXT_LOST => Err(ContextLost.into()),
32                gl::NO_ERROR => Ok(t),
33                _ => Err(UnknownError.into()),
34            }
35        }
36    } else {
37        Ok(t)
38    }
39}
40
41pub fn get_error_always()  -> Result<()> {
42    unsafe {
43        let error_code: u32 = gl::GetError();
44
45        use self::ErrorKind::*;
46        match error_code {
47            gl::INVALID_ENUM => Err(InvalidEnum.into()),
48            gl::INVALID_VALUE => Err(InvalidValue.into()),
49            gl::INVALID_OPERATION => Err(InvalidOperation.into()),
50            gl::STACK_OVERFLOW => Err(StackOverflow.into()),
51            gl::STACK_UNDERFLOW => Err(StackUnderflow.into()),
52            gl::OUT_OF_MEMORY => Err(OutOfMemory.into()),
53            gl::INVALID_FRAMEBUFFER_OPERATION => Err(InvalidFramebufferOperation.into()),
54            gl::CONTEXT_LOST => Err(ContextLost.into()),
55            gl::NO_ERROR => Ok(()),
56            _ => Err(UnknownError.into()),
57        }
58    }
59}