mallumo_gls/raw/
errors.rs1use 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}