Title: [109930] trunk/Source/WebKit2
- Revision
- 109930
- Author
- abe...@webkit.org
- Date
- 2012-03-06 09:54:43 -0800 (Tue, 06 Mar 2012)
Log 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.jen...@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):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (109929 => 109930)
--- trunk/Source/WebKit2/ChangeLog 2012-03-06 17:51:31 UTC (rev 109929)
+++ trunk/Source/WebKit2/ChangeLog 2012-03-06 17:54:43 UTC (rev 109930)
@@ -1,3 +1,22 @@
+2012-03-06 Allan Sandfeld Jensen <allan.jen...@nokia.com>
+
+ [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.
+
+ 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):
+
2012-03-06 Simon Hausmann <simon.hausm...@nokia.com>
[Qt] Make QQuickWebView's url property work with a flickable webview
Modified: trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp (109929 => 109930)
--- trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp 2012-03-06 17:51:31 UTC (rev 109929)
+++ trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp 2012-03-06 17:54:43 UTC (rev 109930)
@@ -61,13 +61,18 @@
class ViewportUpdateDeferrer {
public:
- ViewportUpdateDeferrer(QtViewportInteractionEngine* engine)
+ enum SuspendContentFlag { DeferUpdate, DeferUpdateAndSuspendContent };
+ ViewportUpdateDeferrer(QtViewportInteractionEngine* engine, SuspendContentFlag suspendContentFlag = DeferUpdate)
: engine(engine)
{
- if (engine->m_suspendCount++)
- return;
+ engine->m_suspendCount++;
- emit engine->contentSuspendRequested();
+ // There is no need to suspend content for immediate updates
+ // only during animations or longer gestures.
+ if (suspendContentFlag == DeferUpdateAndSuspendContent && !engine->m_hasSuspendedContent) {
+ engine->m_hasSuspendedContent = true;
+ emit engine->contentSuspendRequested();
+ }
}
~ViewportUpdateDeferrer()
@@ -75,7 +80,10 @@
if (--(engine->m_suspendCount))
return;
- emit engine->contentResumeRequested();
+ if (engine->m_hasSuspendedContent) {
+ engine->m_hasSuspendedContent = false;
+ emit engine->contentResumeRequested();
+ }
// Make sure that tiles all around the viewport will be requested.
emit engine->contentWasMoved(QPointF());
@@ -117,6 +125,7 @@
, m_content(content)
, m_flickProvider(flickProvider)
, m_suspendCount(0)
+ , m_hasSuspendedContent(false)
, m_hadUserInteraction(false)
, m_scaleAnimation(new ScaleAnimation(this))
, m_pinchStartScale(-1)
@@ -191,7 +200,7 @@
void QtViewportInteractionEngine::flickableMoveStarted()
{
Q_ASSERT(m_flickProvider->isMoving());
- m_scrollUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this));
+ m_scrollUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this, ViewportUpdateDeferrer::DeferUpdateAndSuspendContent));
m_lastScrollPosition = m_flickProvider->contentPos();
connect(m_flickProvider, SIGNAL(contentXChanged()), SLOT(flickableMovingPositionUpdate()));
@@ -223,7 +232,7 @@
switch (newState) {
case QAbstractAnimation::Running:
if (!m_scaleUpdateDeferrer)
- m_scaleUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this));
+ m_scaleUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this, ViewportUpdateDeferrer::DeferUpdateAndSuspendContent));
break;
case QAbstractAnimation::Stopped:
m_scaleUpdateDeferrer.clear();
Modified: trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h (109929 => 109930)
--- trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h 2012-03-06 17:51:31 UTC (rev 109929)
+++ trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h 2012-03-06 17:54:43 UTC (rev 109930)
@@ -145,6 +145,7 @@
Constraints m_constraints;
int m_suspendCount;
+ bool m_hasSuspendedContent;
OwnPtr<ViewportUpdateDeferrer> m_scaleUpdateDeferrer;
OwnPtr<ViewportUpdateDeferrer> m_scrollUpdateDeferrer;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes