Контексты определяют механизм взаимодействия с оконной подсистемой
Контексты используются для считывания и изменения параметров дисплеев и окон. Контекст может быть ассоциирован с одним окном или группой, а также с одним или несколькими дисплеями.
Следующие разделы справки демонстрируют общие практики выполнения типичных операций с контекстами.
При создании контекста должен быть определен его тип. Контекст определяет механизм взаимодействия с оконной подсистемой. В зависимости от потребностей приложения, а также от наличия у пользователя прав, могут быть созданы контексты различных типов
Возможно создание контекстов следующих типов:
Тип | Описание | Требуются ли привелегии root ? | Тип поддерживается? |
---|---|---|---|
Данный тип контекста предусматривает создание приложением окон и изменение некоторых их параметров. Приложение не может изменять параметры окон, созданных в других процессах. Контекст приложения не информируется об окнах приложений, а также о более "высокоуровневых" окнах. Контекст может установить родительские отношения с некоторым окном, даже если оно создано другим контекстом или процессом. | Нет | Да | |
Контекст может управлять всеми окнами в системе, даже если их процессы будут запущены после текущего. Контекст получает уведомления о событиях создания или удаления (например, при терминировании процесса-владельца) окон в системе, а также при изменении их параметров. | Да | Да | |
Контекст получает возможность посылать события произвольным процессам в системе. Контекст не получает уведомлений, предусмотренных флагом SCREEN_WINDOW_MANAGER_CONTEXT. | Да | Нет | |
Контекст для управления питанием. | Да | Нет | |
Контекст, позволяющий получить доступ к параметрам дисплеев. | Да | Нет | |
Контекст, позволяющий получить доступ к параметрам сессий. | Да | Нет |
Контекст должен быть создан перед созданием окон. При вызове функции screen_create_context() выделяется память для хранения состояния контекста. Также композитным менеджером будет создана очередь событий, ассоциированная с данным процессом
Для создания контекста:
screen_context_t screen_context = 0;
SCREEN_APPLICATION_CONTEXT
, что говорит о том, что контекст будет использоваться только для создания и модификации окон в рамках приложения.
if ( screen_create_context( &screen_context, SCREEN_APPLICATION_CONTEXT ) != 0 )return EXIT_FAILURE;
Вам следует уничтожить контекст, когда приложение закончит с ним работать. Для уничтожения контекст предусмотрена функция screen_destroy_context().
screen_destroy_context( screen_context );
Можно считывать и устанавливать свойства контекста для определения логики функционирования приложения при взаимодействии с окном
В настоящи момент у контекстов нет отдельных параметров, доступных для чтения или установки.
Предыдущий раздел: Оконная подсистема Screen