diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/android/mod.rs | 38 | 
1 files changed, 27 insertions, 11 deletions
| diff --git a/src/android/mod.rs b/src/android/mod.rs index b89bf71..ec6e1a3 100644 --- a/src/android/mod.rs +++ b/src/android/mod.rs @@ -115,18 +115,34 @@ impl Window {              _ => false,          }; -        let config = unsafe { -            let mut attribute_list = vec!(); -            if use_gles2 { -                attribute_list.push_all(&[ffi::egl::RENDERABLE_TYPE as i32, -                                         ffi::egl::OPENGL_ES2_BIT as i32]); -            } -            attribute_list.push_all(&[ffi::egl::RED_SIZE as i32, 1]); -            attribute_list.push_all(&[ffi::egl::GREEN_SIZE as i32, 1]); -            attribute_list.push_all(&[ffi::egl::BLUE_SIZE as i32, 1]); -            attribute_list.push_all(&[ffi::egl::DEPTH_SIZE as i32, 1]); -            attribute_list.push(ffi::egl::NONE as i32); +        let mut attribute_list = vec!(); + +        if use_gles2 { +            attribute_list.push_all(&[ +                ffi::egl::RENDERABLE_TYPE as i32, +                ffi::egl::OPENGL_ES2_BIT as i32, +            ]); +        } +        { +            let (red, green, blue) = match builder.color_bits.unwrap_or(24) { +                24 => (8, 8, 8), +                16 => (6, 5, 6), +                _ => panic!("Bad color_bits"), +            }; +            attribute_list.push_all(&[ffi::egl::RED_SIZE as i32, red]); +            attribute_list.push_all(&[ffi::egl::GREEN_SIZE as i32, green]); +            attribute_list.push_all(&[ffi::egl::BLUE_SIZE as i32, blue]); +        } + +        attribute_list.push_all(&[ +            ffi::egl::DEPTH_SIZE as i32, +            builder.depth_bits.unwrap_or(8) as i32, +        ]); + +        attribute_list.push(ffi::egl::NONE as i32); + +        let config = unsafe {              let mut num_config: ffi::egl::types::EGLint = mem::uninitialized();              let mut config: ffi::egl::types::EGLConfig = mem::uninitialized();              if ffi::egl::ChooseConfig(display, attribute_list.as_ptr(), &mut config, 1, | 
