Index: cc/layer_tree_host.cc |
diff --git a/cc/layer_tree_host.cc b/cc/layer_tree_host.cc |
index 91276deb8ad5bcb005ec733ce1713e3e0f543d63..059741eb31dbea716be01a0af06a729a8cd27e02 100644 |
--- a/cc/layer_tree_host.cc |
+++ b/cc/layer_tree_host.cc |
@@ -796,7 +796,13 @@ gfx::PointF LayerTreeHost::adjustEventPointForPinchZoom(const gfx::PointF& zoome |
// Scale to screen space before applying implTransform inverse. |
gfx::PointF zoomedScreenspacePoint = gfx::ScalePoint(zoomedViewportPoint, deviceScaleFactor()); |
- gfx::Transform inverseImplTransform = MathUtil::inverse(m_implTransform); |
+ |
+ // Note carefully, this remains an identity matrix if m_implTransform is uninvertible. |
+ // TODO: see if there is something more reasonable we can do if m_implTransform really is uninvertible. |
+ // or perhaps we can just DCHECK that m_implTransform should be invertible? |
+ gfx::Transform inverseImplTransform(gfx::Transform::kSkipInitialization); |
+ if (!m_implTransform.GetInverse(&inverseImplTransform)) |
+ inverseImplTransform.MakeIdentity(); |
bool wasClipped = false; |
gfx::PointF unzoomedScreenspacePoint = MathUtil::projectPoint(inverseImplTransform, zoomedScreenspacePoint, wasClipped); |