Bug 45124

Summary: [chromium] Gracefully switch over to software compositing when layer renderer fails to initialize
Product: WebKit Reporter: Vangelis Kokkevis <vangelis>
Component: WebCore Misc.Assignee: Vangelis Kokkevis <vangelis>
Status: RESOLVED FIXED    
Severity: Normal CC: fishd
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: OS X 10.5   
Attachments:
Description Flags
Proposed patch fishd: review+, fishd: commit-queue-

Description Vangelis Kokkevis 2010-09-02 12:56:53 PDT
Currently if the accelerated compositor fails to initialize (e.g. failed to get a gl context), page renders without the composited layers. The correct behavior would be to switch over to software compositing.
Comment 1 Vangelis Kokkevis 2010-09-02 22:36:55 PDT
Created attachment 66470 [details]
Proposed patch
Comment 2 Darin Fisher (:fishd, Google) 2010-09-03 11:37:51 PDT
Comment on attachment 66470 [details]
Proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=66470&action=prettypatch

> WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:83
> +    PassOwnPtr<LayerRendererChromium> layerRenderer(new LayerRendererChromium(gles2Context));
nit: this should be changed to use OwnPtr, like so:

  OwnPtr<LayerRenderChromium> layerRenderer(new LayerRendererChromium(gles2Context));

Then you should use the .release() method of OwnPtr<T> to finally return a PassOwnPtr<T>.

> WebKit/chromium/src/WebViewImpl.cpp:2110
> +    if (m_compositorCreationFailed)
nit: I think the body of this function should just be changed to:

   return !m_compositorCreationFailed;


R=me with those nits fixed
Comment 3 Vangelis Kokkevis 2010-09-03 16:24:49 PDT
Committed r66777: <http://trac.webkit.org/changeset/66777>