Gracias al cambio de Microsoft a Chromium, los usuarios ahora pueden disfrutar de funcionalidades mejoradas tanto en Google Chrome como en Microsoft Edge. La integración ha dado lugar a mejoras significativas, como un desplazamiento más fluido, un manejo optimizado de las fuentes y una mejor eficiencia de la batería, especialmente para Windows 11. Ahora, Microsoft está centrando su atención en mejorar las capacidades del modo oscuro junto con el Administrador de ventanas del escritorio (DWM.exe).
Sin embargo, persiste un problema común: al utilizar Chrome en modo oscuro en Windows 10 o Windows 11, los usuarios suelen encontrarse con un breve destello blanco al abrir una nueva ventana. Esta ocurrencia no deseada pone de relieve un problema en el que ni el navegador ni el sistema operativo saben cómo gestionar correctamente la representación inicial, lo que da lugar a una pantalla intermedia antiestética.
Esto también se nota al iniciar Chrome y Edge con la configuración de tema oscuro del sistema operativo. Si bien tanto Google como Microsoft han abordado anteriormente aspectos de la integración del tema oscuro, el problema sigue siendo particularmente evidente durante la transición entre ventanas del navegador. Anteriormente se observaron problemas similares con Flash en el Explorador de archivos de Windows, pero se han resuelto en la actualización 23H2 de Windows 11.
Cómo solucionar el problema del destello blanco en el modo oscuro de Chromium
Según una reciente confirmación de código de Chromium analizada por Windows Latest, parece que el problema se debe a que Windows no tiene el control necesario para las ventanas de Chrome recién creadas. Al iniciar una nueva ventana, Windows 11 tiene un fondo blanco predeterminado, que permanece visible hasta que Chrome o Edge toman el control.
En este contexto, cuando Windows 11 funciona en modo oscuro, la gestión de las nuevas ventanas se convierte en un problema, ya que Windows se encarga inicialmente de la fase de carga hasta que las aplicaciones respectivas establecen su renderizado. Lamentablemente, en esta fase, Windows no reconoce de forma eficaz la gestión del modo oscuro.
Chris Davis, un desarrollador de Microsoft, ha presentado una solución alternativa para mitigar el destello blanco mediante la implementación de una técnica de ocultación. Esto implica ocultar la ventana hasta que Chrome o Edge puedan mostrar un fondo oscuro adecuado. Si bien se trata más de un parche que de una solución definitiva al problema de DWM.exe, parece ser la resolución más factible disponible actualmente.
Como explica Chris Davis: “Cuando se crea una ventana por primera vez, DWM utilizará un color de fondo blanco predeterminado para la ventana. Esto puede provocar un destello blanco cuando se muestra la ventana por primera vez en modo oscuro. Para evitarlo, ocultamos la ventana antes de mostrarla por primera vez y forzamos una pintura del color de fondo deseado antes de desobstruirla”.
Un examen más detallado de las confirmaciones de Chromium indica modificaciones en ui/views/win/hwnd_message_handler.cc
.
En el estado oculto, el código emplea llamadas GDI para rellenar el área del cliente con un color oscuro. Una vez que se logra el tono oscuro deseado, Microsoft establece DWMWA_CLOAK
en FALSE
, lo que revela la ventana con el efecto visual oscuro esperado en lugar de un destello blanco repentino.
Si bien algunos colaboradores han expresado su preocupación por posibles condiciones de carrera (donde una GPU puede renderizar el contenido de una página a medida que la ventana se actualiza con un fondo oscuro), las pruebas de Microsoft no han descubierto tales problemas, lo que sugiere una transición fluida una vez que se implemente el parche.
De cara al futuro, es plausible que Google y Microsoft perfeccionen la forma en que Chromium administra las ventanas de nivel superior. Las soluciones futuras podrían incluir la implementación de métodos como WS_EX_NOREDIRECTIONBITMAP
o API de Windows más nuevas (por ejemplo, DWM_SYSTEMBACKDROP_TYPE
) para evitar el destello blanco por completo.
Por el momento, sin embargo, se adoptará el método de encubrimiento introducido por Davis, eliminando el efecto de destello blanco tanto en Windows 10 como en Windows 11. Esperamos que estas mejoras se implementen pronto para los usuarios de Chrome y Edge.
Información adicional
1. ¿Cuál es la causa del problema del destello blanco en Chrome y Edge?
El problema del destello blanco ocurre porque Windows usa de manera predeterminada un fondo blanco cada vez que se crea una nueva ventana, lo que contrasta con la configuración del tema del modo oscuro del navegador.
2. ¿Cuáles son las implicaciones del método de encubrimiento propuesto por Microsoft?
El método de ocultación es una solución temporal que oculta la ventana hasta que se pueda visualizar correctamente el fondo oscuro. Esto evita que aparezca el destello blanco durante las transiciones de ventana.
3. ¿Las futuras actualizaciones eliminarán por completo el destello blanco?
Si bien el método de encubrimiento actual soluciona el destello blanco, es posible que futuras actualizaciones exploren soluciones más integradas dentro de Chromium y Windows para eventualmente resolver los problemas subyacentes de manera más efectiva.
Deja una respuesta