From abea18c939b8d72d076c968469861e25d02fcd9a Mon Sep 17 00:00:00 2001 From: Oleg Romashin Date: Fri, 4 Jan 2013 19:24:15 -0800 Subject: [PATCH] Bug 825556 - RequestContentRepaint frequency should be possible to limit with some timeout. r=drs --- gfx/layers/ipc/AsyncPanZoomController.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gfx/layers/ipc/AsyncPanZoomController.cpp b/gfx/layers/ipc/AsyncPanZoomController.cpp index 80551630499c..42b8e7ad17ed 100644 --- a/gfx/layers/ipc/AsyncPanZoomController.cpp +++ b/gfx/layers/ipc/AsyncPanZoomController.cpp @@ -92,6 +92,7 @@ AsyncPanZoomController::AsyncPanZoomController(GeckoContentController* aGeckoCon mMonitor("AsyncPanZoomController"), mLastSampleTime(TimeStamp::Now()), mState(NOTHING), + mPreviousPaintStartTime(TimeStamp::Now()), mLastAsyncScrollTime(TimeStamp::Now()), mLastAsyncScrollOffset(0, 0), mCurrentAsyncScrollOffset(0, 0), @@ -674,7 +675,10 @@ void AsyncPanZoomController::TrackTouch(const MultiTouchInput& aEvent) { ScrollBy(gfx::Point(xDisplacement, yDisplacement)); ScheduleComposite(); - RequestContentRepaint(); + TimeDuration timePaintDelta = TimeStamp::Now() - mPreviousPaintStartTime; + if (timePaintDelta.ToMilliseconds() > PAN_REPAINT_INTERVAL) { + RequestContentRepaint(); + } } } @@ -708,7 +712,10 @@ bool AsyncPanZoomController::DoFling(const TimeDuration& aDelta) { mX.GetDisplacementForDuration(inverseResolution, aDelta), mY.GetDisplacementForDuration(inverseResolution, aDelta) )); - RequestContentRepaint(); + TimeDuration timePaintDelta = TimeStamp::Now() - mPreviousPaintStartTime; + if (timePaintDelta.ToMilliseconds() > FLING_REPAINT_INTERVAL) { + RequestContentRepaint(); + } return true; }