Microsoft resolve problema de flash branco no Chrome e Edge no modo escuro para Windows 11 e Windows 10

Microsoft resolve problema de flash branco no Chrome e Edge no modo escuro para Windows 11 e Windows 10

Graças à mudança da Microsoft para o Chromium, os usuários agora podem aproveitar funcionalidades aprimoradas no Google Chrome e no Microsoft Edge. A integração levou a melhorias significativas, incluindo rolagem mais suave, manuseio de fontes otimizado e melhor eficiência da bateria especificamente para o Windows 11. Agora, a Microsoft está voltando sua atenção para melhorar os recursos do modo escuro junto com o Desktop Window Manager (DWM.exe).

No entanto, um problema comum persiste: ao utilizar o Chrome no modo escuro no Windows 10 ou Windows 11, os usuários frequentemente encontram um breve flash branco ao abrir uma nova janela. Essa ocorrência indesejada destaca um problema em que nem o navegador nem o sistema operacional sabem como gerenciar a renderização inicial corretamente, levando a uma tela intermediária feia.

Isso também é perceptível ao iniciar o Chrome e o Edge sob as configurações de tema escuro do sistema operacional. Embora tanto o Google quanto a Microsoft tenham abordado anteriormente aspectos da integração do tema escuro, o desafio permanece particularmente evidente durante a transição entre janelas do navegador. Problemas de flash semelhantes foram observados anteriormente no Windows File Explorer, mas foram resolvidos na atualização do Windows 11 23H2.

Resolvendo o problema do flash branco no modo escuro do Chromium

Com base em um commit de código do Chromium recente analisado pelo Windows Latest, parece que o problema decorre da falta de manipulação necessária do Windows para janelas do Chrome recém-criadas. Ao iniciar uma nova janela, o Windows 11 assume como padrão um fundo branco, permanecendo visível até que o Chrome ou o Edge assuma o controle.

Flash branco cromado
Flash branco cromado | Cortesia da imagem: WindowsLatest.com

Neste contexto, quando o Windows 11 opera no modo escuro, o gerenciamento de novas exibições de janelas representa um problema, com o Windows inicialmente lidando com a fase de carregamento até que os respectivos aplicativos estabeleçam sua renderização. Infelizmente, neste estágio, o Windows não reconhece o gerenciamento do tema escuro efetivamente.

Chris Davis, um desenvolvedor da Microsoft, introduziu uma solução alternativa para mitigar o flash branco implementando uma técnica de camuflagem. Isso envolve ocultar a janela até que um fundo escuro apropriado possa ser renderizado pelo Chrome ou Edge. Embora isso seja mais um patch do que uma solução definitiva para o problema do DWM.exe, parece ser a resolução mais viável disponível atualmente.

Como Chris Davis explica, “Quando uma janela é criada pela primeira vez, o DWM usará uma cor de fundo branca padrão para a janela. Isso pode causar um flash branco ao mostrar a janela pela primeira vez no modo escuro. Para evitar isso, nós camuflamos a janela antes de mostrá-la pela primeira vez e forçamos uma pintura da cor de fundo pretendida antes de desmascarar.”

Uma análise mais aprofundada dos commits do Chromium indica modificações em ui/views/win/hwnd_message_handler.cc.

No estado camuflado, o código emprega chamadas GDI para preencher a área do cliente com uma cor escura. Ao atingir o tom escuro desejado, a Microsoft define DWMWA_CLOAKpara FALSE, revelando a janela com o visual escuro esperado em vez de um flash branco abrupto.

Embora alguns colaboradores tenham expressado preocupações sobre possíveis condições de corrida — nas quais uma GPU pode renderizar o conteúdo da página enquanto a janela é atualizada para um fundo escuro — os testes da Microsoft não revelaram tais problemas, o que sugere uma transição suave assim que o patch for implantado.

Olhando para o futuro, é plausível que o Google e a Microsoft refinem como o Chromium gerencia janelas de nível superior. Soluções futuras podem ver a implementação de métodos como WS_EX_NOREDIRECTIONBITMAPou APIs mais novas do Windows (por exemplo, DWM_SYSTEMBACKDROP_TYPE) para evitar o flash branco completamente.

Por enquanto, porém, o método de camuflagem introduzido por Davis será adotado, eliminando o efeito de flash branco no Windows 10 e no Windows 11. Espere que essas melhorias sejam lançadas em breve para usuários do Chrome e do Edge.

Insights adicionais

1. Qual é a causa do problema do flash branco no Chrome e no Edge?

O problema do flash branco ocorre porque o Windows usa um fundo branco como padrão sempre que uma nova janela é criada, o que contrasta com as configurações de tema do modo escuro do navegador.

2. Quais são as implicações do método de camuflagem proposto pela Microsoft?

O método de camuflagem é uma solução temporária que oculta a janela até que o fundo escuro possa ser exibido corretamente. Isso evita que o flash branco apareça durante as transições de janela.

3. As atualizações futuras eliminarão completamente o flash branco?

Embora o método de camuflagem atual resolva o problema do flash branco, atualizações futuras podem explorar soluções mais integradas no Chromium e no Windows para, eventualmente, resolver os problemas subjacentes de forma mais eficaz.

Fonte e Imagens

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *