Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3ef900755534715b0197ad55cbc13deb977236a2
      
https://github.com/WebKit/WebKit/commit/3ef900755534715b0197ad55cbc13deb977236a2
  Author: Nikolas Zimmermann <[email protected]>
  Date:   2026-08-06 (Thu, 06 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:
  -----------
  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



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

Reply via email to