⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 245954 in webkit


Ignore:
Timestamp:
May 31, 2019, 1:12:45 AM (7 years ago)
Author:
Carlos Garcia Campos
Message:

REGRESSION(r244182): [GTK] Web view no longer updated after re-entering AC mode
https://bugs.webkit.org/show_bug.cgi?id=198367

Reviewed by Sergio Villar Senin.

This happens because we leave accelerated compositing mode when a rendering update is scheduled in
RenderingUpdateScheduler. The ThreadedDisplayRefreshMonitor is destroyed without completing the
frame, so that the RenderingUpdateScheduler is left scheduled forever, ignoring any new schedule request. We
need to ensure we complete the frame request before destroying the display refresh monitor to leave the
RenderingUpdateScheduler in a consistent state.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:

(WebKit::ThreadedDisplayRefreshMonitor::invalidate):

Location:
trunk/Source/WebKit
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r245953 r245954  
     12019-05-31  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        REGRESSION(r244182): [GTK] Web view no longer updated after re-entering AC mode
     4        https://bugs.webkit.org/show_bug.cgi?id=198367
     5
     6        Reviewed by Sergio Villar Senin.
     7
     8        This happens because we leave accelerated compositing mode when a rendering update is scheduled in
     9        RenderingUpdateScheduler. The ThreadedDisplayRefreshMonitor is destroyed without completing the
     10        frame, so that the RenderingUpdateScheduler is left scheduled forever, ignoring any new schedule request. We
     11        need to ensure we complete the frame request before destroying the display refresh monitor to leave the
     12        RenderingUpdateScheduler in a consistent state.
     13
     14        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:
     15        (WebKit::ThreadedDisplayRefreshMonitor::invalidate):
     16
    1172019-05-30  Ryosuke Niwa  <rniwa@webkit.org>
    218
  • trunk/Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp

    r242205 r245954  
    8686{
    8787    m_displayRefreshTimer.stop();
     88    bool wasScheduled = false;
     89    {
     90        LockHolder locker(mutex());
     91        wasScheduled = isScheduled();
     92    }
     93    if (wasScheduled)
     94        DisplayRefreshMonitor::handleDisplayRefreshedNotificationOnMainThread(this);
    8895    m_client = nullptr;
    8996}
Note: See TracChangeset for help on using the changeset viewer.