Changeset 139781 in webkit


Ignore:
Timestamp:
Jan 15, 2013 1:40:29 PM (11 years ago)
Author:
dominik.rottsches@intel.com
Message:

[CoordinatedGraphics] Deadlock when running abspos-child-container-changes-from-relative-to-static.html
https://bugs.webkit.org/show_bug.cgi?id=106884

Reviewed by Benjamin Poulain.

We need to return false if m_waitingForUIProcess is true since otherwise
we'll not really repaint in performScheduledLayerFlush() and the
UI process will wait forever. Returning false leads to executing the layer flush
synchronously and immediately, then acknowledging the
callback to the WebProcess - which resolves the deadlock.

  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:

(WebKit::CoordinatedLayerTreeHost::forceRepaintAsync): Return false in order to trigger a synchronous repaint if m_waitingForUIProcess is true.

Location:
trunk/Source/WebKit2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r139750 r139781  
     12013-01-15  Dominik Röttsches  <dominik.rottsches@intel.com>
     2
     3        [CoordinatedGraphics] Deadlock when running abspos-child-container-changes-from-relative-to-static.html
     4        https://bugs.webkit.org/show_bug.cgi?id=106884
     5
     6        Reviewed by Benjamin Poulain.
     7
     8        We need to return false if m_waitingForUIProcess is true since otherwise
     9        we'll not really repaint in performScheduledLayerFlush() and the
     10        UI process will wait forever. Returning false leads to executing the layer flush
     11        synchronously and immediately, then acknowledging the
     12        callback to the WebProcess - which resolves the deadlock.
     13
     14        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
     15        (WebKit::CoordinatedLayerTreeHost::forceRepaintAsync): Return false in order to trigger a synchronous repaint if m_waitingForUIProcess is true.
     16
    1172013-01-15  Simon Fraser  <simon.fraser@apple.com>
    218
  • trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp

    r139525 r139781  
    205205bool CoordinatedLayerTreeHost::forceRepaintAsync(uint64_t callbackID)
    206206{
     207    // Avoid deadlocks when the UI process has requested a forceRepaint by falling back to a synchronous repaint, see caller WebPage::forceRepaint.
     208    if (m_waitingForUIProcess)
     209        return false;
     210
    207211    // We expect the UI process to not require a new repaint until the previous one has finished.
    208212    ASSERT(!m_forceRepaintAsyncCallbackID);
Note: See TracChangeset for help on using the changeset viewer.