Changeset 211141 in webkit


Ignore:
Timestamp:
Jan 25, 2017 5:26:01 AM (7 years ago)
Author:
magomez@igalia.com
Message:

[GTK] The inspector is broken when AC support is disabled
https://bugs.webkit.org/show_bug.cgi?id=165237

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Ensure that PageOverlayController destroys its root GraphicsLayers when leaving AC. They
will be recreated if we enter AC again, avoiding a crash because the layers don't belong to
the appropriate compositor. Also, don't append the document overlay layers if we are not
in compositing mode.

No new tests added.

  • page/PageOverlayController.cpp:

(WebCore::PageOverlayController::willDetachRootLayer):

  • page/PageOverlayController.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
(WebCore::RenderLayerCompositor::detachRootLayer):

Source/WebKit2:

WebInspector must not use PageOverlays or GraphicsLayers when AC is not avaialable.

No new tests added.

  • WebProcess/WebCoreSupport/WebInspectorClient.cpp:

(WebKit::WebInspectorClient::highlight):
(WebKit::WebInspectorClient::showPaintRect):

Location:
trunk/Source
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r211140 r211141  
     12017-01-25  Miguel Gomez  <magomez@igalia.com>
     2
     3        [GTK] The inspector is broken when AC support is disabled
     4        https://bugs.webkit.org/show_bug.cgi?id=165237
     5
     6        Reviewed by Carlos Garcia Campos.
     7
     8        Ensure that PageOverlayController destroys its root GraphicsLayers when leaving AC. They
     9        will be recreated if we enter AC again, avoiding a crash because the layers don't belong to
     10        the appropriate compositor. Also, don't append the document overlay layers if we are not
     11        in compositing mode.
     12
     13        No new tests added.
     14
     15        * page/PageOverlayController.cpp:
     16        (WebCore::PageOverlayController::willDetachRootLayer):
     17        * page/PageOverlayController.h:
     18        * rendering/RenderLayerCompositor.cpp:
     19        (WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
     20        (WebCore::RenderLayerCompositor::detachRootLayer):
     21
    1222017-01-25  Carlos Garcia Campos  <cgarcia@igalia.com>
    223
  • trunk/Source/WebCore/page/PageOverlayController.cpp

    r211033 r211141  
    208208}
    209209
     210void PageOverlayController::willDetachRootLayer()
     211{
     212    m_documentOverlayRootLayer = nullptr;
     213    m_viewOverlayRootLayer = nullptr;
     214    m_initialized = false;
     215}
     216
    210217void PageOverlayController::didChangeViewSize()
    211218{
  • trunk/Source/WebCore/page/PageOverlayController.h

    r211033 r211141  
    5959
    6060    void willAttachRootLayer();
     61    void willDetachRootLayer();
    6162
    6263    void didChangeViewSize();
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp

    r211033 r211141  
    773773void RenderLayerCompositor::appendDocumentOverlayLayers(Vector<GraphicsLayer*>& childList)
    774774{
    775     if (!isMainFrameCompositor())
     775    if (!isMainFrameCompositor() || !m_compositing)
    776776        return;
    777777
     
    35103510        Frame& frame = m_renderView.frameView().frame();
    35113511        page().chrome().client().attachRootGraphicsLayer(frame, nullptr);
    3512         if (frame.isMainFrame())
     3512        if (frame.isMainFrame()) {
    35133513            page().chrome().client().attachViewOverlayGraphicsLayer(frame, nullptr);
     3514            frame.mainFrame().pageOverlayController().willDetachRootLayer();
     3515        }
    35143516    }
    35153517    break;
  • trunk/Source/WebKit2/ChangeLog

    r211140 r211141  
     12017-01-25  Miguel Gomez  <magomez@igalia.com>
     2
     3        [GTK] The inspector is broken when AC support is disabled
     4        https://bugs.webkit.org/show_bug.cgi?id=165237
     5
     6        Reviewed by Carlos Garcia Campos.
     7
     8        WebInspector must not use PageOverlays or GraphicsLayers when AC is not avaialable.
     9
     10        No new tests added.
     11
     12        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
     13        (WebKit::WebInspectorClient::highlight):
     14        (WebKit::WebInspectorClient::showPaintRect):
     15
    1162017-01-25  Carlos Garcia Campos  <cgarcia@igalia.com>
    217
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp

    r211033 r211141  
    3434#include <WebCore/Page.h>
    3535#include <WebCore/PageOverlayController.h>
     36#include <WebCore/Settings.h>
    3637#include <wtf/CurrentTime.h>
    3738
     
    106107void WebInspectorClient::highlight()
    107108{
     109    if (!m_page->corePage()->settings().acceleratedCompositingEnabled())
     110        return;
     111
    108112#if !PLATFORM(IOS)
    109113    if (!m_highlightOverlay) {
     
    135139void WebInspectorClient::showPaintRect(const FloatRect& rect)
    136140{
     141    if (!m_page->corePage()->settings().acceleratedCompositingEnabled())
     142        return;
     143
    137144    if (!m_paintRectOverlay) {
    138145        m_paintRectOverlay = PageOverlay::create(*this, PageOverlay::OverlayType::Document);
Note: See TracChangeset for help on using the changeset viewer.