[webkit-reviews] review granted: [Bug 38856] Allow compositing layers to be connected across iframe boundaries on Mac : [Attachment 55656] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon May 10 21:50:48 PDT 2010


Anders Carlsson <andersca at apple.com> has granted Simon Fraser (smfr)
<simon.fraser at apple.com>'s request for review:
Bug 38856: Allow compositing layers to be connected across iframe boundaries on
Mac
https://bugs.webkit.org/show_bug.cgi?id=38856

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

------- Additional Comments from Anders Carlsson <andersca at apple.com>

> +2010-05-10  Simon Fraser  <simon.fraser at apple.com>
> +
> +	   Reviewed by NOBODY (OOPS!).
> +
> +	   https://bugs.webkit.org/show_bug.cgi?id=38856
> +	   Allow compositing layers to be connected across iframe boundaries on
Mac
> +	   

Duplicate ChangeLog entry.

> +
> +2010-05-10  Simon Fraser  <simon.fraser at apple.com>
> +
> +	   Reviewed by NOBODY (OOPS!).
> +
> +	   Allow compositing layers to be connected across iframe boundaries on
Mac
> +	   https://bugs.webkit.org/show_bug.cgi?id=38856
> +

Same here?

>	   Rename the static shouldPropagateCompositingToIFrameParent() to
shouldPropagateCompositingToEnclosingIFrame(),
>	   to pave the way for runtime switches in the propagation behavior. We
have to make sure we call it on
>	   the correct RenderLayerCompositor (that belonging to the iframe's
content document).
> diff --git a/WebCore/page/FrameView.cpp b/WebCore/page/FrameView.cpp
> index
9b93bebb60ff00ae7bf5276cd7f89a4b99e97913..3f34261079b9e5db674f4098f7ae1f1f7141d
44c 100644
> --- a/WebCore/page/FrameView.cpp
> +++ b/WebCore/page/FrameView.cpp
> @@ -478,6 +478,15 @@ void FrameView::setNeedsOneShotDrawingSynchronization()
>  
>  #endif // USE(ACCELERATED_COMPOSITING)
>  
> +bool FrameView::hasCompositedContent() const
> +{
> +#if USE(ACCELERATED_COMPOSITING)
> +    if (RenderView* view = m_frame->contentRenderer())
> +	   return view->compositor()->inCompositingMode();
> +#endif
> +    return false;
> +}
> +
>  bool FrameView::isEnclosedInCompositingLayer() const
>  {
>  #if USE(ACCELERATED_COMPOSITING)
> @@ -897,6 +906,15 @@ void FrameView::setIsOverlapped(bool isOverlapped)
>  
>      m_isOverlapped = isOverlapped;
>      setCanBlitOnScroll(!useSlowRepaints());
> +    
> +#if USE(ACCELERATED_COMPOSITING)
> +    // Overlap can affect compositing tests, so if it changes, we need to
trigger
> +    // a recalcStyle in the parent document.
> +    if (hasCompositedContent()) {
> +	   if (Element* ownerElement = m_frame->document()->ownerElement())
> +	       ownerElement->setNeedsStyleRecalc(SyntheticStyleChange);
> +    }
> +#endif    
>  }
>  
> +    RenderLayer* layer = m_renderView->layer();
> +    RenderLayerBacking* backing = layer ? layer->backing() : 0;
> +    if (backing)
> +	   backing->updateDrawsContent();

You can move the "backing" variable declaration into the if statement.

r=me


More information about the webkit-reviews mailing list