Covellite++
Version: 2.3.2 Revision: 2584 Platform: x64 Build: 19:03 05.09.2026
Кроссплатформенный фреймворк для разработки приложений на С++
Toggle main menu visibility
Загрузка...
Поиск...
Не найдено
android_native_app_glue.h
1
/*
2
* Copyright (C) 2010 The Android Open Source Project
3
*
4
* лицензировано по лицензии Apache License, версия 2.0 ( "Лицензия");
5
*этот файл можно использовать только в соответствии с лицензией.
6
*Копию лицензии можно получить на веб-сайте
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
*Если только не требуется в соответствии с применимым законодательством или согласовано в письменном виде, программное обеспечение
11
* распространяется в рамках лицензии на УСЛОВИЯХ "КАК ЕСТЬ",
12
* БЕЗ ГАРАНТИЙ И УСЛОВИЙ ЛЮБОГО РОДА, явно выраженных и подразумеваемых.
13
* См. лицензию для получения информации об определенных разрешениях по использованию языка и
14
* ограничениях в рамках лицензии.
15
*
16
*/
17
18
#ifndef _ANDROID_NATIVE_APP_GLUE_H
19
#define _ANDROID_NATIVE_APP_GLUE_H
20
21
#include <poll.h>
22
#include <pthread.h>
23
#include <sched.h>
24
25
#include <android/configuration.h>
26
#include <android/looper.h>
27
#include <android/native_activity.h>
28
29
#ifdef __cplusplus
30
extern
"C"
{
31
#endif
32
83
84
struct
android_app
;
85
90
struct
android_poll_source
{
91
// Идентификатор данного источника. Может быть LOOPER_ID_MAIN или
92
// LOOPER_ID_INPUT.
93
int32_t id;
94
95
// android_app, с которым связан данный идентификатор.
96
struct
android_app
* app;
97
98
// Функция, вызываемая для стандартной обработки данных из
99
// этого источника.
100
void (*process)(
struct
android_app
* app,
struct
android_poll_source
* source);
101
};
102
111
struct
android_app
{
112
// Приложение может поместить указатель на свой собственный объект состояния
113
// здесь, если хочет.
114
void
* userData;
115
116
// Введите здесь код функции для обработки основных команд приложения (APP_CMD_*)
117
void (*onAppCmd)(
struct
android_app
* app, int32_t cmd);
118
119
// Введите здесь код функции для обработки входных событий. В этот момент
120
// событие уже было предварительно отправлено и будет завершено при
121
// возврате. Верните 1, если событие обработано, 0 — для любой диспетчеризации
122
// по умолчанию.
123
int32_t (*onInputEvent)(
struct
android_app
* app, AInputEvent* event);
124
125
// Экземпляр объекта ANativeActivity, в котором выполняется это приложение.
126
ANativeActivity* activity;
127
128
// Текущая конфигурация, в которой выполняется это приложение.
129
AConfiguration* config;
130
131
// Это последнее сохраненное состояние экземпляра, предоставленное во время создания.
132
// Значение равно NULL, если состояния не было. Можно использовать это по мере необходимости;
133
// память останется доступной до вызова android_app_exec_cmd() для
134
// APP_CMD_RESUME, после чего она будет освобождена, а savedState получит значение NULL.
135
// Эти переменные необходимо изменять только при обработке APP_CMD_SAVE_STATE,
136
// когда их значения будут инициализироваться в NULL и можно будет выполнить malloc для
137
// состояния и поместить здесь информацию. В этом случае память будет
138
// освобождена позднее.
139
void
* savedState;
140
size_t
savedStateSize;
141
142
// ALooper, связанный с потоком приложения.
143
ALooper* looper;
144
145
// Если значение не равно NULL, то это входная очередь, из которой приложение будет
146
// получать входные события пользователя.
147
AInputQueue* inputQueue;
148
149
// Если значение не равно NULL, то это поверхность окна, в котором приложение может рисовать.
150
ANativeWindow* window;
151
152
// Текущий прямоугольник содержимого окна. Это область, в которой
153
// должно помещаться содержимое окна, чтобы его видел пользователь.
154
ARect contentRect;
155
156
// Текущее состояние действия приложения. Может быть APP_CMD_START,
157
// APP_CMD_RESUME, APP_CMD_PAUSE или APP_CMD_STOP; см. ниже.
158
int
activityState;
159
160
// Значение не равно нулю, когда NativeActivity приложения
161
// разрушается и ожидает завершения потока приложения.
162
int
destroyRequested;
163
164
// -------------------------------------------------
165
// Ниже показан "частная" реализация кода прилипания.
166
167
pthread_mutex_t mutex;
168
pthread_cond_t cond;
169
170
int
msgread;
171
int
msgwrite;
172
173
pthread_t thread;
174
175
struct
android_poll_source
cmdPollSource;
176
struct
android_poll_source
inputPollSource;
177
178
int
running;
179
int
stateSaved;
180
int
destroyed;
181
int
redrawNeeded;
182
AInputQueue* pendingInputQueue;
183
ANativeWindow* pendingWindow;
184
ARect pendingContentRect;
185
};
186
187
enum
{
195
LOOPER_ID_MAIN = 1,
196
204
LOOPER_ID_INPUT = 2,
205
209
LOOPER_ID_USER = 3,
210
};
211
218
enum
{
224
APP_CMD_INPUT_CHANGED,
225
230
APP_CMD_INIT_WINDOW,
231
238
APP_CMD_TERM_WINDOW,
239
244
APP_CMD_WINDOW_RESIZED,
245
251
APP_CMD_WINDOW_REDRAW_NEEDED,
252
258
APP_CMD_CONTENT_RECT_CHANGED,
259
264
APP_CMD_GAINED_FOCUS,
265
270
APP_CMD_LOST_FOCUS,
271
275
APP_CMD_CONFIG_CHANGED,
276
281
APP_CMD_LOW_MEMORY,
282
286
APP_CMD_START,
287
291
APP_CMD_RESUME,
292
300
APP_CMD_SAVE_STATE,
301
305
APP_CMD_PAUSE,
306
310
APP_CMD_STOP,
311
316
APP_CMD_DESTROY,
317
};
318
323
int8_t android_app_read_cmd(
struct
android_app
*
android_app
);
324
330
void
android_app_pre_exec_cmd(
struct
android_app
*
android_app
, int8_t cmd);
331
337
void
android_app_post_exec_cmd(
struct
android_app
*
android_app
, int8_t cmd);
338
343
extern
void
android_main(
struct
android_app
* app);
344
345
void
ANativeActivity_onCreate(ANativeActivity *,
void
*,
size_t
);
346
347
#ifdef __cplusplus
348
}
349
#endif
350
351
#endif
/* _ANDROID_NATIVE_APP_GLUE_H */
android_poll_source
Определения
android_native_app_glue.h:90
android_app
Определения
android_native_app_glue.h:111
Solution
Solution
Covellite.App
Covellite.App
android_native_app_glue.h
Документация по Covellite++. Последние изменения:
. Создано системой
1.18.0