When accelerated compositing is enabled, an assert failure can occur in RenderLayer::computeRepaintRects: ASSERT(!m_visibleContentStatusDirty); #0 WebCore::RenderLayer::computeRepaintRects #1 WebCore::RenderLayerCompositor::updateBacking #2 WebCore::RenderLayerCompositor::updateLayerCompositingState ( #3 WebCore::RenderLayer::styleChanged (this=0x766bbb28, #4 WebCore::RenderBoxModelObject::styleDidChange The issue can be simply and obviously fixed by adding a call to updateVisibilityStatus() before styleChanged() calling compositor->updateLayerCompositingState(). Do I have to create a test case for it?
Created attachment 138149 [details] The patch The problem is obvious and easy to fix. The patch doesn't include a test. Creating a test may need much more effort than fixing it, and probably doesn't worth for such a small flaw.
Comment on attachment 138149 [details] The patch This should have a testcase. I haven't seen this assertion on Mac.
Created attachment 138634 [details] With test case
Comment on attachment 138634 [details] With test case View in context: https://bugs.webkit.org/attachment.cgi?id=138634&action=review > LayoutTests/compositing/visibility/compositing-and-visibility--turned-off-together.html:16 > +if (window.layoutTestController) > + layoutTestController.dumpAsText(); > + > +function dotest() > +{ > + document.getElementById('theelement').style.setProperty('visibility','hidden',''); > + document.getElementById('theelement').style.removeProperty('-webkit-perspective'); > + > + // force layout > + document.body.offsetTop; > +} > +</script> > +</head> > +<body onload="setTimeout(dotest,20)"> If you're using setTimeout, you need to use layoutTestController.waitUntilDone/notifyDone.
Created attachment 138640 [details] with test case
Comment on attachment 138640 [details] with test case Thanks Simon!
Comment on attachment 138640 [details] with test case Clearing flags on attachment: 138640 Committed r115157: <http://trac.webkit.org/changeset/115157>
All reviewed patches have been landed. Closing bug.