[webkit-reviews] review granted: [Bug 26651] Add a preference to disable hardware acceleration : [Attachment 31864] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Jun 25 12:02:04 PDT 2009


Simon Fraser (smfr) <simon.fraser at apple.com> has granted Chris Marrin
<cmarrin at apple.com>'s request for review:
Bug 26651: Add a preference to disable hardware acceleration
https://bugs.webkit.org/show_bug.cgi?id=26651

Attachment 31864: Patch
https://bugs.webkit.org/attachment.cgi?id=31864&action=review

------- Additional Comments from Simon Fraser (smfr) <simon.fraser at apple.com>
> Index: WebCore/ChangeLog
> ===================================================================
> --- WebCore/ChangeLog (revision 45129)
> +++ WebCore/ChangeLog (working copy)
> @@ -1,3 +1,43 @@
> +2009-06-24  Chris Marrin  <cmarrin at apple.com>
> +
> +	   Reviewed by NOBODY (OOPS!).
> +
> +	   https://bugs.webkit.org/show_bug.cgi?id=26651
> +
> +	   Preference is named "WebKitAcceleratedCompositingDisabled"

It's WebKitAcceleratedCompositingEnabled now.

> +	   and is a boolean value. Prevents compositing layers from
> +	   being created, which prevents hardware animation from running.
> +	   Also forces video to do software rendering. Added a cache for
> +	   the flag in RenderLayerCompositing and made it all work
> +	   on-the-fly when the flag is changed while a page is loaded.
> + 
> +	   * WebCore.base.exp:
> +	   * page/FrameView.cpp:
> +	   (WebCore::FrameView::updateCompositingLayers):
> +	   * page/Settings.cpp:
> +	   (WebCore::Settings::setAcceleratedCompositingDisabled):
> +	   * page/Settings.h:
> +	   (WebCore::Settings::acceleratedCompositingDisabled):

These method names changed, so you should run prepare-changelog again.

> Index: WebCore/page/Settings.cpp
> ===================================================================

> -static void setNeedsReapplyStylesInAllFrames(Page* page)
> +static void setNeedsReapplyStylesInAllFrames(Page* page, bool
/*updateCompositingLayers*/ = false)
>  {
> -    for (Frame* frame = page->mainFrame(); frame; frame =
frame->tree()->traverseNext())
> +    for (Frame* frame = page->mainFrame(); frame; frame =
frame->tree()->traverseNext()) {
> +	   //if (updateCompositingLayers)
> +	   //	
frame->view()->updateCompositingLayers(FrameView::ForcedCompositingUpdate);
>	   frame->setNeedsReapplyStyles();
> +    }

Some unwanted changes here.

>  }
>  
>  #if USE(SAFARI_THEME)
> @@ -104,6 +108,7 @@ Settings::Settings(Page* page)
>      // they can't use by. Leaving enabled for now to not change existing
behavior.
>      , m_downloadableBinaryFontsEnabled(true)
>      , m_xssAuditorEnabled(false)
> +    , m_acceleratedCompositingEnabled(true)

I think you should #ifdef to default to true if ACCEL_COMP is defined, false
otherwise.



> +void RenderLayerCompositor::cacheAcceleratedCompositingEnabledFlag()
> +{
> +    

Extra blank line here.

> +    bool hasAcceleratedCompositing = m_renderView->document()->settings() &&
m_renderView->frameView()->frame()->page()->settings()->acceleratedCompositingE
nabled();

The cleaner way to do this is:

  bool hasAcceleratedCompositing = false;
  if (Settings* settings = m_renderView->document()->settings())
    hasAcceleratedCompositing = settings-> acceleratedCompositingEnabled();


> Index: WebCore/rendering/RenderLayerCompositor.h
> ===================================================================
> --- WebCore/rendering/RenderLayerCompositor.h (revision 44993)
> +++ WebCore/rendering/RenderLayerCompositor.h (working copy)
> @@ -56,6 +56,12 @@ public:
>      // This will make a compositing layer at the root automatically, and
hook up to
>      // the native view/window system.
>      void enableCompositingMode(bool enable = true);
> +    
> +    // Returns true if the accelerated compositing is enabled
> +    bool hasAcceleratedCompositing() { return m_hasAcceleratedCompositing; }


Should be const.


> Index: WebKit/mac/ChangeLog
> ===================================================================
> --- WebKit/mac/ChangeLog	(revision 45129)
> +++ WebKit/mac/ChangeLog	(working copy)
> @@ -1,3 +1,25 @@
> +2009-06-24  Chris Marrin  <cmarrin at apple.com>
> +
> +	   Reviewed by NOBODY (OOPS!).
> +
> +	   https://bugs.webkit.org/show_bug.cgi?id=26651
> +
> +	   Preference is named "WebKitAcceleratedCompositingDisabled"
> +	   and is a boolean value. Prevents compositing layers from
> +	   being created, which prevents hardware animation from running.
> +	   Also forces video to do software rendering. Added a cache for
> +	   the flag in RenderLayerCompositing and made it all work
> +	   on-the-fly when the flag is changed while a page is loaded.
> +
> +	   * WebView/WebPreferenceKeysPrivate.h:
> +	   * WebView/WebPreferences.h:
> +	   * WebView/WebPreferences.mm:
> +	   (+[WebPreferences initialize]):
> +	   (-[WebPreferences acceleratedCompositingDisabled]):
> +	   (-[WebPreferences setAcceleratedCompositingDisabled:]):
> +	   * WebView/WebView.mm:
> +	   (-[WebView _preferencesChangedNotification:]):

Need to update this changelog too.

> Index: WebKit/mac/WebView/WebPreferences.mm
> ===================================================================
> --- WebKit/mac/WebView/WebPreferences.mm	(revision 44993)
> +++ WebKit/mac/WebView/WebPreferences.mm	(working copy)
> @@ -348,6 +348,7 @@ static WebCacheModel cacheModelForMainBu
>	   [NSNumber numberWithBool:NO],  
WebKitOfflineWebApplicationCacheEnabledPreferenceKey,
>	   [NSNumber numberWithBool:YES],  WebKitZoomsTextOnlyPreferenceKey,
>	   [NSNumber numberWithBool:NO],  
WebKitXSSAuditorEnabledPreferenceKey,
> +	   [NSNumber numberWithBool:YES], 
WebKitAcceleratedCompositingEnabledPreferenceKey,
>	   nil];

I think it should only default to YES when ACCEL_COMP is defined.

> +- (BOOL)acceleratedCompositingEnabled
> +{
> +    return [self _boolValueForKey:
WebKitAcceleratedCompositingEnabledPreferenceKey];
> +}
> +
> +- (void)setAcceleratedCompositingEnabled:(BOOL)enabled
> +{
> +    [self _setBoolValue: enabled forKey:
WebKitAcceleratedCompositingEnabledPreferenceKey];

WebKit style is no spaces after the colons.

r=me with those cleanups.


More information about the webkit-reviews mailing list