ASSERT(!needsLayout) in RenderView.cpp when visiting http://www.panic.com/blog/
authorandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 22 Mar 2012 21:14:49 +0000 (21:14 +0000)
committerandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 22 Mar 2012 21:14:49 +0000 (21:14 +0000)
commitd9c3dd71a87a236f70102f990cae2e9777d55bf9
tree422f63f274ca7843aa82850d4def29dd0435a587
parent10e4dc5bbd57248970ed8f4306276fa5c005249c
ASSERT(!needsLayout) in RenderView.cpp when visiting panic.com/blog/
https://bugs.webkit.org/show_bug.cgi?id=81953
<rdar://problem/11086998>

Reviewed by Sam Weinig.

Source/WebCore:

If a page ends up creating CATiledLayers, CA transactions can be committed outside of the normal
CA run loop observer, so we can't call setNeedsDisplay on tile cache layers directly because then
we'll end up calling into painting code before all the layers have been flushed.

Fix this by adding a list of dirty rects to platformCALayerDidCreateTiles and change GraphicsLayerCA to
mark them as dirty. This ensures that any CA transaction commits won't cause newly added layers to be painted.

* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
(WebCore::LayerClient::platformCALayerDidCreateTiles):
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::platformCALayerDidCreateTiles):
* platform/graphics/ca/GraphicsLayerCA.h:
(GraphicsLayerCA):
* platform/graphics/ca/PlatformCALayerClient.h:
(PlatformCALayerClient):
* platform/graphics/ca/mac/TileCache.mm:
(WebCore::TileCache::setScale):
(WebCore::TileCache::revalidateTiles):
* platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.cpp:
(WebCore::MediaPlayerPrivateQuickTimeVisualContext::LayerClient::platformCALayerDidCreateTiles):

Source/WebKit/win:

Update for changes to WebCore.

* FullscreenVideoController.cpp:
(FullscreenVideoController::LayerClient::platformCALayerDidCreateTiles):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@111762 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp
Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h
Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h
Source/WebCore/platform/graphics/ca/mac/TileCache.mm
Source/WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.cpp
Source/WebKit/win/ChangeLog
Source/WebKit/win/FullscreenVideoController.cpp