diff --git a/support/android/egl-configs/src/main.rs b/support/android/egl-configs/src/main.rs index d04fc204b1c..d091a28d606 100644 --- a/support/android/egl-configs/src/main.rs +++ b/support/android/egl-configs/src/main.rs @@ -1,5 +1,8 @@ -mod ffi; use ffi::*; +use ffi::types::*; +use std::ptr::null_mut; + +mod ffi; fn main() { unsafe { @@ -7,6 +10,31 @@ fn main() { } } -unsafe fn run() { - let _display = GetDisplay(DEFAULT_DISPLAY as *mut _); +macro_rules! check { + ($name: ident ( $($arg: expr),* )) => { + check($name( $($arg),* ), stringify!($name)) + } +} + +unsafe fn run() { + let display = GetDisplay(DEFAULT_DISPLAY as *mut _); + assert!(!display.is_null()); + + check!(Initialize(display, null_mut(), null_mut())); + + let mut num_config = -1; + check!(GetConfigs(display, null_mut(), 0, &mut num_config)); + println!("Got {} configs", num_config); +} + +unsafe fn check(result: EGLBoolean, function_name: &str) { + check_error(); + assert_eq!(result, TRUE, "{} failed", function_name); +} + +unsafe fn check_error() { + let status = GetError(); + if status != SUCCESS as i32 { + println!("Error: 0x{:x}", status); + } }