Commit bc82cfb8 authored by Carsten "Tomcat" Book's avatar Carsten "Tomcat" Book
Browse files

Merge mozilla-central to b2g-inbound

parents b9c59d5a 2f40255e
Loading
Loading
Loading
Loading
+23 −7
Original line number Diff line number Diff line
@@ -418,20 +418,36 @@ ClientTiledPaintedLayer::RenderLayer()
      ToClientLayer(GetMaskLayer())->RenderLayer();
    }

    // For more complex cases we need to calculate a bunch of metrics before we
    // can do the paint.
    BeginPaint();
    if (mPaintData.mPaintFinished) {
      return;
    }

    // In some cases we can take a fast path and just be done with it.
    if (UseFastPath()) {
      TILING_LOG("TILING %p: Taking fast-path\n", this);
      mValidRegion = neededRegion;
      mContentClient->mTiledBuffer.PaintThebes(mValidRegion, invalidRegion, callback, data);
      ClientManager()->Hold(this);
      mContentClient->UseTiledLayerBuffer(TiledContentClient::TILED_BUFFER);

      // Make sure that tiles that fall outside of the visible region or outside of the
      // critical displayport are discarded on the first update. Also make sure that we
      // only draw stuff inside the critical displayport on the first update.
      if (!mPaintData.mCriticalDisplayPort.IsEmpty()) {
        mValidRegion.And(mValidRegion, LayerIntRect::ToUntyped(mPaintData.mCriticalDisplayPort));
        invalidRegion.And(invalidRegion, LayerIntRect::ToUntyped(mPaintData.mCriticalDisplayPort));
      }

      if (invalidRegion.IsEmpty()) {
        EndPaint();
        return;
      }

    // For more complex cases we need to calculate a bunch of metrics before we
    // can do the paint.
    BeginPaint();
    if (mPaintData.mPaintFinished) {
      mContentClient->mTiledBuffer.SetFrameResolution(mPaintData.mResolution);
      mContentClient->mTiledBuffer.PaintThebes(mValidRegion, invalidRegion, callback, data);
      ClientManager()->Hold(this);
      mContentClient->UseTiledLayerBuffer(TiledContentClient::TILED_BUFFER);
      EndPaint();
      return;
    }