Bug 988370 - Don't use progressive/low precision rendering on fixed layers. r=mattwoodrow

Fixed layers don't async scroll, so it doesn't make sense for them to have
a low precision region or for them to be rendered progressively.
This commit is contained in:
Chris Lord 2014-03-31 17:42:32 +01:00
Родитель ec55847d33
Коммит 537b992447
1 изменённых файлов: 6 добавлений и 2 удалений

Просмотреть файл

@ -216,13 +216,17 @@ ClientTiledThebesLayer::RenderLayer()
ToClientLayer(GetMaskLayer())->RenderLayer(); ToClientLayer(GetMaskLayer())->RenderLayer();
} }
bool isFixed = GetIsFixedPosition() || GetParent()->GetIsFixedPosition();
// Fast path for no progressive updates, no low-precision updates and no // Fast path for no progressive updates, no low-precision updates and no
// critical display-port set, or no display-port set. // critical display-port set, or no display-port set, or this is a fixed
// position layer/contained in a fixed position layer
const FrameMetrics& parentMetrics = GetParent()->GetFrameMetrics(); const FrameMetrics& parentMetrics = GetParent()->GetFrameMetrics();
if ((!gfxPrefs::UseProgressiveTilePainting() && if ((!gfxPrefs::UseProgressiveTilePainting() &&
!gfxPrefs::UseLowPrecisionBuffer() && !gfxPrefs::UseLowPrecisionBuffer() &&
parentMetrics.mCriticalDisplayPort.IsEmpty()) || parentMetrics.mCriticalDisplayPort.IsEmpty()) ||
parentMetrics.mDisplayPort.IsEmpty()) { parentMetrics.mDisplayPort.IsEmpty() ||
isFixed) {
mValidRegion = mVisibleRegion; mValidRegion = mVisibleRegion;
NS_ASSERTION(!ClientManager()->IsRepeatTransaction(), "Didn't paint our mask layer"); NS_ASSERTION(!ClientManager()->IsRepeatTransaction(), "Didn't paint our mask layer");