[Webkit-unassigned] [Bug 45423] [Gtk] Port tiled backing store

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon May 2 06:38:14 PDT 2011


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


Michael Trimarchi <michael at panicking.kicks-ass.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |michael at panicking.kicks-ass
                   |                            |.org




--- Comment #59 from Michael Trimarchi <michael at panicking.kicks-ass.org>  2011-05-02 06:38:13 PST ---
(In reply to comment #56)
> (From update of attachment 85656 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=85656&action=review
> 
> I learned a few things while poking this code for the clutter backend, so I have a few more comments now =D
> 
> > Source/WebCore/platform/graphics/cairo/TileCairo.cpp:117
> > +void Tile::updateBackBuffer()
> > +{
> > +    if (m_buffer && !isDirty())
> 
> After https://bugs.webkit.org/show_bug.cgi?id=56464 lands (I'm going to try to land it right now) this function should return the updateRects when it succeeds, and return an empty Vector<IntRect> if this condition fails. See: http://gitorious.org/webkit-clutter/webkit-clutter/commit/1192ac5b3f92bf9c1e16c0e457d26ede3a4f5787
> 
> > Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:765
> > +    return frame->view()->visibleContentRect();
> 

I fix in this way 
Frame* frame = core(m_webView)->mainFrame();
    IntSize ofs;

    if (!frame || !frame->view())
        return IntRect();

    ofs = frame->view()->scrollOffset();
    IntSize size = frame->view()->frameRect().size();

    return IntRect(ofs.width(), ofs.height(), size.width(), size.height());

I think that qt code do the same.

> This is not correct. This should return the area that the backing store should consider visible (to figure out which tiles to paint). Take a look here: http://gitorious.org/webkit-clutter/webkit-clutter/commit/73db7b5a8b64705bc7669d9ff757bdd38ad18c97. So this function should return a rect with the offset values obtained from the adjustments as its location, and the WebView's allocation as its size.
> 
> > Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:770
> > +void ChromeClient::delegatedScrollRequested(const IntPoint& delta)
> > +{
> > +}
> 
> I believe we should tell webcore to delegate scrolling and implement this. We should rely and act exclusively on the webview's adjustments when tiled backing store is turned on. For this to work properly for programmatic scrolls we'll need a fix to webcore first, though: http://gitorious.org/webkit-clutter/webkit-clutter/commit/f78e8bb091f41e20f40533db0ee33348759576d2
> 
> > Source/WebKit/gtk/webkit/webkitwebview.cpp:691
> > +    int scrollX = view->scrollX();
> > +    int scrollY = view->scrollY();
> > +
> > +    context->translate(-scrollX, -scrollY);
> > +    rect.move(scrollX, scrollY);
> 
> Which means we should use the adjustment values here, not what is reported by ScrollView, because it will not match the real scroll offset.

What is here the difference with the qt implementation?

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