Event
Event (также называют ивент, эвент) - событие системы AFW. Структура EVENT_T.
AFW представляет как ивент:
- действие пользователя
- сообщения от других процессов
Также некоторые ивенты создаются в пределах AFW процесса. Например: запрос данных каким либо диалогом, ивент нажатия кнопки пользователем рассматривается диалогом как нажатие какойто конкретной кнопки диалога (например софтовой)(диалог при этом удаляет ивент нажатия на кнопку и добавляет свой ивент), а также др.
При создании ивенты добавляются в стэк событий. Последний добавленный ивент первым должен быть обработан. Приложения должны обрабатывать ивенты и соответственно их логие реагировать на события. При удалении (consume, см. APP_ConsumeEv) ивента он удаляется не сразу, сперва помечается на удаление и когда точно ни одно приложение его уже не использует, память освободжается.
Структура EVENT_T
- EVENT_CODE_T code - уникальный код ивента
- UINT32 unk1 - неизвестно
- UINT32 ev_port - неизвестно
- UINT8 ev_catg - неизвестно
- BOOL unk2 - TRUE если ивент удален (consumed)
- BOOL first_pass - неизвестно
- UINT8 unk3 - неизвестно
- UINT32 unk4 - неизвестно
- UINT32 unk5 - неизвестно
- EVENT_T * next - указатель на следующий ивент в стэке
- UINT32 data_tag - указывает как интерпритировать следующее объединение
- EVENT_DATA_T data - объединение, может содержать что угодно (см. описание union в языке Си)
- FREE_BUF_FLAG_T free_buf - флаг указывающий "нужно ли освобождать attachment при удалении ивента"
- UINT16 att_size - размер буфера attachment
- void * attachment - auxiliary (англ. вспомогательный) данные
- UINT8 unk6 - неизвестно