| Index: cc/gl_renderer.cc
|
| diff --git a/cc/gl_renderer.cc b/cc/gl_renderer.cc
|
| index 8f03721dc53f36b7230d9a0f190145ef6830737b..54eef96e72702b364769cb97a438d2a338211053 100644
|
| --- a/cc/gl_renderer.cc
|
| +++ b/cc/gl_renderer.cc
|
| @@ -521,10 +521,10 @@ void GLRenderer::drawRenderPassQuad(DrawingFrame& frame, const RenderPassDrawQua
|
| gfx::Transform contentsDeviceTransform = MathUtil::to2dTransform(frame.windowMatrix * frame.projectionMatrix * quadRectMatrix);
|
|
|
| // Can only draw surface if device matrix is invertible.
|
| - if (!contentsDeviceTransform.IsInvertible())
|
| + gfx::Transform contentsDeviceTransformInverse(gfx::Transform::kSkipInitialization);
|
| + if (!contentsDeviceTransform.GetInverse(&contentsDeviceTransformInverse))
|
| return;
|
|
|
| - gfx::Transform contentsDeviceTransformInverse = MathUtil::inverse(contentsDeviceTransform);
|
| scoped_ptr<ScopedResource> backgroundTexture = drawBackgroundFilters(
|
| frame, quad, contentsDeviceTransform, contentsDeviceTransformInverse);
|
|
|
| @@ -861,8 +861,11 @@ void GLRenderer::drawTileQuad(const DrawingFrame& frame, const TileDrawQuad* qua
|
| LayerQuad deviceQuad(leftEdge, topEdge, rightEdge, bottomEdge);
|
|
|
| // Map device space quad to local space. deviceTransform has no 3d component since it was generated with to2dTransform() so we don't need to project.
|
| - gfx::Transform deviceTransformInverse = MathUtil::inverse(deviceTransform);
|
| - localQuad = MathUtil::mapQuad(deviceTransformInverse, deviceQuad.ToQuadF(), clipped);
|
| + // We should have already checked that the transform was uninvertible above.
|
| + gfx::Transform inverseDeviceTransform(gfx::Transform::kSkipInitialization);
|
| + bool didInvert = deviceTransform.GetInverse(&inverseDeviceTransform);
|
| + DCHECK(didInvert);
|
| + localQuad = MathUtil::mapQuad(inverseDeviceTransform, deviceQuad.ToQuadF(), clipped);
|
|
|
| // We should not DCHECK(!clipped) here, because anti-aliasing inflation may cause deviceQuad to become
|
| // clipped. To our knowledge this scenario does not need to be handled differently than the unclipped case.
|
|
|