mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
Auto merge of #22178 - paulrouget:fixScroll, r=jdm
Properly cancel looping before triggering another drawing loop --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #21991 (github issue number if applicable). <!-- Either: --> - [ ] There are tests for these changes OR - [ ] These changes do not require tests because _____ <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22178) <!-- Reviewable:end -->
This commit is contained in:
commit
6da89a630f
1 changed files with 11 additions and 3 deletions
|
@ -133,7 +133,7 @@ public class ServoView extends GLSurfaceView
|
||||||
|
|
||||||
public void animationStateChanged(boolean animating) {
|
public void animationStateChanged(boolean animating) {
|
||||||
if (!mAnimating && animating) {
|
if (!mAnimating && animating) {
|
||||||
post(() -> Choreographer.getInstance().postFrameCallback(ServoView.this));
|
post(() -> startLooping());
|
||||||
}
|
}
|
||||||
mAnimating = animating;
|
mAnimating = animating;
|
||||||
}
|
}
|
||||||
|
@ -182,6 +182,13 @@ public class ServoView extends GLSurfaceView
|
||||||
mScroller = new OverScroller(context);
|
mScroller = new OverScroller(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void startLooping() {
|
||||||
|
// In case we were already drawing.
|
||||||
|
Choreographer.getInstance().removeFrameCallback(this);
|
||||||
|
|
||||||
|
Choreographer.getInstance().postFrameCallback(this);
|
||||||
|
}
|
||||||
|
|
||||||
public void doFrame(long frameTimeNanos) {
|
public void doFrame(long frameTimeNanos) {
|
||||||
if (!mRedrawing) {
|
if (!mRedrawing) {
|
||||||
mRedrawing = true;
|
mRedrawing = true;
|
||||||
|
@ -264,9 +271,10 @@ public class ServoView extends GLSurfaceView
|
||||||
mCurY = (int) e.getY();
|
mCurY = (int) e.getY();
|
||||||
mLastY = mCurY;
|
mLastY = mCurY;
|
||||||
mScroller.forceFinished(true);
|
mScroller.forceFinished(true);
|
||||||
|
mFlinging = false;
|
||||||
mServo.scrollStart(0, 0, mCurX, mCurY);
|
mServo.scrollStart(0, 0, mCurX, mCurY);
|
||||||
mScrolling = true;
|
mScrolling = true;
|
||||||
Choreographer.getInstance().postFrameCallback(this);
|
startLooping();
|
||||||
return true;
|
return true;
|
||||||
case (MotionEvent.ACTION_MOVE):
|
case (MotionEvent.ACTION_MOVE):
|
||||||
mCurX = (int) e.getX();
|
mCurX = (int) e.getX();
|
||||||
|
@ -305,7 +313,7 @@ public class ServoView extends GLSurfaceView
|
||||||
mZoomFactor = detector.getScaleFactor();
|
mZoomFactor = detector.getScaleFactor();
|
||||||
mZooming = true;
|
mZooming = true;
|
||||||
mServo.pinchZoomStart(mZoomFactor, 0, 0);
|
mServo.pinchZoomStart(mZoomFactor, 0, 0);
|
||||||
Choreographer.getInstance().postFrameCallback(this);
|
startLooping();
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue