[webkit-changes] [WebKit/WebKit] 1f5e2e: [GTK][WPE] Poor scrolling performance after a hist...

Carlos Garcia Campos noreply at github.com
Mon Feb 13 05:21:29 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1f5e2e27dc7c2cde5131a5bcf0b6c58a28183a0e
      https://github.com/WebKit/WebKit/commit/1f5e2e27dc7c2cde5131a5bcf0b6c58a28183a0e
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2023-02-13 (Mon, 13 Feb 2023)

  Changed paths:
    M Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp
    M Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h
    M Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp
    M Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp

  Log Message:
  -----------
  [GTK][WPE] Poor scrolling performance after a history navigation with PSON enabled
https://bugs.webkit.org/show_bug.cgi?id=252044

Reviewed by Žan Doberšek.

With PSON, when there's a history navigation the WebPage replaces the
drawing area with a new one. In case of coordinated graphics, the new
drawing area ends up using the wrong display refresh monitor because
DrawingArea::createDisplayRefreshMonitor() is not called. We call
WebPage::windowScreenDidChange() after creating the LayerTreeHost to
ensure DrawingArea::createDisplayRefreshMonitor() is called, but in this
case the page is the same, and the displayID hasn't really changed. So,
we need to ensure that the displayID we create is not based on WebPage
unique identifier, but on DrawingArea's because the
ThreadedDisplayRefreshMonitor needs to be created for every DrawingArea,
not WebPage.

* Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::displayRefreshMonitor const): Return a reference, caller can decide whether to create a Ref or not.
(WebKit::ThreadedCompositor::displayRefreshMonitor): Deleted.
* Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
* Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
(WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): Update comment.
* Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:
(WebKit::LayerTreeHost::LayerTreeHost): Use DrawingArea unique id to generate the display ID.
(WebKit::LayerTreeHost::createDisplayRefreshMonitor): Assert if the given display ID doesn't match the LayerTreeHost one.

Canonical link: https://commits.webkit.org/260195@main




More information about the webkit-changes mailing list