| Index: Source/platform/transforms/PerspectiveTransformOperation.cpp
|
| diff --git a/Source/platform/transforms/PerspectiveTransformOperation.cpp b/Source/platform/transforms/PerspectiveTransformOperation.cpp
|
| index 7149758afea29c686ca9dc1de2912bf2f34644bf..b9bf5f5133cb7f4b8a9bd1588f2f8b699c7c3a41 100644
|
| --- a/Source/platform/transforms/PerspectiveTransformOperation.cpp
|
| +++ b/Source/platform/transforms/PerspectiveTransformOperation.cpp
|
| @@ -48,8 +48,13 @@ PassRefPtr<TransformOperation> PerspectiveTransformOperation::blend(const Transf
|
| fromT.applyPerspective(fromOp ? fromOp->m_p : 0);
|
| toT.applyPerspective(m_p);
|
| toT.blend(fromT, progress);
|
| +
|
| TransformationMatrix::DecomposedType decomp;
|
| - toT.decompose(decomp);
|
| + if (!toT.decompose(decomp)) {
|
| + // If we can't decompose, bail out of interpolation.
|
| + const PerspectiveTransformOperation* usedOperation = progress > 0.5 ? this : fromOp;
|
| + return PerspectiveTransformOperation::create(usedOperation->perspective());
|
| + }
|
|
|
| if (decomp.perspectiveZ) {
|
| double val = -1.0 / decomp.perspectiveZ;
|
|
|