gf_surface_attach_by_sid()

Подключение ранее созданной поверхности

Прототип:

#include <gf/gf.h>
int gf_surface_attach_by_sid( gf_surface_t *psurface,
gf_dev_t gdev,
gf_sid_t sid );

Аргументы:

psurface
Указатель на память, куда будет сохранен дескриптор поверхности.
gdev
Дескриптор графического устройства, полученный с помощью вызова функции gf_dev_attach(), обслуживающего поверхность.
sid
Уникальный идентификатор поверхности.

Библиотека:

gf

Описание:

Подключение ранее созданной поверхности по ее уникальному идентификатору (SID).


Note: Эта функция не позволяет управлять параметрами поверхности, так как она уже создана.


Warning: Потоки не должны вызывать эту функцию между вызовами gf_draw_begin() и gf_draw_end(). В противном случае возможна взаимная блокировка потоков.

Любая поверхность, управляемая менеджером io-display (поверхности, созданные через gf_surface_create() или gf_surface_create_layer()), может быть разделена между его клиентскими процессами с использованием ее уникального идентификатора SID. Посредством подобного совместного доступа несколько процессов могут использовать единую поверхность для рендеринга ее фрагментов.


Note: Способ синхронизации доступа к этой поверхности определяется приложениями самостоятельно.

Получить уникальный идентификатор поверхности (SID) можно используя функцию gf_surface_get_info(). Обратите внимание также на константу GF_SID_INVALID по ссылке.

Из-за возможности использования поверхности несколькими процессами через gf_surface_attach_by_sid(), вызов gf_surface_free() освободит дескриптор gf_surface_t, но не обязательно ассоциированный буфер памяти. Менеджер io-display осуществляет подсчет ссылок на разделяемые поверхности и освобождает ресурсы только после их освобождения всеми клиентскими процессами.

Возвращаемое значение:

GF_ERR_OK
Успешное завершение.
GF_ERR_MEM
Выделение памяти не выполнено.
GF_ERR_IODISPLAY
Ошибка коммуникации с io-display. Следует проверить запущен ли в настоящий момент сервер io-display. Вывод sloginfo может содержать дополнительную информацию.
GF_ERR_PARM
Указан неверный SID, либо значение параметра psurface или gdev равно NULL

Классификация:

Графическая подсистема ЗОСРВ «Нейтрино», Graphics Framework

Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

gf_surface_create(), gf_surface_attach(), gf_surface_get_info()




Предыдущий раздел: GF API