[Webkit-unassigned] [Bug 33909] Intro text at Star Wars demo is clipped

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Mar 17 15:11:05 PDT 2010


https://bugs.webkit.org/show_bug.cgi?id=33909


Simon Fraser (smfr) <simon.fraser at apple.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #50962|review?                     |review-
               Flag|                            |




--- Comment #4 from Simon Fraser (smfr) <simon.fraser at apple.com>  2010-03-17 15:11:05 PST ---
(From update of attachment 50962)
> Index: WebCore/ChangeLog
> ===================================================================
> --- WebCore/ChangeLog	(revision 56128)
> +++ WebCore/ChangeLog	(working copy)
> @@ -1,3 +1,19 @@
> +2010-03-17  Enrica Casucci  <enrica at apple.com>
> +
> +        Reviewed by NOBODY (OOPS!).
> +
> +        Intro text at Star Wars demo is clipped.
> +        <rdar://problem/7560979>
> +        <https://bugs.webkit.org/show_bug.cgi?id=33909>
> +        
> +        Test: compositing/repaint/opacity-animation.html
> +
> +        The origin of the dirty rectangle needs to be flipped.

I'd like to see a bit more verbage here, describing that we flip the coords for
drawing, so we have to flip invalidate rects too.

> Index: WebCore/platform/graphics/win/GraphicsLayerCACF.cpp
> ===================================================================

> +    virtual void setNeedsDisplay(const CGRect* dirtyRect)

I think this method should only to rect flipping in the situation where the
drawing code does flipping (i.e. check the m_owner->contentsOrientation()).

> +        CGRect layerBounds = bounds();

If dirtyRect is null and we're not showing the repaint counter, this call is
wasting cycles.

> +        if (m_owner && m_owner->showRepaintCounter()) {
> +            CGRect repaintCounterRect = layerBounds;
> +            repaintCounterRect.size.width = 48;     // We assume a maximum of 4 digits.
> +            repaintCounterRect.size.height = 25;    // We use 22 as font size.
> +            repaintCounterRect.origin.y = layerBounds.size.height - (layerBounds.origin.y + repaintCounterRect.size.height);
> +            WKCACFLayer::setNeedsDisplay(&repaintCounterRect);
> +        }
> +        if (dirtyRect) {
> +            CGRect flippedDirtyRect = *dirtyRect;
> +            flippedDirtyRect.origin.y = layerBounds.size.height - (flippedDirtyRect.origin.y + flippedDirtyRect.size.height);
> +            WKCACFLayer::setNeedsDisplay(&flippedDirtyRect);
> +            return;
> +        }
> +        WKCACFLayer::setNeedsDisplay(dirtyRect);

I think this would be clearer with an 'else'.

> Index: LayoutTests/compositing/repaint/opacity-animation.html
> ===================================================================
> --- LayoutTests/compositing/repaint/opacity-animation.html	(revision 0)
> +++ LayoutTests/compositing/repaint/opacity-animation.html	(revision 0)

I think this testcase could be vastly simplified; it should end up as a green
box on success, and a red or partially red box on failure.

r- to check contentsOrientation(), and I'd like to see the other stuff fixed
too.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the webkit-unassigned mailing list