<html>
    <head>
      <base href="https://bugs.webkit.org/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [GTK] Improve PageOverlay usage when not in AC mode"
   href="https://bugs.webkit.org/show_bug.cgi?id=167416">167416</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[GTK] Improve PageOverlay usage when not in AC mode
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>WebKit
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>WebKit Nightly Build
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Unspecified
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Unspecified
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>Normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P2
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>WebKit Gtk
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>webkit-unassigned&#64;lists.webkit.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>magomez&#64;igalia.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>bugs-noreply&#64;webkitgtk.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>There are some components, like the WebInspector that use PageOverlayController to put PageOverlays over the rendered content (in GTK only the WebInspector uses them for highlighting). These overlays are GraphicsLayers that are added to the compositing tree and composited on top of the normal content.

This causes problems when accelerated compositing is not available:
- if there's no compositing those overlays are not going to be visible
- trying to use the GraphicsLayerFactory while not in AC actually triggers AC mode, which mustn't happen if it's not available

This was handled in <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - [GTK] The inspector is broken when AC support is disabled"
   href="show_bug.cgi?id=165237">bug 165237</a>, and fixed in WebInpsectorClient by not using overlays at all when AC is disabled. While this works (because WebInspector is the only overlay user), it would be much better if, instead of modifying the overlay users, we fixed it for all the possible users in a centralized way.

One way that comes to my mind would be:
- in AcceleratedDrawingArea::graphicsLayerFactory(), if there's no layerTreeHost, check that AC is available before entering AC. This allows to create GraphicsLayers without entering AC, so overlays would be able to create layers.
- the GraphicsLayers created after the previous change are CoordinatedGraphicsLayers, which require a coordinator to properly work, and they don't have because we are not in AC mode. To avoid crashing because of this we need to use some kind of dummy GraphicsLayers or to modify CoordinatedGraphicsLayers to be able to work without a coordinator.
- after these changes, the overlays would be able to create GraphicsLayer as they wish, but they would just never be used at all if AC was not available.

I'm leaving this bug open and assigned to myself as a reminder of this taks, so I can retake it when there are no urgent issues.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>