RESOLVED FIXED 30501
Flash at end of opacity/transform transition sometimes
https://bugs.webkit.org/show_bug.cgi?id=30501
Summary Flash at end of opacity/transform transition sometimes
Simon Fraser (smfr)
Reported 2009-10-18 21:10:41 PDT
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.
Attachments
Testcase (1.57 KB, text/html)
2009-10-18 21:10 PDT, Simon Fraser (smfr)
no flags
Proto patch (4.46 KB, patch)
2009-10-18 21:12 PDT, Simon Fraser (smfr)
no flags
Patch (5.82 KB, patch)
2009-10-19 17:03 PDT, Simon Fraser (smfr)
darin: review+
Simon Fraser (smfr)
Comment 1 2009-10-18 21:11:55 PDT
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.
Simon Fraser (smfr)
Comment 2 2009-10-18 21:12:38 PDT
Created attachment 41394 [details] Proto patch
Chris Marrin
Comment 3 2009-10-19 07:38:02 PDT
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?
Simon Fraser (smfr)
Comment 4 2009-10-19 07:40:07 PDT
I just pass in style there so I can use toStyle lower down. Look at the rest of the patch.
Simon Fraser (smfr)
Comment 5 2009-10-19 17:03:16 PDT
Simon Fraser (smfr)
Comment 6 2009-10-19 17:39:59 PDT
Note You need to log in before you can comment on or make changes to this bug.