Created attachment 41393 [details] Testcase In some content, there's a noticeable flash sometimes when a transform or opacity transition ends sometimes. I'm having a hard time making a reduced testcase, but the attached shows it sometimes.
The flash happens because we remove the transition on the GraphicsLayer before we set the final opacity/transform style, so there's a window where it renders with the original opacity/transform.
Created attachment 41394 [details] Proto patch
Comment on attachment 41394 [details] Proto patch > diff --git a/WebCore/rendering/RenderLayerBacking.cpp b/WebCore/rendering/RenderLayerBacking.cpp > index 4c82843..d7248d4 100644 > --- a/WebCore/rendering/RenderLayerBacking.cpp > +++ b/WebCore/rendering/RenderLayerBacking.cpp > @@ -89,8 +89,8 @@ void RenderLayerBacking::createGraphicsLayer() > m_graphicsLayer->setName("Anonymous Node"); > #endif // NDEBUG > > - updateLayerOpacity(); > - updateLayerTransform(); > + updateLayerOpacity(renderer()->style()); > + updateLayerTransform(renderer()->style()); > } > > void RenderLayerBacking::destroyGraphicsLayer() > @@ -104,15 +104,13 @@ void RenderLayerBacking::destroyGraphicsLayer() > m_maskLayer = 0; > } > > -void RenderLayerBacking::updateLayerOpacity() > +void RenderLayerBacking::updateLayerOpacity(const RenderStyle* style) > { > - m_graphicsLayer->setOpacity(compositingOpacity(renderer()->opacity())); > + m_graphicsLayer->setOpacity(compositingOpacity(style->opacity())); > } I don't see how these two are different? How is passing in renderer()->style() and setting the opacity to renderer()->style() is different? What is the fix you're doing here?
I just pass in style there so I can use toStyle lower down. Look at the rest of the patch.
Created attachment 41462 [details] Patch
http://trac.webkit.org/changeset/49823