情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

【Chrome】バックグラウンド状態のタブ(別タブ・別ウィンドウ)が動かない・止まるようになった場合の対策について(calculate-native-win-occlusion、web-contents-occlusion)

Chrome (238) Windows (497)

Windows版Chromeのアップデート後などに、別ウィンドウで開いているChromeタブをバックグラウンドにさせていると(全画面表示の裏に別ウィンドウを配置する等すると)ページの動作が止まってしまい、ブラウザゲームなどが動作しなくなってしまった、というユーザーが増えています。

この「バックグラウンドのタブが動作しなくなった」などの問題が発生している場合に、問題の切り分けのために試してみたい設定変更を紹介します。

別ウィンドウで開いているタブがバックグラウンドになると止まる・動かない

Windows版Chromeにて、特にChromeの最新版へのアップデート後に、別タブで開いておいたタブを表示していないでいる(バックグラウンド状態にしている/他のウィンドウが全画面表示されて隠れている/別の仮想デスクトップを表示している、等)と動作が止まってしまい、今までは動いていたものが動かなくなってしまった、というユーザーが増えています。

特にブラウザで動作するゲームのユーザーの間でこの種の問題が増えています。

「web-contents-occlusion」設定が消えた

この問題の発生時、以前は「chrome://flags」の「Enable occlusion of web contents(web-contents-occlusion)」と呼ばれる設定項目を「Disabled」に変更する、という方法が利用されていました(※後述するとおりOcclusion機能は省電力などの目的があって導入されているものであるため、無効化する場合はその利点とトレードオフになるなどのデメリットやリスクがあるため注意が必要です)。

「Enable occlusion of web contents」とは、次のような設定です。

If enabled, web contents will behave as hidden when it is occluded by other windows

しかし現在のChrome最新版(バージョン86)では既にその設定が削除されており、設定を変更することができません。

「calculate-native-win-occlusion」設定

その一方で、より新しい設定項目として「Calculate window occlusion on Windows(calculate-native-win-occlusion)」という設定が「chrome://flags」に用意されています。

Calculate window occlusion on Windows will be used in the future to throttle and potentially unload foreground tabs in occluded windows

こちらが「バックグラウンド状態のタブが動作しなくなったので戻したい」という場合に問題が解消する可能性のある設定となっています(そういう目的で用意されている、というより、新機能の有効/無効を変更できるようにするためのオプション)。

この設定項目は「chrome://flags」のページに「警告」として次のように表示されている通り、通常の設定とは異なるリスクのある設定項目であるため、設定変更時はそのあたりのリスクを考慮した上で変更するようにしてください。

警告: 試験運用版の機能です。 これらの機能を有効にすると、ブラウザのデータが失われたり、セキュリティやプライバシーが侵害されたりする可能性があります。有効にした機能は、このブラウザのすべてのユーザーに適用されます。

Occlusion(オクルージョン)とは

これらの設定項目に登場する「Occlusion」とは、「重なって見えなくなる」のような意味合いの言葉で、3Dグラフィックの文脈などで登場することの多い専門用語です。手前に物体があるとき、その物体に遮られて見えなくなった背後にある物体は、表示計算を省略できる、といった感じです。

Chrome(Chromium)における「Occlusion(Window Occlusion)」はどういう意味かというと、「描画対象の上部に別の物(ウィンドウ)が重なった(ので描画を省略できる)」といった意味合いです。

つまり、ウィンドウの上に別のウィンドウが全画面表示されていれば、その裏で隠れているタブの再描画をしてしもしなくても見えないから、その分の演算を省略することで消費電力を抑え、バッテリーを長持ちさせよう、のような方針で、Windowsからの変更通知(Event)を受け取り、オクルージョンの状況(重なりの状況)を再計算することが「(re)calculate window occlusion」と呼ばれています。

不具合登録

現在、このocclusion(occluted)判定(再判定)が正しく実行されず、本当はoccluted状態(隠れている状態)ではないのに解除されず動作しない状態が続いてしまう、といった不具合が登録されています。

この問題の回避策として、先ほどの「calculate-native-win-occlusion」設定変更が案内されています。

参考

コメント(0)

新しいコメントを投稿