Branch: refs/heads/webkitglib/2.54
  Home:   https://github.com/WebKit/WebKit
  Commit: 6002a6fffa6aebfc4b1e7eee135536325e280ba8
      
https://github.com/WebKit/WebKit/commit/6002a6fffa6aebfc4b1e7eee135536325e280ba8
  Author: Nikolas Zimmermann <[email protected]>
  Date:   2026-08-08 (Sat, 08 Aug 2026)

  Changed paths:
    M Source/WebCore/page/scrolling/coordinated/ScrollerCoordinated.cpp
    M Source/WebCore/platform/adwaita/AdwaitaScrollbarPainter.cpp
    M Source/WebCore/platform/adwaita/AdwaitaScrollbarPainter.h
    M Source/WebCore/platform/adwaita/ScrollerImpAdwaita.h
    M Source/WebCore/platform/graphics/Damage.h

  Log Message:
  -----------
  Cherry-pick 318769@main (3ef900755534). 
https://bugs.webkit.org/show_bug.cgi?id=321211

Unreviewed backport.

    REGRESSION(314540@main): When damage propagation is turned on, scrollbars 
are flickering
    https://bugs.webkit.org/show_bug.cgi?id=321211

    Reviewed by Carlos Garcia Campos and Fujii Hironori.

    The scrollbar buffer is cleared and painted from scratch on every update, 
so the
    region that changes is the union of what the previous buffer painted and 
what
    this one paints. 314540@main reported only the latter, so the frame that 
erases
    the faded out overlay thumb propagated no damage and left the thumb on
    screen.

    It flickers rather than just leaving a stale thumb because an empty frame 
damage
    makes ThreadedCompositor::recordFrameDamage() skip setFrameDamage() 
altogether,
    and that is also what accumulates the frame into every swap chain target. 
The
    target being composited still repaints the thumb region, since its own
    accumulated damage covers it, but the other targets never learn that region
    changed and keep the old thumb. The thumb then comes and goes with the 
target
    that happens to be current...

    This is only visible on WPE since 318729@main turned damage propagation
    on by default there -- GTK was already affected.

    This gives up 314540@main's optimization. Restoring it needs the previous
    buffer's painted area tracked across updates, which is not worth it.

    * Source/WebCore/page/scrolling/coordinated/ScrollerCoordinated.cpp:
    (WebCore::ScrollerCoordinated::updateValues):
    * Source/WebCore/platform/adwaita/AdwaitaScrollbarPainter.cpp:
    (WebCore::AdwaitaScrollbarPainter::paint):
    * Source/WebCore/platform/adwaita/AdwaitaScrollbarPainter.h:
    * Source/WebCore/platform/adwaita/ScrollerImpAdwaita.h:
    (WebCore::ScrollerImpAdwaita::paint):
    * Source/WebCore/platform/graphics/Damage.h:

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

Canonical link: https://commits.webkit.org/317695.72@webkitglib/2.54



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to