[Webkit-unassigned] [Bug 105497] [EFL][WK2] Optimize zooming and scrolling.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Dec 25 18:12:33 PST 2012


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





--- Comment #2 from Huang Dongsung <luxtella at company100.net>  2012-12-25 18:14:41 PST ---
Currently, when EFL scrolls, EFL needs two message communications: request (UI Process -> Web Process) and response (Web Process -> UI Process).
However, we can speculatively scroll in UI side like Qt.

In detail, EFL runs following process for scrolling.

1. Request scrolling web process to ui process
- UI Process : WebPageProxy::scrollBy()
- Web Process : WebCore computes

2. Response scrolling
- Web Process : notify did scrolling
- UI Process : PageViewportController::pageDidRequestScroll is called.
-- Update scroll position of EwkView and request rendering of EwkView.

void PageViewportControllerClientEfl::setViewportPosition(const WebCore::FloatPoint& contentsPoint)
{
    m_contentPosition = contentsPoint;

    FloatPoint pos(contentsPoint);
    pos.scale(scaleFactor(), scaleFactor());
    m_viewImpl->setPagePosition(pos);

    m_controller->didChangeContentsVisibility(m_contentPosition, scaleFactor());
}

However, Qt can scroll in UI side. currently, Qt did when flicking.
When Qt view's scroll position is changed, flickMoveStarted(), pageItemPositionChanged() and flickMoveEnded() are called.
Three methods update windows with changed scoll position.

void PageViewportControllerClientQt::flickMoveStarted()
{
    m_controller->suspendContent();

    m_lastScrollPosition = m_viewportItem->contentPos();

    m_ignoreViewportChanges = false;
}

void PageViewportControllerClientQt::flickMoveEnded()
{
    // This method is called on the end of the pan or pan kinetic animation.

    m_ignoreViewportChanges = true;
    if (!m_isUserInteracting)
        m_controller->resumeContent();
}

void PageViewportControllerClientQt::pageItemPositionChanged()
{
    if (m_ignoreViewportChanges)
        return;

    QPointF newPosition = m_viewportItem->contentPos();

    updateViewportController(m_lastScrollPosition - newPosition);

    m_lastScrollPosition = newPosition;
}

I think if efl implemented fast scolling like qt, scrolling latency can be significantly reduced.

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