Changeset 109930 in webkit


Ignore:
Timestamp:
Mar 6, 2012 9:54:43 AM (12 years ago)
Author:
abecsi@webkit.org
Message:

[Qt] Interaction Engine suspends content during pageload.
https://bugs.webkit.org/show_bug.cgi?id=80294

Only suspend content when viewport updates are deferred
for a non-instantanious interaction.

Patch by Allan Sandfeld Jensen <allan.jensen@nokia.com> on 2012-03-06
Reviewed by Kenneth Rohde Christiansen.

  • UIProcess/qt/QtViewportInteractionEngine.cpp:

(WebKit::ViewportUpdateDeferrer::ViewportUpdateDeferrer):
(WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer):
(WebKit::QtViewportInteractionEngine::QtViewportInteractionEngine):
(WebKit::QtViewportInteractionEngine::flickableMoveStarted):
(WebKit::QtViewportInteractionEngine::scaleAnimationStateChanged):

  • UIProcess/qt/QtViewportInteractionEngine.h:

(QtViewportInteractionEngine):

Location:
trunk/Source/WebKit2
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r109912 r109930  
     12012-03-06  Allan Sandfeld Jensen  <allan.jensen@nokia.com>
     2
     3        [Qt] Interaction Engine suspends content during pageload.
     4        https://bugs.webkit.org/show_bug.cgi?id=80294
     5
     6        Only suspend content when viewport updates are deferred
     7        for a non-instantanious interaction.
     8
     9        Reviewed by Kenneth Rohde Christiansen.
     10
     11        * UIProcess/qt/QtViewportInteractionEngine.cpp:
     12        (WebKit::ViewportUpdateDeferrer::ViewportUpdateDeferrer):
     13        (WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer):
     14        (WebKit::QtViewportInteractionEngine::QtViewportInteractionEngine):
     15        (WebKit::QtViewportInteractionEngine::flickableMoveStarted):
     16        (WebKit::QtViewportInteractionEngine::scaleAnimationStateChanged):
     17        * UIProcess/qt/QtViewportInteractionEngine.h:
     18        (QtViewportInteractionEngine):
     19
    1202012-03-06  Simon Hausmann  <simon.hausmann@nokia.com>
    221
  • trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp

    r109094 r109930  
    6262class ViewportUpdateDeferrer {
    6363public:
    64     ViewportUpdateDeferrer(QtViewportInteractionEngine* engine)
     64    enum SuspendContentFlag { DeferUpdate, DeferUpdateAndSuspendContent };
     65    ViewportUpdateDeferrer(QtViewportInteractionEngine* engine, SuspendContentFlag suspendContentFlag = DeferUpdate)
    6566        : engine(engine)
    6667    {
    67         if (engine->m_suspendCount++)
    68             return;
    69 
    70         emit engine->contentSuspendRequested();
     68        engine->m_suspendCount++;
     69
     70        // There is no need to suspend content for immediate updates
     71        // only during animations or longer gestures.
     72        if (suspendContentFlag == DeferUpdateAndSuspendContent && !engine->m_hasSuspendedContent) {
     73            engine->m_hasSuspendedContent = true;
     74            emit engine->contentSuspendRequested();
     75        }
    7176    }
    7277
     
    7681            return;
    7782
    78         emit engine->contentResumeRequested();
     83        if (engine->m_hasSuspendedContent) {
     84            engine->m_hasSuspendedContent = false;
     85            emit engine->contentResumeRequested();
     86        }
    7987
    8088        // Make sure that tiles all around the viewport will be requested.
     
    118126    , m_flickProvider(flickProvider)
    119127    , m_suspendCount(0)
     128    , m_hasSuspendedContent(false)
    120129    , m_hadUserInteraction(false)
    121130    , m_scaleAnimation(new ScaleAnimation(this))
     
    192201{
    193202    Q_ASSERT(m_flickProvider->isMoving());
    194     m_scrollUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this));
     203    m_scrollUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this, ViewportUpdateDeferrer::DeferUpdateAndSuspendContent));
    195204
    196205    m_lastScrollPosition = m_flickProvider->contentPos();
     
    224233    case QAbstractAnimation::Running:
    225234        if (!m_scaleUpdateDeferrer)
    226             m_scaleUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this));
     235            m_scaleUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this, ViewportUpdateDeferrer::DeferUpdateAndSuspendContent));
    227236        break;
    228237    case QAbstractAnimation::Stopped:
  • trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h

    r109094 r109930  
    146146
    147147    int m_suspendCount;
     148    bool m_hasSuspendedContent;
    148149    OwnPtr<ViewportUpdateDeferrer> m_scaleUpdateDeferrer;
    149150    OwnPtr<ViewportUpdateDeferrer> m_scrollUpdateDeferrer;
Note: See TracChangeset for help on using the changeset viewer.