최신 X 서버에서 제대로 실행되지 않는 오래된 X 응용 프로그램 문제를 해결하는 방법은 무엇입니까?

최신 X 서버에서 제대로 실행되지 않는 오래된 X 응용 프로그램 문제를 해결하는 방법은 무엇입니까?

복잡한 신호 처리 패키지의 일부로 제공되는 오래된 X 응용 프로그램이 있습니다. 응용 프로그램은 디스플레이가 없는 서버에 상주하며 다른 X 서버를 사용하는 클라이언트가 해당 서버에 연결됩니다.

이전 Linux 클라이언트 시스템(예: RHEL5)에서는 응용 프로그램이 잘 그려지지만 최신 Linux 클라이언트 시스템(예: RHEL6, Centos5, Ubuntu10)에서는 그리기에 결함이 있습니다. 창이 비어 있거나 새로 고쳐지지 않거나 깨져 있습니다. 이전에 막혔던 것 뒤에 있는 빈 사각형 부분.

BackingStore 옵션을 사용하도록 X 서버를 조정하면 문제가 부분적으로 사라졌지만 이는 사소한 개선에 불과했습니다. 창 내용을 올바르게 그리려면 내 응용 프로그램의 문제를 어떻게 해결해야 합니까? 활성화해야 하는 특정 확장 및/또는 해결 방법이 있습니까? 이전 X 버그/세부 사항이 "지원"되어야 합니까?

xdpyinfo편집: 여기에 작동 중인 클라이언트의 덤프를 업로드했습니다.http://pastebin.com/W0WHQ8hx그리고 근무하지 않는 클라이언트는 다음과 같습니다.http://pastebin.com/X49c6ckW. 주요 차이점은 PseudoColor작업 중인 클라이언트에 표시되고 작업하지 않는 클라이언트에는 표시되지 않는 시각적인 것처럼 보이지만 그것이 중요한지 확실하지 않습니다.

답변1

(이것은 실제로 답변이 아니며 여러 제안에 가깝습니다. 하지만 댓글에 다 담기에는 너무 깁니다.)

주문하다xdpy 정보등록된 모든 확장 기능 및 비교를 시작할 수 있는 시각 효과 목록을 포함하여 X 서버 기능 목록을 제공합니다.

그러나 BackingStore를 다시 활성화하면 문제가 해결될 것이라고 암시하므로 이것이 클라이언트 문제라고 의심됩니다. 클라이언트가 X11 작동 방식에 대해 잘못된 가정을 하고 있거나 어떤 방식으로든 ICCCM을 위반하고 있습니다(Java는 이에 대해 악명 높음). 명백함) 따라서 일부 기본 설정을 변경한 최신 버전의 X11에 의해 손상되었습니다.

두 가지 임시 솔루션:

  • 달리기x11vnc애플리케이션이 있는 노드에서 최신 호스트의 VNC를 통해 해당 노드에 연결하면 x11vnc 화면의 크기를 적절하게 조정하여 대역폭 소비를 줄일 수 있습니다.

  • 달리기X 둥지최신 노드에서는 문제가 있는 응용 프로그램을 Xnest 디스플레이에 연결하도록 하세요. 응용 프로그램과 호환될 만큼 충분히 오래된 Xnest 버전을 컴파일할 수 있어야 합니다.

답변2

(정확한 답변은 아니지만 가능합니다.)

주어진 색상 수를 지원하는 모니터에서만 실행되는 X 응용 프로그램을 작성하는 것이 가능합니다. 8비트가 아닌 컬러 모니터에서는 실행되지 않는 일부 오래된 프로그램을 발견했습니다. 작업 디스플레이는 PseudoColor애플리케이션이 기본 24비트 깊이 외에 8비트 또는 12비트 깊이를 사용할 수 있도록 하는 시각적 효과를 제공합니다. 작동하지 않는 디스플레이는 24비트 및 32비트 시각적 개체만 제공합니다.

따라서 응용 프로그램이 선호하는 색상 수(대개 256개)를 사용하여 서버와 상호 작용하지 못하는 경우 이는 응용 프로그램의 버그일 가능성이 높습니다. 고치는 게 이렇게 힘든 일인지 몰랐어요.

VNC에서 애플리케이션을 실행해 보십시오 Xvnc -depth 8.Xvnc -cc 3실제 VNC VNC 서버) 도움이 될 수 있습니다.

관련 정보