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

Changeset 126940 in webkit


Ignore:
Timestamp:
Aug 28, 2012, 4:35:37 PM (14 years ago)
Author:
commit-queue@webkit.org
Message:

Unreviewed, rolling out r126933.
http://trac.webkit.org/changeset/126933
https://bugs.webkit.org/show_bug.cgi?id=95261

Turns out we do need this! (Requested by abarth on #webkit).

Patch by Sheriff Bot <webkit.review.bot@gmail.com> on 2012-08-28

  • public/WebWidget.h:

(WebKit::WebWidget::paint):

  • src/WebPagePopupImpl.cpp:

(WebKit::WebPagePopupImpl::paint):

  • src/WebPagePopupImpl.h:

(WebPagePopupImpl):

  • src/WebPopupMenuImpl.cpp:

(WebKit::WebPopupMenuImpl::paint):

  • src/WebPopupMenuImpl.h:
  • src/WebViewImpl.cpp:

(WebKit::WebViewImpl::paint):

  • src/WebViewImpl.h:

(WebViewImpl):

Location:
trunk/Source/WebKit/chromium
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/chromium/ChangeLog

    r126939 r126940  
     12012-08-28  Sheriff Bot  <webkit.review.bot@gmail.com>
     2
     3        Unreviewed, rolling out r126933.
     4        http://trac.webkit.org/changeset/126933
     5        https://bugs.webkit.org/show_bug.cgi?id=95261
     6
     7        Turns out we do need this! (Requested by abarth on #webkit).
     8
     9        * public/WebWidget.h:
     10        (WebKit::WebWidget::paint):
     11        * src/WebPagePopupImpl.cpp:
     12        (WebKit::WebPagePopupImpl::paint):
     13        * src/WebPagePopupImpl.h:
     14        (WebPagePopupImpl):
     15        * src/WebPopupMenuImpl.cpp:
     16        (WebKit::WebPopupMenuImpl::paint):
     17        * src/WebPopupMenuImpl.h:
     18        * src/WebViewImpl.cpp:
     19        (WebKit::WebViewImpl::paint):
     20        * src/WebViewImpl.h:
     21        (WebViewImpl):
     22
    1232012-08-28  Mark Pilgrim  <pilgrim@chromium.org>
    224
  • trunk/Source/WebKit/chromium/public/WebWidget.h

    r126933 r126940  
    4242#define WEBKIT_HAS_NEW_FULLSCREEN_API 1
    4343#define WEBWIDGET_HAS_SETCOMPOSITORSURFACEREADY 1
     44#define WEBWIDGET_HAS_PAINT_OPTIONS 1
    4445
    4546namespace WebKit {
     
    9192    virtual void layout() { }
    9293
     94    enum PaintOptions {
     95        // Attempt to fulfill the painting request by reading back from the
     96        // compositor, assuming we're using a compositor to render.
     97        ReadbackFromCompositorIfAvailable,
     98
     99        // Force the widget to rerender onto the canvas using software. This
     100        // mode ignores 3d transforms and ignores GPU-resident content, such
     101        // as video, canvas, and WebGL.
     102        //
     103        // Note: This option exists on OS(ANDROID) and will hopefully be
     104        //       removed once the link disambiguation feature renders using
     105        //       the compositor.
     106        ForceSoftwareRenderingAndIgnoreGPUResidentContent,
     107    };
     108
    93109    // Called to paint the rectangular region within the WebWidget
    94110    // onto the specified canvas at (viewPort.x,viewPort.y). You MUST call
     
    98114    // processed, it should be assumed that another call to layout is
    99115    // warranted before painting again).
    100     virtual void paint(WebCanvas*, const WebRect& viewPort) { }
     116    virtual void paint(WebCanvas*, const WebRect& viewPort, PaintOptions = ReadbackFromCompositorIfAvailable) { }
    101117
    102118    // In non-threaded compositing mode, triggers compositing of the current
  • trunk/Source/WebKit/chromium/src/WebPagePopupImpl.cpp

    r126933 r126940  
    226226}
    227227
    228 void WebPagePopupImpl::paint(WebCanvas* canvas, const WebRect& rect)
     228void WebPagePopupImpl::paint(WebCanvas* canvas, const WebRect& rect, PaintOptions)
    229229{
    230230    PageWidgetDelegate::paint(m_page.get(), 0, canvas, rect, PageWidgetDelegate::Opaque);
  • trunk/Source/WebKit/chromium/src/WebPagePopupImpl.h

    r126933 r126940  
    7373    virtual void composite(bool) OVERRIDE;
    7474    virtual void layout() OVERRIDE;
    75     virtual void paint(WebCanvas*, const WebRect&) OVERRIDE;
     75    virtual void paint(WebCanvas*, const WebRect&, PaintOptions = ReadbackFromCompositorIfAvailable) OVERRIDE;
    7676    virtual void resize(const WebSize&) OVERRIDE;
    7777    virtual void close() OVERRIDE;
  • trunk/Source/WebKit/chromium/src/WebPopupMenuImpl.cpp

    r126933 r126940  
    194194}
    195195
    196 void WebPopupMenuImpl::paint(WebCanvas* canvas, const WebRect& rect)
     196void WebPopupMenuImpl::paint(WebCanvas* canvas, const WebRect& rect, PaintOptions)
    197197{
    198198    if (!m_widget)
  • trunk/Source/WebKit/chromium/src/WebPopupMenuImpl.h

    r126933 r126940  
    7474    virtual void animate(double frameBeginTime) OVERRIDE;
    7575    virtual void layout() OVERRIDE;
    76     virtual void paint(WebCanvas*, const WebRect&) OVERRIDE;
     76    virtual void paint(WebCanvas*, const WebRect&, PaintOptions = ReadbackFromCompositorIfAvailable) OVERRIDE;
    7777    virtual void themeChanged() OVERRIDE;
    7878    virtual void setCompositorSurfaceReady() OVERRIDE;
  • trunk/Source/WebKit/chromium/src/WebViewImpl.cpp

    r126933 r126940  
    17391739#endif
    17401740
    1741 void WebViewImpl::paint(WebCanvas* canvas, const WebRect& rect)
    1742 {
    1743     if (isAcceleratedCompositingActive()) {
     1741void WebViewImpl::paint(WebCanvas* canvas, const WebRect& rect, PaintOptions option)
     1742{
     1743#if !OS(ANDROID)
     1744    // ReadbackFromCompositorIfAvailable is the only option available on non-Android.
     1745    // Ideally, Android would always use ReadbackFromCompositorIfAvailable as well.
     1746    ASSERT(option == ReadbackFromCompositorIfAvailable);
     1747#endif
     1748
     1749    if (option == ReadbackFromCompositorIfAvailable && isAcceleratedCompositingActive()) {
    17441750#if USE(ACCELERATED_COMPOSITING)
    17451751        // If a canvas was passed in, we use it to grab a copy of the
     
    17531759#endif
    17541760    } else {
     1761        FrameView* view = page()->mainFrame()->view();
     1762        PaintBehavior oldPaintBehavior = view->paintBehavior();
     1763        if (isAcceleratedCompositingActive()) {
     1764            ASSERT(option == ForceSoftwareRenderingAndIgnoreGPUResidentContent);           
     1765            view->setPaintBehavior(oldPaintBehavior | PaintBehaviorFlattenCompositingLayers);
     1766        }
     1767
    17551768        double paintStart = currentTime();
    17561769        PageWidgetDelegate::paint(m_page.get(), pageOverlays(), canvas, rect, isTransparent() ? PageWidgetDelegate::Translucent : PageWidgetDelegate::Opaque);
     
    17591772        WebKit::Platform::current()->histogramCustomCounts("Renderer4.SoftwarePaintDurationMS", (paintEnd - paintStart) * 1000, 0, 120, 30);
    17601773        WebKit::Platform::current()->histogramCustomCounts("Renderer4.SoftwarePaintMegapixPerSecond", pixelsPerSec / 1000000, 10, 210, 30);
     1774
     1775        if (isAcceleratedCompositingActive()) {
     1776            ASSERT(option == ForceSoftwareRenderingAndIgnoreGPUResidentContent);           
     1777            view->setPaintBehavior(oldPaintBehavior);
     1778        }
    17611779    }
    17621780}
  • trunk/Source/WebKit/chromium/src/WebViewImpl.h

    r126933 r126940  
    145145    virtual void animate(double);
    146146    virtual void layout(); // Also implements WebLayerTreeViewClient::layout()
    147     virtual void paint(WebCanvas*, const WebRect&);
     147    virtual void paint(WebCanvas*, const WebRect&, PaintOptions = ReadbackFromCompositorIfAvailable);
    148148    virtual void themeChanged();
    149149    virtual void composite(bool finish);
Note: See TracChangeset for help on using the changeset viewer.