Title: [139781] trunk/Source/WebKit2
- Revision
- 139781
- Author
- dominik.rottsc...@intel.com
- Date
- 2013-01-15 13:40:29 -0800 (Tue, 15 Jan 2013)
Log Message
[CoordinatedGraphics] Deadlock when running abspos-child-container-changes-from-relative-to-static.html
https://bugs.webkit.org/show_bug.cgi?id=106884
Reviewed by Benjamin Poulain.
We need to return false if m_waitingForUIProcess is true since otherwise
we'll not really repaint in performScheduledLayerFlush() and the
UI process will wait forever. Returning false leads to executing the layer flush
synchronously and immediately, then acknowledging the
callback to the WebProcess - which resolves the deadlock.
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
(WebKit::CoordinatedLayerTreeHost::forceRepaintAsync): Return false in order to trigger a synchronous repaint if m_waitingForUIProcess is true.
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (139780 => 139781)
--- trunk/Source/WebKit2/ChangeLog 2013-01-15 21:35:08 UTC (rev 139780)
+++ trunk/Source/WebKit2/ChangeLog 2013-01-15 21:40:29 UTC (rev 139781)
@@ -1,3 +1,19 @@
+2013-01-15 Dominik Röttsches <dominik.rottsc...@intel.com>
+
+ [CoordinatedGraphics] Deadlock when running abspos-child-container-changes-from-relative-to-static.html
+ https://bugs.webkit.org/show_bug.cgi?id=106884
+
+ Reviewed by Benjamin Poulain.
+
+ We need to return false if m_waitingForUIProcess is true since otherwise
+ we'll not really repaint in performScheduledLayerFlush() and the
+ UI process will wait forever. Returning false leads to executing the layer flush
+ synchronously and immediately, then acknowledging the
+ callback to the WebProcess - which resolves the deadlock.
+
+ * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
+ (WebKit::CoordinatedLayerTreeHost::forceRepaintAsync): Return false in order to trigger a synchronous repaint if m_waitingForUIProcess is true.
+
2013-01-15 Simon Fraser <simon.fra...@apple.com>
Allow tiled WKViews to have transparent backgrounds
Modified: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp (139780 => 139781)
--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp 2013-01-15 21:35:08 UTC (rev 139780)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp 2013-01-15 21:40:29 UTC (rev 139781)
@@ -204,6 +204,10 @@
bool CoordinatedLayerTreeHost::forceRepaintAsync(uint64_t callbackID)
{
+ // Avoid deadlocks when the UI process has requested a forceRepaint by falling back to a synchronous repaint, see caller WebPage::forceRepaint.
+ if (m_waitingForUIProcess)
+ return false;
+
// We expect the UI process to not require a new repaint until the previous one has finished.
ASSERT(!m_forceRepaintAsyncCallbackID);
m_forceRepaintAsyncCallbackID = callbackID;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes