[webkit-reviews] review denied: [Bug 49184] Flawed rendering design for QtWebKit resulting in artifacts being displayed : [Attachment 75154] Fixed some more style issues

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Dec 1 07:52:57 PST 2010


Benjamin Poulain <benjamin.poulain at nokia.com> has denied Carol Szabo
<carol.szabo at nokia.com>'s request for review:
Bug 49184: Flawed rendering design for QtWebKit resulting in artifacts being
displayed
https://bugs.webkit.org/show_bug.cgi?id=49184

Attachment 75154: Fixed some more style issues
https://bugs.webkit.org/attachment.cgi?id=75154&action=review

------- Additional Comments from Benjamin Poulain <benjamin.poulain at nokia.com>
View in context: https://bugs.webkit.org/attachment.cgi?id=75154&action=review

> WebCore/ChangeLog:12
> +	   No behavior changes, hence no new tests.
> +	   This patch fixes flickers and artifacts that are hard to reproduce
> +	   on desktop computers.
> +	   The goal of this patch is that every paint call on the WebView
> +	   produces a correct image of the page with no artifacts.

Changelog does not clearly explain the problem, just the consequences. The
following sentence comes out of nowhere without more explanation.

> WebCore/platform/qt/QWebPageClient.h:98
> +    virtual QRect getDirtyRect() const { return dirtyRect;}

Missing space after the semicolon.

> WebCore/platform/qt/QWebPageClient.h:100
> +    virtual void clearDirtyRect() { dirtyRect.setWidth(0); }

This should be dirtyRect = QRect();

> WebCore/platform/qt/QWebPageClient.h:107
> +    QRect dirtyRect;

Why this variable misses the prefix? "m_".

Personally, I would also prefer the variable to be private, and have a
protected method addToDirtyRect(const QRect&). That one could be inline, but at
least we would have some encapsulation.

> WebKit/qt/Api/qgraphicswebview.cpp:309
>  #if USE(ACCELERATED_COMPOSITING) && !USE(TEXTURE_MAPPER)
> -    page()->mainFrame()->render(painter, d->overlay() ?
QWebFrame::ContentsLayer : QWebFrame::AllLayers,
option->exposedRect.toAlignedRect());
> +    GraphicsContext context(painter);
> +    page()->mainFrame()->d->renderRelativeCoords(&context, d->overlay() ?
QWebFrame::ContentsLayer : QWebFrame::AllLayers,
> +						   
QRegion(option->exposedRect.toRect()), QWebFramePrivate::UseDirtyRect);
>  #else
> -    page()->mainFrame()->render(painter, QWebFrame::AllLayers,
option->exposedRect.toRect());
> +    page()->mainFrame()->d->renderRelativeCoords(&context,
QWebFrame::AllLayers,
> +						   
QRegion(option->exposedRect.toRect()), QWebFramePrivate::UseDirtyRect);
>  #endif

I think this would crash if the painter is null, while it would not with the
call to QWebFrame::render().

> WebKit/qt/Api/qwebframe.cpp:364
> +	       return;

Why would you stop rendering if there is no page client?

> WebKit/qt/Api/qwebframe.h:228
> +    friend class QWebView;

I don't get it, why do you add QWebView as a friend of the class here?



I stop here, the patch seems to have been a bit rushed. Please polish it so one
doesn't have to stop at each file :)


More information about the webkit-reviews mailing list