android_ndk_sys/
native_app_glue.rs

1//! Bindings to the NDK's `android_native_app_glue.c`
2
3use super::{
4    AConfiguration, AInputEvent, AInputQueue, ALooper, ANativeActivity, ANativeWindow, ARect,
5};
6use std::os::raw::{c_int, c_void};
7
8#[repr(C)]
9pub struct android_app {
10    pub userData: *mut c_void,
11    pub onAppCmd: extern "C" fn(*mut android_app, i32),
12    pub onInputEvent: extern "C" fn(*mut android_app, *const AInputEvent) -> i32,
13    pub activity: *mut ANativeActivity,
14    pub config: *mut AConfiguration,
15    pub savedState: *mut c_void,
16    pub savedStateSize: usize,
17    pub looper: *mut ALooper,
18    pub inputQueue: *mut AInputQueue,
19    pub window: *mut ANativeWindow,
20    pub contentRect: ARect,
21    pub activityState: c_int,
22    pub destroyRequested: c_int,
23}
24
25#[repr(C)]
26pub struct android_poll_source {
27    pub id: i32, // can be LOOPER_ID_MAIN, LOOPER_ID_INPUT or LOOPER_ID_USER
28    pub app: *mut android_app,
29    pub process: extern "C" fn(*mut android_app, *mut android_poll_source),
30}
31
32pub const LOOPER_ID_MAIN: i32 = 1;
33pub const LOOPER_ID_INPUT: i32 = 2;
34pub const LOOPER_ID_USER: i32 = 3;
35
36pub const APP_CMD_INPUT_CHANGED: i8 = 0;
37pub const APP_CMD_INIT_WINDOW: i8 = 1;
38pub const APP_CMD_TERM_WINDOW: i8 = 2;
39pub const APP_CMD_WINDOW_RESIZED: i8 = 3;
40pub const APP_CMD_WINDOW_REDRAW_NEEDED: i8 = 4;
41pub const APP_CMD_CONTENT_RECT_CHANGED: i8 = 5;
42pub const APP_CMD_GAINED_FOCUS: i8 = 6;
43pub const APP_CMD_LOST_FOCUS: i8 = 7;
44pub const APP_CMD_CONFIG_CHANGED: i8 = 8;
45pub const APP_CMD_LOW_MEMORY: i8 = 9;
46pub const APP_CMD_START: i8 = 10;
47pub const APP_CMD_RESUME: i8 = 11;
48pub const APP_CMD_SAVE_STATE: i8 = 12;
49pub const APP_CMD_PAUSE: i8 = 13;
50pub const APP_CMD_STOP: i8 = 14;
51pub const APP_CMD_DESTROY: i8 = 15;
52
53extern "C" {
54    pub fn android_app_read_cmd(app: *mut android_app) -> i8;
55    pub fn android_app_pre_exec_cmd(app: *mut android_app, cmd: i8);
56    pub fn android_app_post_exec_cmd(app: *mut android_app, cmd: i8);
57    pub fn app_dummy();
58}