static void AdjustDisplayPortForScrollDelta(mozilla::layers::FrameMetrics& aFrameMetrics, const CSSPoint& aActualScrollOffset) { // Correct the display-port by the difference between the requested scroll // offset and the resulting scroll offset after setting the requested value. LayerPoint shift = (aFrameMetrics.GetScrollOffset() - aActualScrollOffset) * aFrameMetrics.LayersPixelsPerCSSPixel(); LayerMargin margins = aFrameMetrics.GetDisplayPortMargins(); margins.left -= shift.x; margins.right += shift.x; margins.top -= shift.y; margins.bottom += shift.y; aFrameMetrics.SetDisplayPortMargins(margins); }
static void MaybeAlignAndClampDisplayPort(mozilla::layers::FrameMetrics& aFrameMetrics, const CSSPoint& aActualScrollOffset) { // Correct the display-port by the difference between the requested scroll // offset and the resulting scroll offset after setting the requested value. CSSRect& displayPort = aFrameMetrics.mDisplayPort; displayPort += aFrameMetrics.mScrollOffset - aActualScrollOffset; // Expand the display port to the next tile boundaries, if tiled thebes layers // are enabled. if (gfxPlatform::GetPrefLayersEnableTiles()) { displayPort = ExpandDisplayPortToTileBoundaries(displayPort + aActualScrollOffset, aFrameMetrics.LayersPixelsPerCSSPixel()) - aActualScrollOffset; } // Finally, clamp the display port to the expanded scrollable rect. CSSRect scrollableRect = aFrameMetrics.GetExpandedScrollableRect(); displayPort = scrollableRect.Intersect(displayPort + aActualScrollOffset) - aActualScrollOffset; }