Создание окон

Перед отображением контента необходимо создание окна приложения. Представленная процедура описывает общие способы создания окон

Для создания окна:

  1. Создаются переменные для хранения контекста, окна и имени группы.

    screen_context_t screen_context = 0;
    screen_window_t screen_window = 0;
    static const char *window_group_name = "mainwindowgroup";

  2. Далее создается контекст. Контекст определяет взаимоотношения между приложением и оконной подсистемой.

    screen_create_context( &screen_context, SCREEN_APPLICATION_CONTEXT );

  3. Создается окно. Функция screen_create_window() принимает на вход указатель на переменную для хранения дескриптора окна и созданный дескриптор контекста.

    screen_create_window( &screen_window, screen_context );

  4. Следующим шагом создается группа окон. Переменная window_group_name задает имя группы окон. Имя группы окон должно быть уникальным. Для того, чтобы сделать окно приложения видимым, следует добавить его в группу окон.

    screen_create_window_group( screen_window, window_group_name );

  5. Настройка параметров окна. На следующем этапе для окна устанавливаются формат пикселей и флаг разрешения использования низкоуровневых операций (например, адресоваться к блиттеру). В этом примере окно будет использоваться для отображения видео.

    int format = SCREEN_FORMAT_RGBA8888;
    screen_set_window_property_iv( screen_window, SCREEN_PROPERTY_FORMAT, &format );
    int usage = SCREEN_USAGE_NATIVE;
    screen_set_window_property_iv( screen_window, SCREEN_PROPERTY_USAGE, &usage );

  6. Создайте видео-буфера для окна. В примере буфер используется для хранения видеоданных окна. Функция screen_create_window_buffers() принимает дескриптор окна и число, определяющее количество буферов, создаваемых для этого окна.

    screen_create_window_buffers( screen_window, 1 );

Хотя все задействованные ресурсы уничтожаются при терминировании приложения, лучше всего уничтожить вручную все созданные окна, pixmap-ы и контексты.

Следующий код освобождает задействованные в примере ресурсы.

screen_destroy_window( screen_window );
screen_destroy_context( screen_context );




Предыдущий раздел: Окна