Title: [259283] trunk/Source/WebKit
Revision
259283
Author
carlo...@webkit.org
Date
2020-03-31 02:10:58 -0700 (Tue, 31 Mar 2020)

Log Message

REGRESSION(r258829): [CoordinatedGraphics] Web view not updated after cross site navigation with PSON enabled
https://bugs.webkit.org/show_bug.cgi?id=209741

Reviewed by Žan Doberšek.

Since r258829, the drawing area proxy of a provisional page ignores all messages until the load is
committed. This is causing 2 problems for coordinated graphics drawing area. When not in accelerated compositing
mode, Update message is sent before the commit is loaded, and the web process keeps waiting for the DidUpdate
response message forever. When accelerated compositing mode is forced, the EnterAcceleratedCompositing message
is also sent before the load is committed and ignored, so the UI process doesn't know it's in accelerated mode.

* WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
(WebKit::DrawingAreaCoordinatedGraphics::scheduleRenderingUpdate): Return early if layer tree is frozen. This
ensures that Update messages are not sent to the UI process while layer tree is frozen.
(WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): Disable layer flush on the newly
created LayerTreeHost if layer tree is frozen. This ensures that EnterAcceleratedCompositing message is sent
after the first layer flush once the layer tree is no longer frozen.

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (259282 => 259283)


--- trunk/Source/WebKit/ChangeLog	2020-03-31 06:19:49 UTC (rev 259282)
+++ trunk/Source/WebKit/ChangeLog	2020-03-31 09:10:58 UTC (rev 259283)
@@ -1,3 +1,23 @@
+2020-03-31  Carlos Garcia Campos  <cgar...@igalia.com>
+
+        REGRESSION(r258829): [CoordinatedGraphics] Web view not updated after cross site navigation with PSON enabled
+        https://bugs.webkit.org/show_bug.cgi?id=209741
+
+        Reviewed by Žan Doberšek.
+
+        Since r258829, the drawing area proxy of a provisional page ignores all messages until the load is
+        committed. This is causing 2 problems for coordinated graphics drawing area. When not in accelerated compositing
+        mode, Update message is sent before the commit is loaded, and the web process keeps waiting for the DidUpdate
+        response message forever. When accelerated compositing mode is forced, the EnterAcceleratedCompositing message
+        is also sent before the load is committed and ignored, so the UI process doesn't know it's in accelerated mode.
+
+        * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
+        (WebKit::DrawingAreaCoordinatedGraphics::scheduleRenderingUpdate): Return early if layer tree is frozen. This
+        ensures that Update messages are not sent to the UI process while layer tree is frozen.
+        (WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): Disable layer flush on the newly
+        created LayerTreeHost if layer tree is frozen. This ensures that EnterAcceleratedCompositing message is sent
+        after the first layer flush once the layer tree is no longer frozen.
+
 2020-03-30  David Kilzer  <ddkil...@apple.com>
 
         REGRESSION (r251574, r251600): _WKTextManipulationToken and _WKTextManipulationConfiguration are missing -dealloc

Modified: trunk/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp (259282 => 259283)


--- trunk/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp	2020-03-31 06:19:49 UTC (rev 259282)
+++ trunk/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp	2020-03-31 09:10:58 UTC (rev 259283)
@@ -342,6 +342,9 @@
 
 void DrawingAreaCoordinatedGraphics::scheduleRenderingUpdate()
 {
+    if (m_layerTreeStateIsFrozen)
+        return;
+
     if (m_layerTreeHost)
         m_layerTreeHost->scheduleLayerFlush();
     else
@@ -594,6 +597,8 @@
         m_layerTreeHost = nullptr;
         return;
 #endif
+        if (m_layerTreeStateIsFrozen)
+            m_layerTreeHost->setLayerFlushSchedulingEnabled(false);
         if (m_isPaintingSuspended)
             m_layerTreeHost->pauseRendering();
     }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to