banner

소식

Jun 09, 2023

Wine과 Wayland는 더 많은 코드를 병합하여 한 단계 더 가까워졌습니다.

Wine과 Wayland가 Linux에서 완벽하게 협력할 수 있도록 하기 위한 진행 중인 작업은 세 번째 대규모 병합 요청이 승인되면서 한 단계 더 나아갔습니다. 3월 중순의 Wine 8.4는 실제로 초기 Wayland 작업의 일부를 포함하는 최초의 개발 릴리스였습니다.

현재 수락된 병합 요청에서:

이 MR은 wl_output 이벤트를 안내 사용 사례로 사용하여 Wayland 컴포지터의 동적 이벤트를 처리하는 드라이버 메커니즘을 소개합니다(즉, 호스트 설정이 변경되면 win32u 디스플레이 설정을 업데이트하려고 함).

이 디자인에서는 컴포지터로부터 수신된 Wayland 이벤트를 읽고 전달하는 전용 스레드를 만듭니다. Wayland 이벤트 핸들러가 특정 HWND 스레드의 컨텍스트에서 일부 코드를 실행하려는 경우 각(GUI 사용) 스레드에 대해 보유하고 있는 사용자 정의 대기열에 내부 이벤트를 추가할 수 있습니다. ProcessEvents 드라이버 콜백은 해당 대기열의 내부 이벤트를 처리합니다. 대기 중인 스레드를 깨우기 위해 파이프를 사용하여 새로운 내부 이벤트에 대해 알리고 읽기 끝은 스레드의 호스트 큐 fd 역할을 합니다. 이는 winemac.drv의 작동 방식과 유사합니다.

앞서 언급한 메커니즘을 사용하여 win32u 디스플레이 장치 업데이트를 데스크톱 창 스레드에 대기열에 추가합니다. 제자리에 맞춰야 할 부분이 많기 때문에 이 MR은 점차적으로 최종 디자인에 도달합니다.

실제로 이것이 왜 필요한가요? 현재 Wine은 X11을 사용하므로 Wayland를 실행하는 모든 사람은 기본적으로 호환성 레이어처럼 Wayland에서 실행되는 X인 XWayland를 통해 실행됩니다. Collabora가 2020년 원래 발표에서 말했듯이 그들은 "복잡성과 비효율성의 원천"이므로 "Wine이 Wayland와 직접 대화하여 현대 시스템에서 더 간결하고 효율적인 스택을 활성화할 수 있다면 이상적일 것입니다"라고 말했습니다. "

따라서 최종 결과는 결국 모든 사람이 될 Wayland 사용자가 XWayland 레이어 없이 Wine을 작동하고 먼 미래에도 모든 것이 잘 작동하도록 하는 것입니다.

Liam Dawe 저자 소개 - Liam Dawe
공유하다