logo
Литература_1 / photon_old

Генерирование событий

В этом разделе описывается использование функции PhEmit(), а также

Основным способом генерирования событий в Вашем приложении является вызов функции PhEmit():

int PhEmit(PhEvent_t *event,

PhRect_t *rects,

void *data);

Её аргументами являются:

event

Указатель на структуру PhEvent_t. Приложение, генерирующее событие, должно установить следующие члены:

  • type – тип события.

  • subtype – подтип события (если необходимо).

  • flags – модификаторы события (напр., направление).

  • emitter – структура типа PhEventRegion_t; Вам необходимо установить по меньшей мере идентификатор региона, генерирующего событие.

  • translation – при генерировании события обычно устанавливается в (0,0).

  • num_rects – количество прямоугольников в аргументе rects функции. Если Вы устанавливаете значение num_rects в 0, Вы также должны передать в качестве rects NULL.

  • event–>collector.rid – если Вы устанавливаете идентификатор накопителя в 0, событие ставится в очередь для каждого должным образом чувствительного региона, интересующегося событием.

Если вы устанавливаете идентификатор накопителя равным идентификатору какого-то региона, только этот регион замечает событие.

Менеджер Photon'а, после того, как поставил копию события в очередь к приложению, устанавливает в структуре события следующие члены:

  • timestamp – время, когда событие было сгенерировано (в миллисекундах);

  • collector – структура типа PhEventRegion_t, которая включает идентификатор региона-накопителя.

rects

Массив структур PhRect_t (см. "Справочник библиотечных функций Photon'а"), указывающих на набор начальных прямоугольников события. Если этот аргумент является NULL'ом, набор состоит из единственного прямоугольника, соответствующего генерирующему региону.

data

Данные, действительные для того типа события, которое было сгенерировано. Каждый тип событий имеет свой собственный тип данных, как описано в описании структуры PhEvent_t в "Справочнике библиотечных функций Photon'а".

Если специфические для события данные не находятся в примыкающей области памяти, функция PhEmitmx() может Вам показаться более полезной, нежели PhEvent():

int PhEmit(PhEvent_t *event,

PhRect_t *rects,

int mxparts,

struct_mxfer_entry *mx);

Кодами возврата функций PhEmit() и PhEmitmx() являются:

Неотрицательное значение

Успешное завершение

-1

Произошла ошибка; значение ошибки установлено в errno

      1. Yandex.RTB R-A-252273-3
        Yandex.RTB R-A-252273-4