[webkit-dev] WebKit partial rendering issue

Srinivas Rao M Hamse msrinirao at gmail.com
Fri Nov 28 01:10:10 PST 2008


Thanks Paul,

I have logged this issue in

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

regards,
Srinivas Rao. M




On Fri, Nov 28, 2008 at 2:04 PM, Paul Pedriana <ppedriana at gmail.com> wrote:

> The ScrollView::paint function seems wrong to me too.
>
> The function source is shown below. I don't understand why it uses
> context->clip(visibleContentRect()) without accounting for
> documentDirtyRect. Shouldn't it make a union of visibleContentRect and
> documentDirtyRect? I am writing my own graphics back-end and this lack of
> clipping is messing up the view drawing.
>
> An simple example of how the screen gets messed up is when you go to
> www.google.com and once the page is drawn you simply mouse over one of its
> two buttons. WebKit calls ScrollView::paint with a rect of the button area
> and during its rendering in paintContents it proceeds to draw a
> button-height/screen-width white rectangle before drawing that one button
> and without pushing a graphics context with the clip rect. This white
> rectangle is thus not clipped and blows away all pixels to the left and
> right of the button area, including the other button. If documentDirtyRect
> clipping was done then this wouldn't happen. Doing it seems to fix it for me
> though my testing is meager and it may be that somehow there's a more
> correct solution.
>
> void ScrollView::paint(GraphicsContext* context, const IntRect& rect)
> {
>  if (platformWidget()) {
>      Widget::paint(context, rect);
>      return;
>  }
>
>  if (context->paintingDisabled() && !context->updatingControlTints())
>      return;
>
>  IntRect documentDirtyRect = rect;
>  documentDirtyRect.intersect(frameRect());
>
>  context->save();
>
>  context->translate(x(), y());
>  documentDirtyRect.move(-x(), -y());
>
>  context->translate(-scrollX(), -scrollY());
>  documentDirtyRect.move(scrollX(), scrollY());
>
>  context->clip(visibleContentRect());                             <----
> Seems wrong to me.
>
>  paintContents(context, documentDirtyRect);
>
>  context->restore();
>   .
>   .
>   .
> }
>
>
>
>
>  I've seen similar issues on a non-DirectFB port, but it turned out to be
>> related to a bug in the ScrollView::paint() method.  It wasn't properly
>> clipping the drawing and when Google was blinking the cursor in the text
>> box, it ends up erasing the whole window instead of just the inner textbox.
>>  Anything that forces a redraw of the widget, of course, fixes it as it will
>> then render the whole area, not just the cursor.  I saw it when going to
>> www.apple.com and watching the updating news area, the headlines change
>> and the title "Hot New Headlines" would get erased everytime it updated.
>>
>> dunno if that's helpful or not.
>>
>> On Nov 27, 2008, at 9:35 AM, Srinivas Rao M Hamse wrote:
>>
>>  Hi,
>>>
>>> I am using WebKit+Gtk on DirectFB 1.2.0  ported on an arm platform. I am
>>> noticing that the render of text input widget is not complete. Attaching a
>>> snapshot of google page. In this google text input text box in not drawn.
>>> Also seen this issue while rendering other widgets also. WebKit misses some
>>> of them at first go. It slowly draws as and when that part of the
>>> screen/widget gets refreshed(say by pressing TAB keys)
>>>
>>> Any idea how to fix this issue ?
>>>
>>> regards,
>>> Srinivas Rao M.
>>>
>>> --
>>> Srinivas Rao M  Hamse
>>>
>>>
>> _______________________________________________
>> webkit-dev mailing list
>> webkit-dev at lists.webkit.org
>> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
>>
>>
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
>



-- 
Srinivas Rao M  Hamse
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20081128/b775fb19/attachment.html>


More information about the webkit-dev mailing list