Mozilla Flux

Mozilla関係の情報に特化したブログです。

Async Pan/Zoom(APZ)の熟成には時間が必要(Firefox 45)

デスクトップ版Firefox Nightlyでは、Async Pan/Zoom(APZ)と呼ばれる機能が有効化されている。QA/Async Scrolling in e10s - MozillaWikiによれば、この機能は、ビューポート内で可視化されている範囲を超えてコンテンツをあらかじめレンダリングしておくことで、スクロールの応答性を向上させるもので、処理はメインスレッドとは別に非同期で行われる。マルチプロセス機能(e10s)の有効化が前提となっており、また、マウスホイールやトラックパッド/タッチパッドがトリガーとなる(矢印キーなどでは発動しない)。

Windows版/Mac版はNightly 42で(Bug 1157745Bug 1157746)、Linux版はNightly 44で(Bug 1143856)、それぞれ初期設定において有効化された。筆者が使用しているのはWindows版だが、操作に対する反応が顕著に向上し、スムーズかつキビキビとした動きを見せてくれる。

もっとも、Firefox Nightly 45に移行した今なおバグが次々と報告されるありさまで、特にプラグインとの相性が最悪だ。Windows版の話をすると、たとえば、Flashプラグインを利用して動画を再生するとしよう。ふつうなら、動画再生中にページを下方にスクロールさせると動画は上方に流れていき、そのうち隠れてしまう。ところが、Nightly 44で修正されるまで、動画はスクロールに追従する状態だった(Bug 1157708Bug 1137944)。当然ながら動画の下に隠れた文字や画像は見えない。

この酷いバグが修正されてようやく実用的になる、というわけにはいかなかった。今度は、スクロール中に動画がチカチカと消えたり現れたりするようになってしまった(Bug 1212813)。どうやら、メインスレッドの処理が追いつくまで描画を保留にするという仕様がよくなかったようだ。しかも、動画追従バグの修正としても不十分で、最初のスクロール時にはやはり追従が起きる(Bug 1193055)。結局、2015年11月2日時点で修正のアプローチ自体を見直すことになった。

そのほか、スクロールバーがコンテンツに遮られる(Bug 1152049)などのバグが報告されており、APZが製品版に投入されるまでには、まだまだ時間がかかりそうである。