[Webkit-unassigned] [Bug 36113] Optimize painting for HTMLProgressElement

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Mar 17 13:44:14 PDT 2010


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


Darin Adler <darin at apple.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #50931|review?                     |review+
               Flag|                            |




--- Comment #12 from Darin Adler <darin at apple.com>  2010-03-17 13:44:14 PST ---
(From update of attachment 50931)
> +    IntRect paintRect = contentBoxRect();
> +    if (canOptimize) {
> +        // FIXME: Need to handle indeterminate progress bar and RTL
> +        int adjustedPosition = (m_position >= 0) ? m_position : 0;
> +        int adjustedOldPosition = (oldPosition >= 0) ? oldPosition : 0;
> +        paintRect.setX(std::min(adjustedPosition, adjustedOldPosition));
> +        paintRect.setWidth(std::max(adjustedPosition, adjustedOldPosition) - paintRect.x());
> +    }
> +    repaintRectangle(paintRect);

Since m_position can never be negative at this point, I don't think you need
code to adjust for that case.

The handling of oldPosition of -1 here seems wrong. If the old position was -1
I presume we need to repaint the entire rectangle, not act as if the old
position was 0.

WebKit style is to use a using directive for std at the top of the file and
call functions as min and max rather than using std::min and std::max in a cpp
file.

>  public:
>      RenderProgress(HTMLProgressElement*);
> +    int position() { return m_position; }

Given the use of "-1" to mean "no position", I do not think it's a good idea to
have a public function to return the position. Nothing here makes it clear that
there's a special -1 value, nor what the range of values for position are. I
think the position value should be explicitly passed in the theme API instead
as I suggested before.

> +bool RenderTheme::getNumberOfPixelsForProgressPosition(double , int& progressSize) const

Extra space here before the comma.

I really don't think this theme API is going in the right direction. Progress
indicators in general don't have a certain number of pixels from the left. I
think the theme should be involved in the decision of what needs to be dirtied,
not just return a number that's used.

I'm going to say r=me because I think the mistakes here can be fixed in the
future, but I think there's a lot of room for improvement here.

-- 
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