O que causa a falha na renderização de lagscreen do Windows XP?

5

Todos nós sabemos da situação quando um programa ou o próprio SO congelou e a única coisa que você pode fazer é pintar com os milhões de diálogos que o sistema renderiza. Estou falando sobre isso ( demonstração aqui ):

Por que isso acontece? E por que eu sempre encontro isso apenas no Windows XP? Isso não ocorre no Linux, Mac ou outras versões do Windows? Se não, por quê? Na verdade, esse bug tem um nome oficial / comum?

    
por totymedli 09.08.2013 / 01:16

1 resposta

5

Isso é chamado de "janela fantasma" . O que acontece é que o processo trava ou fica em deadlock e, portanto, não pode responder à mensagem de pintura para atualizar sua janela. Para lidar com essa situação, o Windows assume e pinta a janela até que o programa torne-se responsivo novamente e se auto-desenhe (ou seja morto ou trava).

Nas versões mais antigas do Windows, uma janela congelada era pintada com a cor de fundo, mas no Windows XP, o Windows tira uma captura de tela da última vez que foi atualizada e usa isso para pintá-la. É claro que se partes da janela são cobertas (como se você a arrastasse para fora da tela), o Windows só pode pintá-la com a cor de fundo (por isso, depois de arrastá-la para fora da tela em todas as direções, ela fica completamente em branco). >

Além disso, quando você arrasta outras janelas sobre ele, elas deixam um rastreamento para trás porque a janela congelada não responde à mensagem de pintura quando parte dela é descoberta.

No Vista +, o Windows ainda pinta janelas fantasmas como no XP, mas usa um truque para fazer a janela parecer que ainda está viva em algum grau; você ainda pode movê-lo e minimizá-lo sem perder a última imagem atualizada ou obter o efeito de hall-of-espelhos. O que ele faz agora é ocultar a janela congelada e substituí-la por uma nova janela temporária feita no mesmo tamanho e forma que a congelada. A nova janela é pintada com uma captura de tela da janela congelada, mas com uma lavagem branca pálida. Agora, quando você arrasta outras janelas sobre ele, ele retém a imagem original (fantasma) porque ela não está realmente congelada; processa a mensagem de pintura, pintando a captura de tela armazenada.

Funcionários da Microsoft Raymond Chen e Matt Eason cobriu bem.

É claro que o Mac, o Linux, etc. todos lidam com o desenho e o gerenciamento de janelas de suas próprias maneiras, então eles respondem às janelas congeladas de maneiras diferentes.

    
por 09.08.2013 / 03:32