Подключение ранее созданной поверхности
#include <gf/gf.h>int gf_surface_attach_by_sid( gf_surface_t *psurface,gf_dev_t gdev,gf_sid_t sid );
gf
Подключение ранее созданной поверхности по ее уникальному идентификатору (SID).
Эта функция не позволяет управлять параметрами поверхности, так как она уже создана. |
Потоки не должны вызывать эту функцию между вызовами gf_draw_begin() и gf_draw_end(). В противном случае возможна взаимная блокировка потоков. |
Любая поверхность, управляемая менеджером io-display (поверхности, созданные через gf_surface_create() или gf_surface_create_layer()), может быть разделена между его клиентскими процессами с использованием ее уникального идентификатора SID. Посредством подобного совместного доступа несколько процессов могут использовать единую поверхность для рендеринга ее фрагментов.
Способ синхронизации доступа к этой поверхности определяется приложениями самостоятельно. |
Получить уникальный идентификатор поверхности (SID) можно используя функцию gf_surface_get_info(). Обратите внимание также на константу GF_SID_INVALID по ссылке.
Из-за возможности использования поверхности несколькими процессами через gf_surface_attach_by_sid(), вызов gf_surface_free() освободит дескриптор gf_surface_t
, но не обязательно ассоциированный буфер памяти. Менеджер io-display осуществляет подсчет ссылок на разделяемые поверхности и освобождает ресурсы только после их освобождения всеми клиентскими процессами.
NULL
Графическая подсистема ЗОСРВ «Нейтрино», Graphics Framework
gf_surface_create(), gf_surface_attach(), gf_surface_get_info()
Предыдущий раздел: GF API