한국어
Linux Programming
 

Wayland 의 주요 객체들

makersweb 2020.06.04 17:34 조회 수 : 15

wl_display

핵심 글로벌 객체. 이것은 특별한 싱글톤 객체다. 컴포지터에 대한 연결을 나타내고 wl_display 싱글톤 객체에 대한 프록시 역할을한다. wl_display_connect() 또는 wl_display_connect_to_fd()로 생성한다.

 

wl_registry

일반적으로 서버의 실제 개체(예 : 입력 장치)를 나타내거나 확장 기능을 제공하는 단일 객체이다.

클라이언트가 레지스트리 오브젝트를 생성하면 레지스트리 오브젝트는 현재 레지스트리에있는 각 글로벌에 대한 이벤트를 생성한다.

 

wl_callback

클라이언트는 '완료'이벤트를 처리하여 관련 요청이 완료되면 알림을받을 수 있다.

 

wl_compositor

컴포지터는 여러 표면의 컨텐츠를 하나의 표시 가능한 출력으로 결합하는 싱글톤 객체.

 

wl_shm_pool

wl_shm_pool 객체는 컴포지터와 클라이언트간에 공유되는 메모리를 캡슐화한다.

 

wl_shm

shared memory를 지원하는 싱글톤 객체.

클라이언트는 create_pool 을 요청하여 wl_shm_pool 객체를 생성할 수 있다.

 

wl_buffer

버퍼는 wl_surface 에 컨텐츠를 제공한다. 버퍼는 wl_drm, wl_shm 등과 같이 팩토리 인터페이스를 통해 작성된다.

 

wl_seat

시트는 키보드 및 마우스, 터치장치들의 그룹이다. 입력장치는 전역 객체로 사용된다.

 

wl_surface

서페이스는 화면에 표시되는 직사각형 영역이다. 위치, 크기 및 픽셀 정보가 있다.

"역할(role)"이 없는 서페이스는 쓸모가 없다. 컴포지터는 그것을 언제, 어디서, 어떻게 표현할 지 모르기 때문이다. 역할은 wl_surface의 목적이라 할 수 있다.

역할의 예로는 포인터 (wl_pointer.set_cursor 에서 설정 한 커서), 드래그 아이콘 (wl_data_device.start_drag), 하위 서페이스(wl_subcompositor.get_subsurface) 및 쉘 프로토콜에 의해 정의 된 창(예 : wl_shell.get_shell_surface)이 있다.

wl_surface는 한 번에 하나의 역할 만 할 수 있다. 처음에는 wl_surface 에 역할이 없고 wl_surface에 역할이 부여되면 wl_surface 오브젝트의 전체 수명 동안 영구적으로 설정된다. 관련 인터페이스 사양에서 명시 적으로 금지하지 않는 한 현재 역할을 다시 부여 할 수 있다.

서페이스의 역할은 wl_pointer.set_cursor 와 같은 다른 인터페이스의 요청에 의해 제공된다. 요청은 wl_surface에 역할을 제공한다고 명시적으로 언급되어야한다. 클라이언트가 wl_surface 를 파기하려는 경우 그 전에 wl_surface 의 'role object'를 파기해야한다.

 

wl_subsurface

SubSurface에는 하나의 부모 서페이스가 있다. 특히 SubSurface는 부모 영역에 자동으로 클리핑되지 않는다. 부모가 숨겨 지거나 NULL wl_buffer가 적용되면 SubSurface도 숨겨진다. 

SubSurface에는 wl_surface 요청과 달리 wl_subsurface 요청으로 관리되는 다른 종류의 상태가 있다.

 

wl_subcompositor

SubSurface 컴포지터기능을 제공하는 전역 객체. 하위 서페이스가 연결된 wl_surface를 부모 서페이스라고한다. 하위 서페이스를 임의로 중첩하여 하위 표면 트리를 만들 수 있다.

SubSurface 트리의 루트 Surface가 기본 Surface이다. SubSurface에는 항상 부모가 있어야하므로 주 표면은 하위 표면 일 수 없다. SubSurface가 있는 주 표면은 창을 형성한다. SubSurface의 목표는 창에서 일부 합성 작업을 클라이언트에서 컴포지터로 오프로드하는 것이다. 대표적인 예는 별도의 wl_surface 객체에 장식과 비디오가있는 비디오 플레이어다.

이를 통해 컴포지터는 가능한 경우 YUV 비디오 버퍼 처리를 전용 오버레이 하드웨어로 전달할 수 있다.

 
이 글과 연관된 다른 글
  1. [2020/06/04] Wayland 의 Client Application 프로그래밍 기본 루틴 by makersweb (23)
  2. [2020/06/03] Weston 의 설명 및 관련 컴포넌트 by makersweb (15)
  3. [2019/05/12] Wayland IVI Extension 간단 리뷰 by makersweb (928)
  4. [2017/12/29] Wayland에 대한 간단한 소개 by makersweb (1544)
  5. [2017/12/28] Ubuntu16.04에서 weston구동 by makersweb (414)
번호 제목 글쓴이 날짜 조회 수
35 리눅스 오디오 스택과 아키텍처 file makersweb 2020.09.02 21
34 wayland-scanner 를 통해 Wayland 프로토콜 코드생성 makersweb 2020.06.08 6
33 Wayland 의 Client Application 프로그래밍 기본 루틴 makersweb 2020.06.04 23
» Wayland 의 주요 객체들 makersweb 2020.06.04 15
31 Weston 의 설명 및 관련 컴포넌트 makersweb 2020.06.03 15
30 64비트 리눅스에서 32비트 응용프로그램을 실행하려면 makersweb 2020.02.29 311
29 initramfs (initial ram file system: 초기 램 파일 시스템) makersweb 2020.02.25 85
28 플랫폼 디바이스 드라이버 개발 시 많이 사용되는 커널 API 및 매크로 makersweb 2020.01.28 340
27 PATH에 새로운 경로 추가 makersweb 2019.09.19 90
26 리눅스 컴파일러 최신으로 업데이트 linux 2018.12.26 1165
25 libblkid - USB Storage의 정보 가져오기 makersweb 2018.10.18 243
24 tslib 크로스 컴파일과 터치스크린 보정 makersweb 2018.08.02 1016
23 Ubuntu Linux에서 dbus-c++바인딩 D-Bus 테스트 file makersweb 2018.03.07 3650
22 NFS를 통해 파일시스템 공유 makersweb 2018.03.05 666
21 Wayland에 대한 간단한 소개 file makersweb 2017.12.29 1544
20 Ubuntu16.04에서 weston구동 file makersweb 2017.12.28 414
19 UVC 장치를 사용할때 v4l2: select timeout 에러 발생 makersweb 2017.12.27 651
18 [IPC]D-Bus 소개 file makersweb 2015.02.28 25322
17 리눅스 데스크탑 환경 종류 pjk 2015.02.11 4114
16 디바이스 드라이버에 대해서 makersweb 2014.04.19 3754