[GTK] ASSERTION FAILED: !m_layerTreeHost in DrawingAreaImpl::display()
authorcarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 29 Jan 2017 07:14:12 +0000 (07:14 +0000)
committercarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 29 Jan 2017 07:14:12 +0000 (07:14 +0000)
https://bugs.webkit.org/show_bug.cgi?id=167548

Reviewed by Michael Catanzaro.

The problem is that non accelerated compositing forceRepaint implementation is doing a layout and then calling
display. The layout makes the drawing area enter in AC mode and display asserts that we have a layer tree
host. forceRepaint shouldn't do the layout because display already does that and it correctly handles the case
of entering AC mode during the layout. It shouldn't call setNeedsDisplay either, because that schedules a
display, but we are going to display synchronously.

* WebProcess/WebPage/DrawingAreaImpl.cpp:
(WebKit::DrawingAreaImpl::forceRepaint):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@211346 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp

index d0c674d..c25c560 100644 (file)
@@ -1,3 +1,19 @@
+2017-01-28  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [GTK] ASSERTION FAILED: !m_layerTreeHost in DrawingAreaImpl::display()
+        https://bugs.webkit.org/show_bug.cgi?id=167548
+
+        Reviewed by Michael Catanzaro.
+
+        The problem is that non accelerated compositing forceRepaint implementation is doing a layout and then calling
+        display. The layout makes the drawing area enter in AC mode and display asserts that we have a layer tree
+        host. forceRepaint shouldn't do the layout because display already does that and it correctly handles the case
+        of entering AC mode during the layout. It shouldn't call setNeedsDisplay either, because that schedules a
+        display, but we are going to display synchronously.
+
+        * WebProcess/WebPage/DrawingAreaImpl.cpp:
+        (WebKit::DrawingAreaImpl::forceRepaint):
+
 2017-01-28  Tim Horton  <timothy_horton@apple.com>
 
         Don't flash a tap highlight for the entirety of an editable WKWebView
index 54b4ead..0e51511 100644 (file)
@@ -152,10 +152,11 @@ void DrawingAreaImpl::forceRepaint()
         return;
     }
 
-    setNeedsDisplay();
-    m_webPage.layoutIfNeeded();
     m_isWaitingForDidUpdate = false;
-    display();
+    if (m_isPaintingEnabled) {
+        m_dirtyRegion = m_webPage.bounds();
+        display();
+    }
 }
 
 void DrawingAreaImpl::mainFrameContentSizeChanged(const WebCore::IntSize& newSize)