Transition animation fails to rendered correctly at http://www.ferretarmy.com/files/css-animation/test1/test1.html. Reproduces on TOT or Webkit nightly ( r44702) under SL 10A386 with a Mac Book Pro ( late 2008 ) * STEPS TO REPRODUCE 1. Launch TOT or Webkit nightly ( r44702) under SL 10A386 2. Go to http://www.ferretarmy.com/files/css-animation/test1/test1.html 3. Click on on page to start the animation. The animation SHOULD display a series of green blocks falling and rotating slightly as they drop to bottom of browser window. Instead, you see the green blocks remain stationery on the page and scale to (0).
Created attachment 31547 [details] Patch
<rdar://problem/6978323>
Comment on attachment 31547 [details] Patch > Index: WebCore/platform/graphics/mac/GraphicsLayerCA.mm > =================================================================== > --- WebCore/platform/graphics/mac/GraphicsLayerCA.mm (revision 44828) > +++ WebCore/platform/graphics/mac/GraphicsLayerCA.mm (working copy) > @@ -981,6 +981,15 @@ bool GraphicsLayerCA::animateTransform(c > if (isMatrixAnimation) { > TransformationMatrix t; > curValue.value()->apply(size, t); > + > + // If any matrix is singular, CA won't animate it correctly. So fall back to software animation > + if (!t.isInvertible()) { > + [timesArray release]; > + [valArray release]; > + [tfArray release]; > + return false; > + } Maybe use OwnPtrs for those arrays so we don't have to worry about releasing them? Also, you can't return here without END_BLOCK_OBJC_EXCEPTIONS. I'd prefer a 'break' out of the loop, to avoid additional returns from this method. > CATransform3D cat; > copyTransform(cat, t); > [valArray addObject:[NSValue valueWithCATransform3D:cat]]; > @@ -1004,6 +1013,12 @@ bool GraphicsLayerCA::animateTransform(c > TransformationMatrix fromt, tot; > valueList.at(0).value()->apply(size, fromt); > valueList.at(1).value()->apply(size, tot); > + > + // If any matrix is singular, CA won't animate it correctly. So fall back to software animation > + if (!fromt.isInvertible()) > + return false; > + if (!tot.isInvertible()) > + return false; Same issue about returning without END_BLOCK_OBJC_EXCEPTIONS.
Created attachment 31562 [details] Replacement patch Incorporates changes from review
Sending WebCore/ChangeLog Sending WebCore/platform/graphics/mac/GraphicsLayerCA.mm Transmitting file data .. Committed revision 44878.