Changeset 109930 in webkit
- Timestamp:
- Mar 6, 2012 9:54:43 AM (12 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r109912 r109930 1 2012-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 1 20 2012-03-06 Simon Hausmann <simon.hausmann@nokia.com> 2 21 -
trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp
r109094 r109930 62 62 class ViewportUpdateDeferrer { 63 63 public: 64 ViewportUpdateDeferrer(QtViewportInteractionEngine* engine) 64 enum SuspendContentFlag { DeferUpdate, DeferUpdateAndSuspendContent }; 65 ViewportUpdateDeferrer(QtViewportInteractionEngine* engine, SuspendContentFlag suspendContentFlag = DeferUpdate) 65 66 : engine(engine) 66 67 { 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 } 71 76 } 72 77 … … 76 81 return; 77 82 78 emit engine->contentResumeRequested(); 83 if (engine->m_hasSuspendedContent) { 84 engine->m_hasSuspendedContent = false; 85 emit engine->contentResumeRequested(); 86 } 79 87 80 88 // Make sure that tiles all around the viewport will be requested. … … 118 126 , m_flickProvider(flickProvider) 119 127 , m_suspendCount(0) 128 , m_hasSuspendedContent(false) 120 129 , m_hadUserInteraction(false) 121 130 , m_scaleAnimation(new ScaleAnimation(this)) … … 192 201 { 193 202 Q_ASSERT(m_flickProvider->isMoving()); 194 m_scrollUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this ));203 m_scrollUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this, ViewportUpdateDeferrer::DeferUpdateAndSuspendContent)); 195 204 196 205 m_lastScrollPosition = m_flickProvider->contentPos(); … … 224 233 case QAbstractAnimation::Running: 225 234 if (!m_scaleUpdateDeferrer) 226 m_scaleUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this ));235 m_scaleUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this, ViewportUpdateDeferrer::DeferUpdateAndSuspendContent)); 227 236 break; 228 237 case QAbstractAnimation::Stopped: -
trunk/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h
r109094 r109930 146 146 147 147 int m_suspendCount; 148 bool m_hasSuspendedContent; 148 149 OwnPtr<ViewportUpdateDeferrer> m_scaleUpdateDeferrer; 149 150 OwnPtr<ViewportUpdateDeferrer> m_scrollUpdateDeferrer;
Note: See TracChangeset
for help on using the changeset viewer.