Changeset 244198 in webkit


Ignore:
Timestamp:
Apr 11, 2019 3:51:43 PM (5 years ago)
Author:
commit-queue@webkit.org
Message:

REGRESSION (r244182): RemoteLayerTreeDrawingArea::flushLayers() should not be reentrant
https://bugs.webkit.org/show_bug.cgi?id=196825

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-04-11
Reviewed by Simon Fraser.

Ensure the layer transactions IDs are sequential. So bail out of
RemoteLayerTreeDrawingArea::flushLayers() if reentrancy is detected.

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::flushLayers):

Location:
trunk/Source/WebKit
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r244197 r244198  
     12019-04-11  Said Abou-Hallawa  <sabouhallawa@apple.com>
     2
     3        REGRESSION (r244182): RemoteLayerTreeDrawingArea::flushLayers() should not be reentrant
     4        https://bugs.webkit.org/show_bug.cgi?id=196825
     5
     6        Reviewed by Simon Fraser.
     7
     8        Ensure the layer transactions IDs are sequential. So bail out of
     9        RemoteLayerTreeDrawingArea::flushLayers() if reentrancy is detected.
     10
     11        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
     12        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
     13        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
     14
    1152019-04-11  Wenson Hsieh  <wenson_hsieh@apple.com>
    216
  • trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h

    r241899 r244198  
    162162    bool m_hadFlushDeferredWhileWaitingForBackingStoreSwap { false };
    163163    bool m_nextFlushIsForImmediatePaint { false };
     164    bool m_inFlushLayers { false };
    164165
    165166    dispatch_queue_t m_commitQueue;
  • trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm

    r244182 r244198  
    5151#import <WebCore/TiledBacking.h>
    5252#import <pal/spi/cocoa/QuartzCoreSPI.h>
     53#import <wtf/SetForScope.h>
    5354#import <wtf/SystemTracing.h>
    5455
     
    345346    }
    346347
     348    // This function is not reentrant, e.g. a rAF callback may force repaint.
     349    if (m_inFlushLayers)
     350        return;
     351
     352    SetForScope<bool> change(m_inFlushLayers, true);
    347353    m_webPage.updateRendering();
    348354
Note: See TracChangeset for help on using the changeset viewer.