1 /* dstep -I/path/to/ndk-r9d/platforms/android-9/arch-x86/usr/include -I/path/to/ndk-r9d/toolchains/llvm-3.4/prebuilt/linux-x86/lib/clang/3.4/include /path/to/ndk-r9d/sources/android/native_app_glue/android_native_app_glue.h -o android_native_app_glue.d */
2
3 module android.android_native_app_glue;
4
5 import core.sys.posix.pthread;
6 import android.input, android.native_window, android.rect;
7 import android.configuration, android.looper, android.native_activity;
8
9 version (Android):
10 extern (C):
11 @system:
12 nothrow:
13 @nogc:
14
15 enum
16 {
17 LOOPER_ID_MAIN = 1,
18 LOOPER_ID_INPUT = 2,
19 LOOPER_ID_USER = 3
20 }
21
22 enum
23 {
24 APP_CMD_INPUT_CHANGED,
25 APP_CMD_INIT_WINDOW,
26 APP_CMD_TERM_WINDOW,
27 APP_CMD_WINDOW_RESIZED,
28 APP_CMD_WINDOW_REDRAW_NEEDED,
29 APP_CMD_CONTENT_RECT_CHANGED,
30 APP_CMD_GAINED_FOCUS,
31 APP_CMD_LOST_FOCUS,
32 APP_CMD_CONFIG_CHANGED,
33 APP_CMD_LOW_MEMORY,
34 APP_CMD_START,
35 APP_CMD_RESUME,
36 APP_CMD_SAVE_STATE,
37 APP_CMD_PAUSE,
38 APP_CMD_STOP,
39 APP_CMD_DESTROY
40 }
41
42 struct android_poll_source
43 {
44 int id;
45 android_app* app;
46 void function(android_app*, android_poll_source*) process;
47 }
48
49 struct android_app
50 {
51 void* userData;
52 void function(android_app*, int) onAppCmd;
53 int function(android_app*, AInputEvent*) onInputEvent;
54 ANativeActivity* activity;
55 AConfiguration* config;
56 void* savedState;
57 size_t savedStateSize;
58 ALooper* looper;
59 AInputQueue* inputQueue;
60 ANativeWindow* window;
61 ARect contentRect;
62 int activityState;
63 int destroyRequested;
64 pthread_mutex_t mutex;
65 pthread_cond_t cond;
66 int msgread;
67 int msgwrite;
68 pthread_t thread;
69 android_poll_source cmdPollSource;
70 android_poll_source inputPollSource;
71 int running;
72 int stateSaved;
73 int destroyed;
74 int redrawNeeded;
75 AInputQueue* pendingInputQueue;
76 ANativeWindow* pendingWindow;
77 ARect pendingContentRect;
78 }
79
80 byte android_app_read_cmd(android_app* android_app);
81 void android_app_pre_exec_cmd(android_app* android_app, byte cmd);
82 void android_app_post_exec_cmd(android_app* android_app, byte cmd);
83 void app_dummy();
84 void android_main(android_app* app);