![Xorg에서 서버측 구성과 클라이언트측 구성의 차이점은 무엇입니까?](https://linux55.com/image/63797/Xorg%EC%97%90%EC%84%9C%20%EC%84%9C%EB%B2%84%EC%B8%A1%20%EA%B5%AC%EC%84%B1%EA%B3%BC%20%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%B8%A1%20%EA%B5%AC%EC%84%B1%EC%9D%98%20%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
xcompmgr은 다음 옵션을 제공합니다:
-s Server-side compositing with hard-edged shadows.
실험을 통해 이것이 "클라이언트" 옵션보다 훨씬 빠르다고 말할 수 있습니다. 그런데 정확히 무엇을 하고 있는 걸까요? Xorg의 클라이언트 측 구성과 서버 측 구성의 차이점은 무엇입니까?
그리고 더 중요한 것은 창 관리자 등에서 서버측 합성을 구현하려면 어떤 Xorg 기능 세트를 사용해야 합니까?
답변1
그래서 xcompmgr 소스 코드를 살펴보면 다음과 같은 것을 발견했습니다.
-s와 -c의 주요 차이점은 합성이 수행되는 방식보다는 그림자 효과 자체가 달성되는 방식인 것 같습니다. 무슨 일이 일어나고 있는지 정확히 이해하는 데 약간의 어려움이 있지만(그래픽은 내 장점이 아님) "서버 측" 그림자를 생성하는 루틴이 더 간단해 보입니다. 내 생각엔 창 크기의 투명한 회색 비트맵 같은 것을 만드는 것 같아요. 요점은 더 저렴한 루틴이라는 것입니다.
내가 원하는 기능은 "man Xcomposite"에 나열되어 있으며 X11/extensions/Xcomposite.h에서 찾을 수 있습니다. 구성 관리자(또는 구성 WM)의 경우 특히 XCompositeRedirectSubwindows() 및 XCompositeUnredirectSubwindows()가 필요합니다. (후자는 X 디스플레이를 닫기 전에 실행해야 합니다. 그렇지 않으면 세그폴트가 발생합니다.)