xrandr chamada faz esquecer a exibição secundária

4

Em suma

Eu tenho um laptop com um monitor DVI externo que é conectado à sua porta de exibição (via adaptador). Quando eu girar a tela interna usando xrandr , ela esquece a exibição secundária. Chamar xrandr várias vezes não tem nenhum efeito. Eu tenho que desligar o monitor externo, esperar um pouco, chamar xrandr novamente e encontrar o display.

Os detalhes

Eu uso o Kubuntu 13.10 com Awesome WM em vez do KWin Windows Manager normal. Portanto, já existem dois sistemas que fazem coisas com displays.

O laptop é um ThinkPad X220 Tablet, que possui uma Display Port no próprio dispositivo e outro na estação de encaixe UltraBase, que eu uso atualmente. O monitor é um Samsung SyncMaster 2443BW com um adaptador DVI para Display Port.

Então, eu uso meu próprio think-rotate para girar o interno ( LVDS1 ) tela quando eu girar a exibição física (via gancho ACPI). Esse script usa xrandr para girar a tela.

Quando eu chamo think-rotate , ele irá apresentar a seguinte saída xrandr :

Screen 0: minimum 320 x 200, current 1366 x 768, maximum 32767 x 32767
LVDS1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 277mm x 156mm
   1366x768       60.0*+
   1360x768       59.8     60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)

Você vê que o HDMI2 está completamente ausente. Depois de deixar toda a energia drenar do monitor externo, chamar xrandr novamente me deu a tela de volta e a seguinte saída:

Screen 0: minimum 320 x 200, current 1366 x 768, maximum 32767 x 32767
LVDS1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 277mm x 156mm
   1366x768       60.0*+
   1360x768       59.8     60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 connected (normal left inverted right x axis y axis)
   1920x1200      60.0 +
   1600x1200      60.0  
   1280x1024      60.0  
   1280x960       60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        60.0  
HDMI3 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

Eu olhei para o /var/log/syslog e encontrei o seguinte na saída de depuração do script think-rotate :

Jan  6 20:20:26 Martin-X220 colord: device removed: xrandr-Samsung Electric Company-SyncMaster-H9XS113172
Jan  6 20:20:26 Martin-X220 colord: Device added: xrandr-Samsung Electric Company-SyncMaster-H9XS113172

Como posso fazer a triagem deste problema? Eu tenho outros visores DVI e VGA, eu tenho outra Display Port no próprio ThinkPad.

Eu assumo que o problema é a interação entre algo no KDE, Awesome WM (que recarrega sua configuração em cada mudança de exibição) e minhas xrandr chamadas.

Acompanhamento

Sem o Awesome WM, o KDE simples com o KWin

Acabei de iniciar o KDE sem o Awesome WM. Ele não apenas esqueceu a exibição externa quando eu girava, mas também causou falhas graves na composição. Eu achei que think-rotate é chamado duas vezes pelo gancho ACPI, então estou atualmente implementando uma proteção contra isso. Executá-lo duas vezes simultaneamente pode ser a causa das falhas. O esquecimento da exibição é causado quando eu chamo think-rotate manualmente, então isso não é causado pela execução duas vezes.

Sem o KDE, simples WM impressionante

Agora estou apenas com o Awesome WM, nenhum KDE foi iniciado. Não há problema. Eu vi aqui que é chamado duas vezes e trabalho naquele guarda. É chamado duas vezes, mas executa apenas um agora. Aparentemente, a questão não persiste aqui. Embora eu não goste de admitir, mas com as informações que tenho atualmente, o KDE parece causar o problema.

Atualização 2014-01-06 21: 37 + 0100

Bem, parece que a rotação funciona sem problemas com o Awesome WM simples. Quando eu o coloco na estação de acoplamento, ele não vê a tela externa imediatamente. Tenho que desligá-lo e ligar manualmente para xrandr para que ele funcione.

Atualização 2014-01-21 21: 53 + 0100

Eu tentei outro monitor DVI e não tive problemas com ele. Quando volto para o meu Samsung SyncMaster, recebo o problema novamente. Awesome WM sozinho causou problemas, o KDE com o Awesome WM também causa problemas. Ainda está quebrado!

Atualização 2014-03-10 18: 17 + 0100

O problema persiste. Eu usei um cabo VGA para testá-lo, e isso não parece ter o problema. Minha solução atual é desativar o visor, chamar xrandr e, em seguida, ligá-lo novamente. Talvez o Ubuntu 14.04 conserte o problema.

    
por Martin Ueding 06.01.2014 / 20:14

1 resposta

1

O problema também persiste quando é conectado a computadores diferentes, e também a uma máquina com Windows 7. É um defeito de hardware, eu comprei um novo display há algum tempo.

    
por 07.06.2015 / 22:05