<html>
    <head>
      <base href="https://bugs.webkit.org/">
    </head>
    <body><span class="vcard"><a class="email" href="mailto:clord@igalia.com" title="Chris Lord <clord@igalia.com>"> <span class="fn">Chris Lord</span></a>
</span> changed
          <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - twitch.tv forces synchronous scrolling"
   href="https://bugs.webkit.org/show_bug.cgi?id=232376">bug 232376</a>
          <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">Summary</td>
           <td>[GTK] Smooth scrolling doesn't work on twitch.tv
           </td>
           <td>twitch.tv forces synchronous scrolling
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - twitch.tv forces synchronous scrolling"
   href="https://bugs.webkit.org/show_bug.cgi?id=232376#c2">Comment # 2</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - twitch.tv forces synchronous scrolling"
   href="https://bugs.webkit.org/show_bug.cgi?id=232376">bug 232376</a>
              from <span class="vcard"><a class="email" href="mailto:clord@igalia.com" title="Chris Lord <clord@igalia.com>"> <span class="fn">Chris Lord</span></a>
</span></b>
        <pre>Retitling this bug - Alejandro GarcĂ­a Castro and I have been looking at this, and the issue is that Twitch.tv draws a custom scroll indicator and hooks onto all scroll events to do this. It seems just the act of hooking onto these events causes the region to be marked for main-thread-first event handling, and so ends up disabling asynchronous scrolling entirely. Because the page render performance is terrible and frequently updates, the scrolling also feels terrible.

I can't tell if this is handled differently in Chrome because the page render performance is so much better that it isn't obvious. However, in Firefox, I know this isn't how it's handled (both from observation and from having worked on the code in the past). Scrolling the same page in Firefox is perfectly smooth, but you can see the scroll indicator updating in a jerky manner, presumably because that's the actual page update performance.

Assuming Firefox hasn't changed and I recall correctly, when handling events like this in Firefox, the main thread is given a grace period to block the event in the scroll handler and if it can't respond in that time, the event will be delivered regardless. If subsequent events are part of an ongoing async scroll gesture, they will be delivered straight to the equivalent of the scrolling thread.

While I need to see if this is covered in any related standards, I think it would be a good idea to match the behaviour in Firefox. This page, for example, has regular hundred-millisecond rendering pauses on even desktop-class hardware. It is practically unusable on low-power embedded devices and completely negates the point of async scrolling. It should not be so easy to disable async scrolling (it doesn't actually block any of the scroll events, it just listens to them to update its scroll indicator).</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>