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

Changeset 201860 in webkit


Ignore:
Timestamp:
Jun 9, 2016, 5:09:22 AM (10 years ago)
Author:
Carlos Garcia Campos
Message:

[Threaded Compositor] Many layout tests crash when threaded compositor is enabled
https://bugs.webkit.org/show_bug.cgi?id=158560

Reviewed by Žan Doberšek.

This is because CoordinatedGraphicsLayer::notifyFlushRequired() assumes it has a valid compositor when it's
called. But the compositor is only present when GraphicsLayer::create() is called with a
GraphicsLayerFactory. When running the layout tests, layers are created without a factory because DrawingAreaImpl
is not entering AC mode as expected and the layer tree host is not created, making
DrawingAreaImpl::graphicsLayerFactory() always return nullptr. This happens because DrawingAreaImpl is checking
acceleratedDrawingEnabled setting to decide whether to always use compositing mode or not, and WTR sets that
setting to false (changing its default value). The thing is that acceleratedDrawingEnabled setting doesn't have
any effect in non-Mac ports, what we really want to check there is whether acceleratedCompositingEnabled is true
or false.

  • WebProcess/WebPage/DrawingAreaImpl.cpp:

(WebKit::DrawingAreaImpl::updatePreferences):

Location:
trunk/Source/WebKit2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r201859 r201860  
     12016-06-09  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [Threaded Compositor] Many layout tests crash when threaded compositor is enabled
     4        https://bugs.webkit.org/show_bug.cgi?id=158560
     5
     6        Reviewed by Žan Doberšek.
     7
     8        This is because CoordinatedGraphicsLayer::notifyFlushRequired() assumes it has a valid compositor when it's
     9        called. But the compositor is only present when GraphicsLayer::create() is called with a
     10        GraphicsLayerFactory. When running the layout tests, layers are created without a factory because DrawingAreaImpl
     11        is not entering AC mode as expected and the layer tree host is not created, making
     12        DrawingAreaImpl::graphicsLayerFactory() always return nullptr. This happens because DrawingAreaImpl is checking
     13        acceleratedDrawingEnabled setting to decide whether to always use compositing mode or not, and WTR sets that
     14        setting to false (changing its default value). The thing is that acceleratedDrawingEnabled setting doesn't have
     15        any effect in non-Mac ports, what we really want to check there is whether acceleratedCompositingEnabled is true
     16        or false.
     17
     18        * WebProcess/WebPage/DrawingAreaImpl.cpp:
     19        (WebKit::DrawingAreaImpl::updatePreferences):
     20
    1212016-06-09  Carlos Garcia Campos  <cgarcia@igalia.com>
    222
  • trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp

    r201802 r201860  
    249249#endif
    250250
    251     m_alwaysUseCompositing = settings.acceleratedDrawingEnabled() && settings.forceCompositingMode();
     251    m_alwaysUseCompositing = settings.acceleratedCompositingEnabled() && settings.forceCompositingMode();
    252252    if (m_alwaysUseCompositing && !m_layerTreeHost)
    253253        enterAcceleratedCompositingMode(nullptr);
Note: See TracChangeset for help on using the changeset viewer.