Microsoft、Windows 11 および Windows 10 のダーク モードでの Chrome と Edge の白いフラッシュの問題を解決

Microsoft、Windows 11 および Windows 10 のダーク モードでの Chrome と Edge の白いフラッシュの問題を解決

Microsoft が Chromium に移行したおかげで、ユーザーは Google Chrome と Microsoft Edge の両方で強化された機能を利用できるようになりました。この統合により、特に Windows 11 では、スクロールのスムーズ化、フォント処理の最適化、バッテリー効率の向上など、大幅な機能強化が実現しました。現在、Microsoft はデスクトップ ウィンドウ マネージャー (DWM.exe) とともにダーク モード機能の改善に注力しています。

しかし、よくある問題が残っています。Windows 10 または Windows 11 で Chrome をダーク モードで使用すると、新しいウィンドウを開くときに短い白いフラッシュが表示されることがよくあります。この望ましくない現象は、ブラウザもオペレーティング システムも初期レンダリングを正しく管理する方法を知らず、見苦しい中間画面が表示されるという問題を浮き彫りにしています。

これは、オペレーティング システムのダーク テーマ設定で Chrome と Edge を起動したときにも同様に顕著です。Google と Microsoft はどちらもダーク テーマの統合の側面に対処してきましたが、ブラウザー ウィンドウ間の切り替え時に特に問題が顕著になっています。同様のフラッシュの問題は以前に Windows ファイル エクスプローラー内で確認されていましたが、これらは Windows 11 23H2 アップデートで解決されました。

Chromium ダーク モードでのホワイト フラッシュの対処

Windows Latest が分析した最近の Chromium コード コミットに基づくと、この問題は Windows が新しく作成された Chrome ウィンドウに必要な処理を欠いているために発生しているようです。新しいウィンドウを起動すると、Windows 11 はデフォルトで白い背景に設定され、Chrome または Edge が制御を主張するまで表示されたままになります。

クロームホワイトフラッシュ
Chrome の白いフラッシュ | 画像提供: WindowsLatest.com

この文脈では、Windows 11 がダーク モードで動作している場合、新しいウィンドウ表示の管理に問題が生じます。Windows は最初にロード フェーズを処理し、その後各アプリケーションがレンダリングを確立します。残念ながら、この段階では、Windows はダーク テーマの管理を効果的に認識しません。

Microsoft 開発者の Chris Davis 氏は、クローキング技術を実装することで、ホワイト フラッシュを軽減する回避策を紹介しました。これは、Chrome または Edge で適切な暗い背景がレンダリングされるまでウィンドウを隠すというものです。これは DWM.exe の問題に対する決定的な解決策というよりはパッチに近いものですが、現在利用可能な最も実現可能な解決策のようです。

Chris Davis 氏は次のように説明しています。「ウィンドウが最初に作成されると、DWM はウィンドウにデフォルトの白い背景色を使用します。これにより、ウィンドウをダーク モードで初めて表示するときに白いフラッシュが発生する可能性があります。これを回避するには、最初に表示する前にウィンドウをクロークし、クローク解除する前に意図した背景色で強制的にペイントします。」

Chromium コミットをさらに調査すると、 への変更が示されますui/views/win/hwnd_message_handler.cc

クローク状態では、コードは GDI 呼び出しを使用してクライアント領域を暗い色で塗りつぶします。目的の暗い色相が達成されると、Microsoft はDWMWA_CLOAKに設定しFALSE、突然の白いフラッシュではなく、期待どおりの暗いビジュアルでウィンドウを表示します。

一部の貢献者は、ウィンドウが暗い背景に更新されると GPU がページ コンテンツをレンダリングする可能性があるという潜在的な競合状態について懸念を表明していますが、Microsoft のテストではそのような問題は発見されておらず、パッチが展開されるとスムーズに移行できることが示唆されています。

今後、Google と Microsoft が Chromium によるトップレベル ウィンドウの管理方法を改善する可能性は十分にあります。将来のソリューションでは、 などのメソッドWS_EX_NOREDIRECTIONBITMAPや新しい Windows API (例: DWM_SYSTEMBACKDROP_TYPE) が実装され、白いフラッシュが完全に防止される可能性があります。

ただし、当面は、デイビス氏が導入したクローキング手法が採用され、Windows 10 と Windows 11 の両方で白いフラッシュ効果が排除されます。これらの改善は、Chrome および Edge ユーザー向けにまもなく展開される予定です。

追加の洞察

1. Chrome と Edge で白いフラッシュが発生する問題の原因は何ですか?

白いフラッシュの問題は、新しいウィンドウが作成されるたびに Windows がデフォルトで白い背景に設定され、ブラウザのダーク モード テーマ設定と対照的になるために発生します。

2. Microsoft が提案したクローキング手法にはどのような影響がありますか?

クローキング方式は、暗い背景が適切に表示されるまでウィンドウを隠す一時的な回避策です。これにより、ウィンドウの切り替え時に白いフラッシュが表示されるのを防ぎます。

3. 将来のアップデートで白いフラッシュは完全になくなるのでしょうか?

現在のクローキング方法は白いフラッシュに対処しますが、将来のアップデートでは、Chromium と Windows 内でより統合されたソリューションが検討され、最終的には根本的な問題をより効果的に解決する可能性があります。

出典と画像

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です