gf_display_attach()

Подключение к дисплею графического устрйства

Прототип:

#include <gf/gf.h>
int gf_display_attach( gf_display_t *pdisplay,
gf_dev_t gdev,
unsigned display_index,
gf_display_info_t *info );

Аргументы:

pdisplay
Указатель на gf_display_t, который функция заполняет дескриптором графического дисплея.
gdev
Дескриптор графического устройства, полученный с помощью вызова функции gf_dev_attach().
display_index
Индекс запрашиваемого дисплея. Графическое устройство может иметь один или более дисплеев, нумерация начинается с 0.
info
Указатель на структуру gf_display_info_t, которую функция заполняет информацией о дисплее. Передайте вместо него NULL, если эта информация не требуется.

Библиотека:

gf

Описание:

Данная функция выполняет подключение к дисплею графического устройства. Она предоставляет дескриптор, позволяющий безопасно использовать дисплей в потоке. Актуальные параметры для каждого дисплея графического устройства настраиваются с помощью конфигурационного файла /etc/system/config/display.conf и поддерживаются сервером io-display.

Устройство обычно обслуживает один дисплей, однако некоторое аппаратное обеспечение допускает мультидисплейную конфигурацию. К каждому из этих дисплеев можно подключиться с помощью данной функции. Имея отдельный дескриптор для каждого дисплея, можно адресовать и управлять ими в индивидуальном порядке.

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

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

Примеры:

Подключаемся к устройству, а затем используем структуру с информацией об устройстве gf_dev_info_t для привязки к дисплею устройства:

gf_dev_t gdev;
gf_dev_info_t gdev_info;
gf_display_t display;
gf_display_info_t display_info;
int i;
if ( gf_dev_attach( &gdev, GF_DEVICE_INDEX( 0 ), &gdev_info ) != GF_ERR_OK )
{
printf( "gf_dev_attach() failed\n" );
return (-1);
}
printf( "Number of displays: %d\n", gdev_info.ndisplays );
for ( i = gdev_info.ndisplays; i; )
{
printf( "Display %d: ", i-- );
if ( gf_display_attach( &display, gdev, i, &display_info ) == GF_ERR_OK )
{
printf( "%dX%d, refresh = %dHz\n", display_info.xres, display_info.yres, display_info.refresh );
printf( "Number of layers: %d\n", display_info.nlayers );
} else {
printf( "gf_display_attach() failed\n" );
}
}

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

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

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

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

gf_dev_detach(), gf_display_set_layer_order()




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