Como solucionar problemas dos antigos aplicativos X que funcionam incorretamente em servidores X modernos?

4

Eu tenho um antigo aplicativo X fornecido como parte de um pacote de processamento de sinal complicado. O aplicativo reside no servidor sem display, e os clientes com diferentes servidores X se conectam a ele.

Em sistemas clientes linux antigos, como o RHEL5, o aplicativo desenha muito bem, mas em sistemas clientes linux modernos, como RHEL6, Centos5, o desenho Ubuntu10 falha - janelas estão em branco, não são refrescantes ou truncadas ou têm quadrados vazios por trás as partes anteriormente obscurecidas.

Problemas pereceram parcialmente quando o servidor X foi ajustado para usar a opção BackingStore, mas isso foi apenas uma pequena melhoria. Como posso solucionar o aplicativo para que ele desenhe o conteúdo do Windows corretamente? Quaisquer extensões específicas e / ou soluções alternativas devem ser ativadas? Quaisquer bugs antigos / específicos devem ser "suportados"?

EDIT: Eu enviei um dump de xdpyinfo de um cliente em funcionamento aqui: link e o cliente que não trabalha aqui: link . Parece que a principal diferença está no PseudoColor visuals existente no cliente em funcionamento e ausente no cliente que não trabalha, mas não tenho certeza se isso é importante.

    
por mbaitoff 22.06.2011 / 08:06

2 respostas

1

(Esta não é uma resposta real, mais um monte de sugestões - mas é também muito tempo para caber em um comentário.)

O comando xdpyinfo fornece uma lista de recursos do servidor X, incluindo a lista de todos os extensões e visuais; você poderia começar comparando isso.

No entanto, sua sugestão de reativar o BackingStore corrige o problema me faz suspeitar que este é um problema do cliente: que o cliente faz alguma suposição errada sobre o funcionamento do X11, ou de alguma forma viola o ICCCM (Java é notório por isso) e, portanto, é quebrado por um novo versão do X11 que mudou alguns padrões ...

Duas soluções alternativas:

  • Execute x11vnc no nó onde o aplicativo reside e, em seguida, conectar-se a isso através do VNC dos hosts mais recentes; você pode dimensionar o x11vnc tela de forma adequada para reduzir o consumo de largura de banda.

  • Execute o Xnest nos nós mais recentes e deixe que o aplicativo problemático conecte ao monitor Xnest; você deve ser capaz de compilar um versão do Xnest com idade suficiente para ser compatível com a aplicação.

por 22.06.2011 / 14:36
0

(Esta não é uma resposta definitiva, mas é uma possibilidade.)

É possível escrever aplicativos X que só funcionam em um monitor que suporte um determinado número de cores. Eu encontrei alguns programas antigos que simplesmente não funcionavam em um display com nada além de cores de 8 bits. A exibição de trabalho fornece PseudoColor visuais para permitir que os aplicativos usem a profundidade de 8 ou 12 bits além da profundidade nativa de 24 bits. A tela não funcional fornece apenas visuais de 24 e 32 bits.

Portanto, isso pode ser um bug no aplicativo quando ele não pode interagir com um servidor usando seu número de cores favorito (o mais provável é 256). Eu não tenho ideia de como isso pode ser difícil.

Tente executar o aplicativo no VNC; Xvnc -depth 8 ou Xvnc -cc 3 (no RealVNC O servidor VNC ) pode ajudar.

    
por 24.06.2011 / 09:30